pencil2d / pencil

Pencil2D is an easy, intuitive tool to make 2D hand-drawn animations. Pencil2D is open source and cross-platform.
http://pencil2d.org
GNU General Public License v2.0
1.47k stars 273 forks source link

Tests fail to compile on glibc-2.34 #1695

Closed benkohler closed 2 years ago

benkohler commented 2 years ago

Issue Summary

Tests fail to compile against glibc-2.34. Tests still compile fine against glibc-2.33.

Actual Results

make[1]: Entering directory '/var/tmp/portage/media-gfx/pencil-0.6.6/work/pencil-0.6.6/tests' x86_64-pc-linux-gnu-g++ -c -O2 -pipe -march=native -std=c++11 -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC -DAPP_VERSION=\"0.6.6\" -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050600 -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_NETWORK_LIB -DQT_TESTLIB_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/var/tmp/portage/media-gfx/pencil-0.6.6/work/pencil-0.6.6/tests"' -I. -I../core_lib/src/graphics -I../core_lib/src/graphics/bitmap -I../core_lib/src/graphics/vector -I../core_lib/src/interface -I../core_lib/src/structure -I../core_lib/src/tool -I../core_lib/src/util -I../core_lib/ui -I../core_lib/src/managers -I../core_lib/src -I/usr/include/qt5 -I/usr/include/qt5/QtSvg -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtMultimedia -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtXml -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtTest -I/usr/include/qt5/QtCore -I.moc -I/usr/lib64/qt5/mkspecs/linux-g++ -o .obj/main.o src/main.cpp In file included from /usr/include/signal.h:328, from src/catch.hpp:5549, from src/main.cpp:18: src/catch.hpp:8164:58: error: call to non-‘constexpr’ function ‘long int sysconf(int)’ 8164 | constexpr static std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ; | ^~~ In file included from /usr/include/bits/sigstksz.h:24, from /usr/include/signal.h:328, from src/catch.hpp:5549, from src/main.cpp:18: /usr/include/unistd.h:640:17: note: ‘long int sysconf(int)’ declared here 640 | extern long int sysconf (int name) THROW; | ^~~ In file included from src/main.cpp:18: src/catch.hpp:8223:45: error: size of array ‘altStackMem’ is not an integral constant-expression 8223 | char FatalConditionHandler::altStackMem[sigStackSize] = {}; | ^~~~ make[1]: [Makefile:738: .obj/main.o] Error 1 make[1]: Leaving directory '/var/tmp/portage/media-gfx/pencil-0.6.6/work/pencil-0.6.6/tests' make: [Makefile:135: sub-tests-make_first-ordered] Error 2

Expected Results

Tests compile successfully

Video or Image Reference

n/a

Steps to reproduce

make

System Information

0.6.5 & 0.6.6 tested

Gentoo Linux

16GB

Jose-Moreno commented 2 years ago

@benkohler Thank you for your report. I'm not well versed in Linux so I'll let a linux savvy dev know about your issue in case they can advice you better.

scribblemaniac commented 2 years ago

This is an issue with Catch2 (catchorg/Catch2/#2178). It was fixed in version v2.13.6 which is the version by the current development version of Pencil2D. I use glibc version 2.34 in my development environment and do not have any issues building from master, although I do recall having some issues building the tests for 0.6.6. For these reasons, I am closing this issue as fixed.

I see you're using Gentoo so I'm assuming you are trying to build this with the package manager. You can pass CONFIG+=NO_TESTS to the qmake step to skip building the test as a workaround for this issue until the next release, or you can patch catch.hpp with at least Catch2 v2.13.6.

benkohler commented 2 years ago

Ah, I didn't realize that the newest 0.6.6 release was cut from release branch, not master. We do already make tests optional but failing tests make our QA reports unhappy. I'll grab the newer catch.hpp manually for now.

Thanks!