Source: desmume Version: 0.9.13-1 Severity: serious Tags: FTBFS, patch User: debian-ri...@lists.debian.org Usertags: riscv64 X-Debbugs-Cc: debian-ri...@lists.debian.org
Dear desmume Maintainer, The package desmume build failed on all architectures except ARM.The crucial buildd log below: ``` FAILED: libdesmume.a.p/.._.._libretro-common_features_features_cpu.c.o cc -Ilibdesmume.a.p -I. -I../desmume/src/frontend/posix -I../desmume/src -I../desmume/src/libretro-common/include -I../desmume/src/frontend -I/usr/include/glib-2.0 -I/usr/lib/riscv64-linux-gnu/glib-2.0/include -I/usr/include/sysprof-6 -I/usr/include/SDL2 -I/usr/include/dbus-1.0 -I/usr/lib/riscv64-linux-gnu/dbus-1.0/include -I/usr/include/AL -I/usr/include/soundtouch -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c11 -DHAVE_LIBSOUNDTOUCH -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wno-implicit-function-declaration -Wno-int-conversion -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -pthread -D_REENTRANT -MD -MQ libdesmume.a.p/.._.._libretro-common_features_features_cpu.c.o -MF libdesmume.a.p/.._.._libretro-common_features_features_cpu.c.o.d -o libdesmume.a.p/.._.._libretro-common_features_features_cpu.c.o -c ../desmume/src/libretro-common/features/features_cpu.c ../desmume/src/libretro-common/features/features_cpu.c: In function ‘check_arm_cpu_feature’: ../desmume/src/libretro-common/features/features_cpu.c:321:31: error: ‘AT_HWCAP’ undeclared (first use in this function) 321 | uint64_t hwcap = getauxval(AT_HWCAP); | ^~~~~~~~ ../desmume/src/libretro-common/features/features_cpu.c:321:31: note: each undeclared identifier is reported only once for each function it appears in ../desmume/src/libretro-common/features/features_cpu.c:323:23: error: ‘HWCAP_ARM_NEON’ undeclared (first use in this function) 323 | return (hwcap & HWCAP_ARM_NEON) != 0; | ^~~~~~~~~~~~~~ ../desmume/src/libretro-common/features/features_cpu.c:325:23: error: ‘HWCAP_ARM_VFPv3’ undeclared (first use in this function) 325 | return (hwcap & HWCAP_ARM_VFPv3) != 0; | ^~~~~~~~~~~~~~~ ../desmume/src/libretro-common/features/features_cpu.c:327:23: error: ‘HWCAP_ARM_VFPv4’ undeclared (first use in this function) 327 | return (hwcap & HWCAP_ARM_VFPv4) != 0; | ^~~~~~~~~~~~~~~ [97/116] c++ -Ilibdesmume.a.p -I. -I../desmume/src/frontend/posix -I../desmume/src -I../desmume/src/libretro-common/include -I../desmume/src/frontend -I/usr/include/glib-2.0 -I/usr/lib/riscv64-linux-gnu/glib-2.0/include -I/usr/include/sysprof-6 -I/usr/include/SDL2 -I/usr/include/dbus-1.0 -I/usr/lib/riscv64-linux-gnu/dbus-1.0/include -I/usr/include/AL -I/usr/include/soundtouch -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c++14 -DHAVE_LIBSOUNDTOUCH -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wno-format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -pthread -D_REENTRANT -MD -MQ libdesmume.a.p/.._.._filter_hq3x.cpp.o -MF libdesmume.a.p/.._.._filter_hq3x.cpp.o.d -o libdesmume.a.p/.._.._filter_hq3x.cpp.o -c ../desmume/src/filter/hq3x.cpp [98/116] c++ -Ilibdesmume.a.p -I. -I../desmume/src/frontend/posix -I../desmume/src -I../desmume/src/libretro-common/include -I../desmume/src/frontend -I/usr/include/glib-2.0 -I/usr/lib/riscv64-linux-gnu/glib-2.0/include -I/usr/include/sysprof-6 -I/usr/include/SDL2 -I/usr/include/dbus-1.0 -I/usr/lib/riscv64-linux-gnu/dbus-1.0/include -I/usr/include/AL -I/usr/include/soundtouch -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c++14 -DHAVE_LIBSOUNDTOUCH -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wno-format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -pthread -D_REENTRANT -MD -MQ libdesmume.a.p/.._.._filter_xbrz.cpp.o -MF libdesmume.a.p/.._.._filter_xbrz.cpp.o.d -o libdesmume.a.p/.._.._filter_xbrz.cpp.o -c ../desmume/src/filter/xbrz.cpp [99/116] c++ -Ilibdesmume.a.p -I. -I../desmume/src/frontend/posix -I../desmume/src -I../desmume/src/libretro-common/include -I../desmume/src/frontend -I/usr/include/glib-2.0 -I/usr/lib/riscv64-linux-gnu/glib-2.0/include -I/usr/include/sysprof-6 -I/usr/include/SDL2 -I/usr/include/dbus-1.0 -I/usr/lib/riscv64-linux-gnu/dbus-1.0/include -I/usr/include/AL -I/usr/include/soundtouch -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c++14 -DHAVE_LIBSOUNDTOUCH -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wno-format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -pthread -D_REENTRANT -MD -MQ libdesmume.a.p/.._.._filter_hq4x.cpp.o -MF libdesmume.a.p/.._.._filter_hq4x.cpp.o.d -o libdesmume.a.p/.._.._filter_hq4x.cpp.o -c ../desmume/src/filter/hq4x.cpp ninja: build stopped: subcommand failed. dh_auto_build: error: cd obj-riscv64-linux-gnu && LC_ALL=C.UTF-8 ninja -j4 -v returned exit code 1 make: *** [debian/rules:9: binary-arch] Error 25 dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit status 2 ``` The full buildad log is here: https://buildd.debian.org/status/fetch.php?pkg=desmume&arch=riscv64&ver=0.9.13-1&stamp=1727522830&raw=0 My solution to this issue: The check_arm_cpu_feature function is used to check CPU features on ARM architecture. Since __ARM_ARCH is specific to ARM and these features are not present on RISC-V, this code needs to be ignored in non-ARM environments. A conditional check can be added to ensure that this ARM feature detection code is not compiled on non-ARM architectures.I have tested this solution locally,and it works well.The debpatch is in the attachment.Please let me know whether this solution can be accepted.
fix_desmume_build_failure_on_riscv.patch
Description: Binary data