GNU bug report logs - #52309
[PATCH, core-updates-frozen] gnu: helm: Fix build with GCC 9 and later.

Previous Next

Package: guix-patches;

Reported by: Pierre Langlois <pierre.langlois <at> gmx.com>

Date: Sun, 5 Dec 2021 18:09:06 UTC

Severity: normal

Tags: patch

Done: Pierre Langlois <pierre.langlois <at> gmx.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 52309 in the body.
You can then email your comments to 52309 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#52309; Package guix-patches. (Sun, 05 Dec 2021 18:09:07 GMT) Full text and rfc822 format available.

Acknowledgement sent to Pierre Langlois <pierre.langlois <at> gmx.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sun, 05 Dec 2021 18:09:07 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Pierre Langlois <pierre.langlois <at> gmx.com>
To: guix-patches <at> gnu.org
Subject: [PATCH, core-updates-frozen] gnu: helm: Fix build with GCC 9 and
 later.
Date: Sun, 05 Dec 2021 14:35:12 +0000
[Message part 1 (text/plain, inline)]
Hi Guix!

I see the helm synthesizer doesn't build on core-updates-frozen so
here's a patch, taken from https://github.com/mtytel/helm/pull/233.

Thanks,
Pierre

[0001-gnu-helm-Fix-build-with-GCC-9-and-later.patch (text/x-patch, inline)]
From cfbb5b926d0a5d6278554174aca3237d642bee97 Mon Sep 17 00:00:00 2001
From: Pierre Langlois <pierre.langlois <at> gmx.com>
Date: Sat, 20 Nov 2021 14:51:13 +0000
Subject: [PATCH] gnu: helm: Fix build with GCC 9 and later.

* gnu/packages/music.scm (helm)[origin]: Add patch.
* gnu/packages/patches/helm-fix-gcc-9-build.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/music.scm                        |   4 +-
 .../patches/helm-fix-gcc-9-build.patch        | 140 ++++++++++++++++++
 3 files changed, 144 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/helm-fix-gcc-9-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index a2a8c4a9e5..21b8c70e4d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1243,6 +1243,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/hdf-eos5-fix-szip.patch			\
   %D%/packages/patches/hdf-eos5-fortrantests.patch		\
   %D%/packages/patches/hedgewars-network-bsd.patch		\
