Source: librandom123 Version: 1.14.0+dfsg-3 Severity: important Tags: ftbfs patch Justification: fails to build from source User: debian-ri...@lists.debian.org Usertags: riscv64 X-Debbugs-Cc: i...@hack3r.moe, debian-ri...@lists.debian.org
Dear maintainers, librandom123 does not enable riscv64 build by default, which caused FTBFS on packages like neuron: ``` [ 44%] Building CXX object src/nrniv/CMakeFiles/nrniv_lib.dir/__/oc/nrnran123.cpp.o cd /<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/nrniv && /usr/bin/c++ -DHAVE_CONFIG_H -DMPICH_SKIP_MPICXX=1 -DMPI_NO_CPPBIND=1 -DOMPI_SKIP_MPICXX=1 -Dnrniv_lib_EXPORTS -DHOC=1 -DINTERVIEWS=1 -DOOP=1 -I/<<PKGBUILDDIR>>/src/ivoc -I/<<PKGBUILDDIR>>/src/nrncvode -I/<<PKGBUILDDIR>>/src/nrniv -I/<<PKGBUILDDIR>>/src/nrnoc -I/<<PKGBUILDDIR>>/src/oc -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/nrncvode -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/nrnoc -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/nrnpython -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/oc -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/parallel -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/sundials -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/sundials/shared -I/<<PKGBUILDDIR>>/external/Random123/include -I/<<PKGBUILDDIR>>/src -I/<<PKGBUILDDIR>>/src/gnu -I/<<PKGBUILDDIR>>/src/mesch -I/<<PKGBUILDDIR>>/src/nrnmpi -I/<<PKGBUILDDIR>>/src/nrnpython -I/<<PKGBUILDDIR>>/src/parallel -I/<<PKGBUILDDIR>>/src/scopmath -I/<<PKGBUILDDIR>>/src/sparse -I/<<PKGBUILDDIR>>/src/sparse13 -I/<<PKGBUILDDIR>>/src/sundials -I/<<PKGBUILDDIR>>/src/sundials/cvodes -I/<<PKGBUILDDIR>>/src/sundials/ida -I/<<PKGBUILDDIR>>/src/sundials/shared -I/usr/include/python3.11 -I/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/src/nrniv/oc_generated -I/usr/lib/riscv64-linux-gnu/openmpi/include -I/usr/lib/riscv64-linux-gnu/openmpi/include/openmpi -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Wno-write-strings -fPIC -std=c++11 -MD -MT src/nrniv/CMakeFiles/nrniv_lib.dir/__/oc/nrnran123.cpp.o -MF CMakeFiles/nrniv_lib.dir/__/oc/nrnran123.cpp.o.d -o CMakeFiles/nrniv_lib.dir/__/oc/nrnran123.cpp.o -c /<<PKGBUILDDIR>>/src/oc/nrnran123.cpp In file included from /usr/include/Random123/features/compilerfeatures.h:218, from /usr/include/Random123/philox.h:37, from /<<PKGBUILDDIR>>/src/oc/nrnran123.cpp:7: /usr/include/Random123/features/gccfeatures.h:38:4: error: #error "This code has only been tested on x86, powerpc and a few arm platforms." 38 | # error "This code has only been tested on x86, powerpc and a few arm platforms." | ^~~~~ /usr/include/Random123/features/gccfeatures.h:39:10: fatal error: including_a_nonexistent_file_will_stop_some_compilers_from_continuing_with_a_hopeless_task: No such file or directory 39 | #include <including_a_nonexistent_file_will_stop_some_compilers_from_continuing_with_a_hopeless_task> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. ``` Full buildd log of neuron: https://buildd.debian.org/status/fetch.php?pkg=neuron&arch=riscv64&ver=8.2.2-2&stamp=1675434052&raw=0 I've successfully built neuron on riscv64 by adding macro condition to bypass manual compilation error, as shown in the attached patch. If more help is needed, please let me know. Cheers, Eric
--- a/include/Random123/features/gccfeatures.h +++ b/include/Random123/features/gccfeatures.h @@ -34,7 +34,7 @@ #define R123_GNUC_VERSION (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) -#if !defined(__x86_64__) && !defined(__i386__) && !defined(__powerpc__) && !defined(__arm__) && !defined(__aarch64__) && !defined(__s390x__) +#if !defined(__x86_64__) && !defined(__i386__) && !defined(__powerpc__) && !defined(__arm__) && !defined(__aarch64__) && !defined(__s390x__) && !defined(__riscv) # error "This code has only been tested on x86, powerpc and a few arm platforms." #include <including_a_nonexistent_file_will_stop_some_compilers_from_continuing_with_a_hopeless_task> { /* maybe an unbalanced brace will terminate the compilation */