[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#52309] [PATCH, core-updates-frozen] gnu: helm: Fix build with GCC 9
From: |
Pierre Langlois |
Subject: |
[bug#52309] [PATCH, core-updates-frozen] gnu: helm: Fix build with GCC 9 and later. |
Date: |
Sun, 05 Dec 2021 14:35:12 +0000 |
User-agent: |
mu4e 1.6.10; emacs 27.2 |
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@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@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
- [bug#52309] [PATCH, core-updates-frozen] gnu: helm: Fix build with GCC 9 and later.,
Pierre Langlois <=