+  %D%/packages/patches/helm-fix-gcc-9-build.patch		\
   %D%/packages/patches/http-parser-CVE-2020-8287.patch		\
   %D%/packages/patches/hubbub-sort-entities.patch		\
   %D%/packages/patches/hurd-cross.patch				\
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 28dbf1b624..6d04aae59c 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -6396,7 +6396,9 @@ (define-public helm
         (file-name (git-file-name name version))
         (sha256
           (base32
-            "17ys2vvhncx9i3ydg3xwgz1d3gqv4yr5mqi7vr0i0ca6nad6x3d4"))))
+            "17ys2vvhncx9i3ydg3xwgz1d3gqv4yr5mqi7vr0i0ca6nad6x3d4"))
+        ;; Apply GCC 9 fixes from https://github.com/mtytel/helm/pull/233
+        (patches (search-patches "helm-fix-gcc-9-build.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f  ; no "check" target
diff --git a/gnu/packages/patches/helm-fix-gcc-9-build.patch b/gnu/packages/patches/helm-fix-gcc-9-build.patch
new file mode 100644
index 0000000000..f623fef203
--- /dev/null
+++ b/gnu/packages/patches/helm-fix-gcc-9-build.patch
@@ -0,0 +1,140 @@
+From cb611a80bd5a36d31bfc31212ebbf79aa86c6f08 Mon Sep 17 00:00:00 2001
+From: jikstra <jikstra <at> disroot.org>
+Date: Tue, 20 Aug 2019 03:00:51 +0200
+Subject: [PATCH] Backport
+ https://github.com/WeAreROLI/JUCE/commit/4e0adb2af8b424c43d22bd431011c9a6c57d36b6
+ to the bundled JUCE framework to make helm compile on gcc 9.1 again
+
+---
+ .../juce_graphics/colour/juce_PixelFormats.h  | 25 +---------
+ .../native/juce_RenderingHelpers.h            | 48 +------------------
+ 2 files changed, 4 insertions(+), 69 deletions(-)
+
+diff --git a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
+index 9be9ba09c..3535eab80 100644
+--- a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
++++ b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
+@@ -105,23 +105,9 @@ class JUCE_API  PixelARGB
+ 
+     //==============================================================================
+     forcedinline uint8 getAlpha() const noexcept      { return components.a; }
+-    forcedinline uint8 getRed() const noexcept        { return components.r; }
++    forcedinline uint8 getRed()   const noexcept      { return components.r; }
+     forcedinline uint8 getGreen() const noexcept      { return components.g; }
+-    forcedinline uint8 getBlue() const noexcept       { return components.b; }
+-
+-   #if JUCE_GCC
+-    // NB these are here as a workaround because GCC refuses to bind to packed values.
+-    forcedinline uint8& getAlpha() noexcept           { return comps [indexA]; }
+-    forcedinline uint8& getRed() noexcept             { return comps [indexR]; }
+-    forcedinline uint8& getGreen() noexcept           { return comps [indexG]; }
+-    forcedinline uint8& getBlue() noexcept            { return comps [indexB]; }
+-   #else
+-    forcedinline uint8& getAlpha() noexcept           { return components.a; }
+-    forcedinline uint8& getRed() noexcept             { return components.r; }
+-    forcedinline uint8& getGreen() noexcept           { return components.g; }
+-    forcedinline uint8& getBlue() noexcept            { return components.b; }
+-   #endif
+-
++    forcedinline uint8 getBlue()  const noexcept      { return components.b; }
+     //==============================================================================
+     /** Copies another pixel colour over this one.
+ 
+@@ -340,9 +326,6 @@ class JUCE_API  PixelARGB
+     {
+         uint32 internal;
+         Components components;
+-       #if JUCE_GCC
+-        uint8 comps[4];  // helper struct needed because gcc does not allow references to packed union members
+-       #endif
+     };
+ }
+ #ifndef DOXYGEN
+@@ -429,10 +412,6 @@ class JUCE_API  PixelRGB
+     forcedinline uint8 getGreen() const noexcept    { return g; }
+     forcedinline uint8 getBlue() const noexcept     { return b; }
+ 
+-    forcedinline uint8& getRed() noexcept           { return r; }
+-    forcedinline uint8& getGreen() noexcept         { return g; }
+-    forcedinline uint8& getBlue() noexcept          { return b; }
+-
+     //==============================================================================
+     /** Copies another pixel colour over this one.
+ 
+diff --git a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
+index 1c4cd31ef..29519cb5a 100644
+--- a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
++++ b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
+@@ -581,18 +581,10 @@ namespace EdgeTableFillers
+             : destData (image), sourceColour (colour)
+         {
+             if (sizeof (PixelType) == 3 && destData.pixelStride == sizeof (PixelType))
+-            {
+                 areRGBComponentsEqual = sourceColour.getRed() == sourceColour.getGreen()
+                                             && sourceColour.getGreen() == sourceColour.getBlue();
+-                filler[0].set (sourceColour);
+-                filler[1].set (sourceColour);
+-                filler[2].set (sourceColour);
+-                filler[3].set (sourceColour);
+-            }
+             else
+-            {
+                 areRGBComponentsEqual = false;
+-            }
+         }
+ 
+         forcedinline void setEdgeTableYPos (const int y) noexcept
+@@ -643,7 +635,6 @@ namespace EdgeTableFillers
+         const Image::BitmapData& destData;
+         PixelType* linePixels;
+         PixelARGB sourceColour;
+-        PixelRGB filler [4];
+         bool areRGBComponentsEqual;
+ 
+         forcedinline PixelType* getPixel (const int x) const noexcept
+@@ -658,43 +649,8 @@ namespace EdgeTableFillers
+ 
+         forcedinline void replaceLine (PixelRGB* dest, const PixelARGB colour, int width) const noexcept
+         {
+-            if (destData.pixelStride == sizeof (*dest))
+-            {
+-                if (areRGBComponentsEqual)  // if all the component values are the same, we can cheat..
+-                {
+-                    memset (dest, colour.getRed(), (size_t) width * 3);
+-                }
+-                else
+-                {
+-                    if (width >> 5)
+-                    {
+-                        const int* const intFiller = reinterpret_cast<const int*> (filler);
+-
+-                        while (width > 8 && (((pointer_sized_int) dest) & 7) != 0)
+-                        {
+-                            dest->set (colour);
+-                            ++dest;
+-                            --width;
+-                        }
+-
+-                        while (width > 4)
+-                        {
+-                            int* d = reinterpret_cast<int*> (dest);
+-                            *d++ = intFiller[0];
+-                            *d++ = intFiller[1];
+-                            *d++ = intFiller[2];
+-                            dest = reinterpret_cast<PixelRGB*> (d);
+-                            width -= 4;
+-                        }
+-                    }
+-
+-                    while (--width >= 0)
+-                    {
+-                        dest->set (colour);
+-                        ++dest;
+-                    }
+-                }
+-            }
++            if ((size_t) destData.pixelStride == sizeof (*dest) && areRGBComponentsEqual)
++                memset ((void*) dest, colour.getRed(), (size_t) width * 3);   // if all the component values are the same, we can cheat..
+             else
+             {
+                 JUCE_PERFORM_PIXEL_OP_LOOP (set (colour))
--
2.34.0


Information forwarded to guix-patches <at> gnu.org:
bug#52309; Package guix-patches. (Mon, 06 Dec 2021 07:06:01 GMT) Full text and rfc822 format available.

Message #8 received at 52309 <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Pierre Langlois <pierre.langlois <at> gmx.com>
Cc: 52309 <at> debbugs.gnu.org
Subject: Re: [bug#52309] [PATCH, core-updates-frozen] gnu: helm: Fix build
 with GCC 9 and later.
Date: Mon, 6 Dec 2021 02:05:11 -0500
On Sun, Dec 05, 2021 at 02:35:12PM +0000, Pierre Langlois wrote:
> Hi Guix!
> 
> I see the helm synthesizer doesn't build on core-updates-frozen so
> here's a patch, taken from https://github.com/mtytel/helm/pull/233.
> 
> Thanks,
> Pierre
> 

> From cfbb5b926d0a5d6278554174aca3237d642bee97 Mon Sep 17 00:00:00 2001
> From: Pierre Langlois <pierre.langlois <at> gmx.com>
> Date: Sat, 20 Nov 2021 14:51:13 +0000
> Subject: [PATCH] gnu: helm: Fix build with GCC 9 and later.
> 
> * gnu/packages/music.scm (helm)[origin]: Add patch.
> * gnu/packages/patches/helm-fix-gcc-9-build.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Register it.

Thanks, please push!




Reply sent to Pierre Langlois <pierre.langlois <at> gmx.com>:
You have taken responsibility. (Mon, 06 Dec 2021 20:44:02 GMT) Full text and rfc822 format available.

Notification sent to Pierre Langlois <pierre.langlois <at> gmx.com>:
bug acknowledged by developer. (Mon, 06 Dec 2021 20:44:02 GMT) Full text and rfc822 format available.

Message #13 received at 52309-done <at> debbugs.gnu.org (full text, mbox):

From: Pierre Langlois <pierre.langlois <at> gmx.com>
To: Leo Famulari <leo <at> famulari.name>
Cc: Pierre Langlois <pierre.langlois <at> gmx.com>, 52309-done <at> debbugs.gnu.org
Subject: Re: [bug#52309] [PATCH, core-updates-frozen] gnu: helm: Fix build
 with GCC 9 and later.
Date: Mon, 06 Dec 2021 20:42:43 +0000
[Message part 1 (text/plain, inline)]
Leo Famulari <leo <at> famulari.name> writes:

> On Sun, Dec 05, 2021 at 02:35:12PM +0000, Pierre Langlois wrote:
>> Hi Guix!
>> 
>> I see the helm synthesizer doesn't build on core-updates-frozen so
>> here's a patch, taken from https://github.com/mtytel/helm/pull/233.
>> 
>> Thanks,
>> Pierre
>> 
>
>> From cfbb5b926d0a5d6278554174aca3237d642bee97 Mon Sep 17 00:00:00 2001
>> From: Pierre Langlois <pierre.langlois <at> gmx.com>
>> Date: Sat, 20 Nov 2021 14:51:13 +0000
>> Subject: [PATCH] gnu: helm: Fix build with GCC 9 and later.
>> 
>> * gnu/packages/music.scm (helm)[origin]: Add patch.
>> * gnu/packages/patches/helm-fix-gcc-9-build.patch: New file.
>> * gnu/local.mk (dist_patch_DATA): Register it.
>
> Thanks, please push!

Thanks! Pushed as 4afacd45460241f58508d037d6ed2b3c5ee0973b

Pierre
[signature.asc (application/pgp-signature, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 04 Jan 2022 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 74 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.