Description of problem: linbox package is not available in aarch64 repositories, causing builds to fail. Version-Release number of selected component (if applicable): 1.4.2-2.fc26 How reproducible: Always. Steps to Reproduce: 1. Try building sagemath from master branch HEAD (fedpkg build --scratch --nowait --arch=aarch64) Actual results: No matching package to install: 'linbox-devel' Expected results: No uninstallable dependencies. Additional information: https://kojipkgs.fedoraproject.org//work/tasks/9610/15809610/root.log https://koji.fedoraproject.org/koji/buildinfo?buildID=804574
I tried building linbox, but it fails when compiling tests: In file included from /usr/include/fflas-ffpack/fflas/fflas_freduce.inl:38:0, from /usr/include/fflas-ffpack/fflas/fflas_freduce.h:56, from /usr/include/fflas-ffpack/fflas/fflas.h:104, from /usr/include/fflas-ffpack/ffpack/ffpack.h:46, from ../linbox/matrix/matrixdomain/blas-matrix-domain.h:45, from ../linbox/matrix/matrix-domain.h:68, from ../linbox/matrix/sparsematrix/sparse-generic.h:80, from ../linbox/matrix/sparse-matrix.h:70, from test-solve.C:45: /usr/include/fflas-ffpack/utils/bit_manipulation.h: In function 'uint64_t divide_128(uint64_t, uint64_t, uint64_t, uint64_t*)': /usr/include/fflas-ffpack/utils/bit_manipulation.h:114:10: error: impossible constraint in 'asm' ); ^ This seems to be an error in fflas-ffpack, it seems to assume that amd64 register names are available. http://koji.fedoraproject.org/koji/taskinfo?taskID=15855078
It built on armv7hl before and the tests passed. Maybe it just doesn't know about aarch64 and assumes x86?
Also, it looks like it's being built with -O2 in CFLAGS: g++ -DHAVE_CONFIG_H -I. -I.. -DLinBoxTestOnly -Wall -g -DNDEBUG -U_LB_DEBUG -g -DNDEBUG -U_LB_DEBUG -I../linbox -Wall -DNDEBUG -UFFLASFFPACK_DEBUG -D__FFLASFFPACK_HAVE_CBLAS -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fno-strict-aliasing -fopenmp -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -I/usr/include/atlas -I/usr/include/m4rie -I/usr/include/saclib -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -c -o test-rational-solver.o test-rational-solver.C In file included from /usr/include/bits/libc-header-start.h:33:0, from /usr/include/stdint.h:26, from /usr/lib/gcc/aarch64-redhat-linux/6.2.1/include/stdint.h:9, from /usr/include/givaro/givconfig.h:86, from /usr/include/fflas-ffpack/fflas-ffpack-config.h:119, from ../linbox/linbox-config.h:30, from test-rational-solver.C:31: /usr/include/features.h:360:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp] # warning _FORTIFY_SOURCE requires compiling with optimization (-O) ^~~~~~~
... I mean *without* -O2.
... but that's on purpose: # Don't try to optimize the tests; the build takes gargantuan amounts of memory sed -i 's|-O2||g' tests/Makefile It's rather a bug in fflas-ffpack: fflas_ffpack-2.2.2/fflas-ffpack/utils/bit_manipulation.h: #ifdef __FFLASFFPACK_HAVE_INT128 // division 128bits by 64 bits // int128_t(u1,u0) = u1*2^64+u0, div v, rem r // return quo static uint64_t divide_128(uint64_t u1, uint64_t u0, uint64_t v, uint64_t *r) { // u0 -> rax // u1 -> rdx // divq uint64_t result; __asm__("divq %[v]" : "=a"(result), "=d"(*r) : [v] "r"(v), "a"(u0), "d"(u1) ); return result; } #endif The use of x86 assembly should be guarded by appropriate #ifdefs or intrinsics should be used.
It looks like the Debian maintainer reported a related bug already: https://github.com/linbox-team/fflas-ffpack/issues/45
However, enabling -O optimization for the tests makes the build complete and tests pass on aarch64: http://koji.fedoraproject.org/koji/taskinfo?taskID=15859942
No issues on other primary arches either, so committed, pushed and new build submitted: http://koji.fedoraproject.org/koji/taskinfo?taskID=15861362 .