Bug#1086345: desmume:FTBFS:build failure (error: ‘AT_HWCAP’ undeclared )
Yue Gui
yuemeng.gui at gmail.com
Wed Oct 30 04:25:57 GMT 2024
Source: desmume
Version: 0.9.13-1
Severity: serious
Tags: FTBFS, patch
User: debian-riscv at lists.debian.org
Usertags: riscv64
X-Debbugs-Cc: debian-riscv at 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.
More information about the Pkg-games-devel
mailing list