gnu: p7zip: Fix build with GCC 11.

* gnu/packages/patches/p7zip-fix-build-with-gcc-11.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/compression.scm (p7zip)[source]: Apply it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Simon South 2023-01-28 07:59:37 -05:00 committed by Ludovic Courtès
parent 6febc26827
commit be41d82d19
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 51 additions and 0 deletions

View File

@ -1622,6 +1622,7 @@ dist_patch_DATA = \
%D%/packages/patches/owncloud-disable-updatecheck.patch \
%D%/packages/patches/p7zip-CVE-2016-9296.patch \
%D%/packages/patches/p7zip-CVE-2017-17969.patch \
%D%/packages/patches/p7zip-fix-build-with-gcc-11.patch \
%D%/packages/patches/p7zip-remove-unused-code.patch \
%D%/packages/patches/pam-krb5-CVE-2020-10595.patch \
%D%/packages/patches/pango-skip-libthai-test.patch \

View File

@ -1339,6 +1339,7 @@ for most inputs, but the resulting compressed files are anywhere from 20% to
"switch(static_cast<HRESULT>(errorCode)) {"))))
(patches (search-patches "p7zip-CVE-2016-9296.patch"
"p7zip-CVE-2017-17969.patch"
"p7zip-fix-build-with-gcc-11.patch"
"p7zip-remove-unused-code.patch"))))
(build-system gnu-build-system)
(arguments

View File

@ -0,0 +1,49 @@
Building p7zip with GCC 11 or newer normally fails with error messages like
../../../../CPP/7zip/Archive/Wim/WimHandler.cpp:308:11: error: use of an
operand of type bool in operator++ is forbidden in C++17
308 | numMethods++;
| ^~~~~~~~~~
This patch causes GCC to interpret the code using the GNU dialect of the C++14
standard, as GCC 10 did by default, and reduces these errors to warnings.
diff --git a/makefile.linux_amd64_asm b/makefile.linux_amd64_asm
index 075c6a8..b7d73ee 100644
--- a/makefile.linux_amd64_asm
+++ b/makefile.linux_amd64_asm
@@ -11,6 +11,8 @@ ALLFLAGS=-m64 ${OPTFLAGS} -pipe \
-D_7ZIP_ASM \
$(LOCAL_FLAGS)
+ALLFLAGS_CPP=-std=gnu++14
+
CXX=g++
CC=gcc
CC_SHARED=-fPIC
diff --git a/makefile.linux_any_cpu_gcc_4.X b/makefile.linux_any_cpu_gcc_4.X
index be093b5..c0f3120 100644
--- a/makefile.linux_any_cpu_gcc_4.X
+++ b/makefile.linux_any_cpu_gcc_4.X
@@ -10,7 +10,7 @@ ALLFLAGS=${OPTFLAGS} -pipe \
-D_7ZIP_LARGE_PAGES \
$(LOCAL_FLAGS)
-ALLFLAGS_CPP=-DENV_HAVE_GCCVISIBILITYPATCH -fvisibility=hidden -fvisibility-inlines-hidden
+ALLFLAGS_CPP=-DENV_HAVE_GCCVISIBILITYPATCH -std=gnu++14 -fvisibility=hidden -fvisibility-inlines-hidden
CXX=g++
CC=gcc
diff --git a/makefile.linux_x86_asm_gcc_4.X b/makefile.linux_x86_asm_gcc_4.X
index 1ac339b..6e736d9 100644
--- a/makefile.linux_x86_asm_gcc_4.X
+++ b/makefile.linux_x86_asm_gcc_4.X
@@ -12,7 +12,7 @@ ALLFLAGS=${OPTFLAGS} -pipe -m32 \
-D_7ZIP_ASM \
$(LOCAL_FLAGS)
-ALLFLAGS_CPP=-DENV_HAVE_GCCVISIBILITYPATCH -fvisibility=hidden -fvisibility-inlines-hidden
+ALLFLAGS_CPP=-DENV_HAVE_GCCVISIBILITYPATCH -std=gnu++14 -fvisibility=hidden -fvisibility-inlines-hidden
CXX=g++
CC=gcc