cpp-io2d/P0267_RefImpl

[Ubuntu] Build [65%] : error: size of array ‘altStackMem’ is not an integral constant-expression

Opened this issue · 5 comments

System Details:

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 21.10
Release:	21.10
Codename:	impish
$ uname -a
Linux mBox 5.13.0-22-generic #22-Ubuntu SMP Fri Nov 5 13:21:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  1. GCC Version - gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0
  2. Cmake Version - cmake version 3.18.4

Steps to reproduce the error

Refresh apt: sudo apt update
Install GCC: sudo apt install build-essential
Install CMake: sudo apt install cmake
Install Cairo: sudo apt install libcairo2-dev
Install graphicsmagick: sudo apt install libgraphicsmagick1-dev
Install libpng: sudo apt install libpng-dev
Example of CMake execution:

git clone --recurse-submodules https://github.com/cpp-io2d/P0267_RefImpl
cd P0267_RefImpl
mkdir Debug
cd Debug
cmake --config Debug "-DCMAKE_BUILD_TYPE=Debug" ..
cmake --build .

Detailed Output

$ cmake --build .

Scanning dependencies of target io2d_core
[ 2%] Building CXX object P0267_RefImpl/P0267_RefImpl/CMakeFiles/io2d_core.dir/rgba_color.cpp.o
[ 4%] Building CXX object P0267_RefImpl/P0267_RefImpl/CMakeFiles/io2d_core.dir/xinterchangebuffer.cpp.o
[ 6%] Linking CXX static library libio2d_core.a
[ 6%] Built target io2d_core
Scanning dependencies of target io2d_cairo
[ 9%] Building CXX object P0267_RefImpl/P0267_RefImpl/cairo/CMakeFiles/io2d_cairo.dir/cairo_renderer-graphicsmagickinit.cpp.o
[ 11%] Linking CXX static library libio2d_cairo.a
[ 11%] Built target io2d_cairo
Scanning dependencies of target io2d_cairo_xlib
[ 13%] Building CXX object P0267_RefImpl/P0267_RefImpl/cairo/xlib/CMakeFiles/io2d_cairo_xlib.dir/cairo_renderer_xlib.cpp.o
[ 16%] Linking CXX static library libio2d_cairo_xlib.a
[ 16%] Built target io2d_cairo_xlib
Scanning dependencies of target color_fill
[ 18%] Building CXX object P0267_RefImpl/Samples/color_fill/CMakeFiles/color_fill.dir/main.cpp.o
[ 20%] Linking CXX executable color_fill
[ 20%] Built target color_fill
Scanning dependencies of target cpu_load
[ 23%] Building CXX object P0267_RefImpl/Samples/cpu_load/CMakeFiles/cpu_load.dir/main.cpp.o
[ 25%] Building CXX object P0267_RefImpl/Samples/cpu_load/CMakeFiles/cpu_load.dir/data_source.cpp.o
[ 27%] Building CXX object P0267_RefImpl/Samples/cpu_load/CMakeFiles/cpu_load.dir/profiler_linux.cpp.o
[ 30%] Linking CXX executable cpu_load
[ 30%] Built target cpu_load
Scanning dependencies of target draw_cpp
[ 32%] Building CXX object P0267_RefImpl/Samples/draw_cpp/CMakeFiles/draw_cpp.dir/main.cpp.o
[ 34%] Linking CXX executable draw_cpp
[ 34%] Built target draw_cpp
Scanning dependencies of target life
[ 37%] Building CXX object P0267_RefImpl/Samples/life/CMakeFiles/life.dir/main.cpp.o
[ 39%] Linking CXX executable life
[ 39%] Built target life
Scanning dependencies of target rocks_in_space
[ 41%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Asteroid.cpp.o
[ 44%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Game.cpp.o
[ 46%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Input.cpp.o
[ 48%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Maths.cpp.o
[ 51%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Physics.cpp.o
[ 53%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/Ship.cpp.o
[ 55%] Building CXX object P0267_RefImpl/Samples/rocks_in_space/CMakeFiles/rocks_in_space.dir/LinuxMain.cpp.o
[ 58%] Linking CXX executable rocks_in_space
[ 58%] Built target rocks_in_space
Scanning dependencies of target sprites
[ 60%] Building CXX object P0267_RefImpl/Samples/sprites/CMakeFiles/sprites.dir/main.cpp.o
[ 62%] Linking CXX executable sprites
[ 62%] Built target sprites
Scanning dependencies of target tests
[ 65%] Building CXX object P0267_RefImpl/Tests/CMakeFiles/tests.dir/main.cpp.o
In file included from /usr/include/signal.h:328,
from /home/raxit/P0267_RefImpl/P0267_RefImpl/Tests/Catch2/single_include/catch.hpp:4716,
from /home/raxit/P0267_RefImpl/P0267_RefImpl/Tests/main.cpp:15:
/home/raxit/P0267_RefImpl/P0267_RefImpl/Tests/Catch2/single_include/catch.hpp:7320:45: error: size of array ‘altStackMem’ is not an integral constant-expression
7320 | char FatalConditionHandler::altStackMem[SIGSTKSZ] = {};
| ^~~~~~~~
gmake[2]: *** [P0267_RefImpl/Tests/CMakeFiles/tests.dir/build.make:82: P0267_RefImpl/Tests/CMakeFiles/tests.dir/main.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:619: P0267_RefImpl/Tests/CMakeFiles/tests.dir/all] Error 2
gmake: *** [Makefile:160: all] Error 2

Why this issue?

After studying responses to previous similar issues, I feel like the solutions mentioned there may not be applicable to the newer ubuntu 21.10 LTS. Previous similar issues were typically solved by updating cmake or gcc to the latest version but in the case of latest ubuntu (21.10), such requirements are already fulfilled.

I just build without test -DIO2D_WITHOUT_TESTS=1

1 install boost lib
2 install openssl lib
both from terminal

Same problem here:

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.1 LTS
Release:	22.04
Codename:	jammy
$ uname -a
Linux pluto 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
$ cmake --version
cmake version 3.22.1
/home/stondo/develop/cpp/P0267_RefImpl/P0267_RefImpl/Samples/svg/external/svgpp/include/svgpp/policy/value_events.hpp:23:16: error: no matching function for call to ‘GradientStopContext::set(svgpp::tag::attribute::stroke&, const boost::iterator_range<const char*>&, const int&)’
   23 |     context.set(tag, args...);
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~


gmake[2]: *** [P0267_RefImpl/Samples/svg/CMakeFiles/svg.dir/build.make:90: P0267_RefImpl/Samples/svg/CMakeFiles/svg.dir/svg.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:559: P0267_RefImpl/Samples/svg/CMakeFiles/svg.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

I actually got it working suppressing the test like @varomix suggested and then also by manually cloning googletest release 1.11.0 in thirdparty folder as suggested here

do you find any solution, i am also facing the same problem on Ubuntu 22.04
-DIO2D_WITHOUT_TESTS=1 , with this removing the test is worse , any alterante solution

I just build without test -DIO2D_WITHOUT_TESTS=1

May you share with me where I can add this one into cmake?

I tried to run it through the command line argument but cmake complaint that it ignores the manual input parameter.