mapbox / variant

C++11/C++14 Variant
BSD 3-Clause "New" or "Revised" License
371 stars 101 forks source link

error: size of array ‘altStackMem’ is not an integral constant-expression #183

Open sebastic opened 2 years ago

sebastic commented 2 years ago

As reported in Debian Bug #1017327:

During a rebuild of all packages in sid, your package failed to build on amd64.

Relevant part (hopefully):
g++ -c -o out/issue122.o test/t/issue122.cpp -Iinclude -isystem test/include -std=c++11 -Werror -Wall -Wextra -pedantic -Wformat=2 -Wsign-conversion -Wshadow -Wunused-parameter -O3 -DNDEBUG -march=native -DSINGLE_THREADED -fvisibility-inlines-hidden -fvisibility=hidden -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -pthread
In file included from /usr/include/signal.h:328,
                 from test/include/catch.hpp:6392,
                 from test/unit.cpp:2:
test/include/catch.hpp:6415:33: error: size of array ‘altStackMem’ is not an integral constant-expression
 6415 |         static char altStackMem[SIGSTKSZ];
      |                                 ^~~~~~~~
test/include/catch.hpp:6466:45: error: size of array ‘altStackMem’ is not an integral constant-expression
 6466 |     char FatalConditionHandler::altStackMem[SIGSTKSZ] = {};
      |                                             ^~~~~~~~
mkdir -p ./out
g++ -c -o out/mutating_visitor.o test/t/mutating_visitor.cpp -Iinclude -isystem test/include -std=c++11 -Werror -Wall -Wextra -pedantic -Wformat=2 -Wsign-conversion -Wshadow -Wunused-parameter -O3 -DNDEBUG -march=native -DSINGLE_THREADED -fvisibility-inlines-hidden -fvisibility=hidden -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -pthread
make[1]: *** [Makefile:96: out/unit.o] Error 1

The full build log is available from: http://qa-logs.debian.net/2022/08/13/mapbox-variant_1.2.0-1_unstable.log

sebastic commented 2 years ago

Fedora has a patch to resolve this issue: https://src.fedoraproject.org/rpms/catch1/blob/rawhide/f/catch1-sigstksz.patch

This patch has been included in Gentoo:

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7571d22a49cdce0626968667e68638ff2111471e

And Debian:

https://salsa.debian.org/debian-gis-team/mapbox-variant/-/commit/32514d612a19927725d0caf92735999d1ac4ae22

The catch package in Debian has a different patch:

https://sources.debian.org/src/catch/1.12.2-0.1/debian/patches/glib2.34.patch/