Bug#1011367: warzone2100: ftbfs on riscv64 arch (undefined references to `__atomic_exchange_1')

Bo YU tsu.yubo at gmail.com
Fri May 20 23:26:24 BST 2022


Source: warzone2100
Version: 4.2.7
Severity: normal
Tags: ftbfs, patch
User: debian-riscv at lists.debian.org
Usertags: riscv64

Dear Maintainer,

The warzone2100 has a ftbfs issue:

```
FAILED: src/warzone2100 
: && /usr/bin/c++ -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -fstack-protector-strong -fstack-clash-protection -O2 -g -DNDEBUG -Wl,-z,relro -Wl,-z,now    -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now src/CMakeFiles/warzone2100.dir/3rdparty/physfs_memoryio.cpp.o src/CMakeFiles/warzone2100.dir/3rdparty/propertymatcher.cpp.o src/CMakeFiles/warzone2100.dir/action.cpp.o src/CMakeFiles/warzone2100.dir/activity.cpp.o src/CMakeFiles/warzone2100.dir/advvis.cpp.o src/CMakeFiles/warzone2100.dir/ai.cpp.o src/CMakeFiles/warzone2100.dir/animation.cpp.o src/CMakeFiles/warzone2100.dir/astar.cpp.o src/CMakeFiles/warzone2100.dir/atmos.cpp.o src/CMakeFiles/warzone2100.dir/aud.cpp.o src/CMakeFiles/warzone2100.dir/baseobject.cpp.o src/CMakeFiles/warzone2100.dir/bucket3d.cpp.o src/CMakeFiles/warzone2100.dir/challenge.cpp.o src/CMakeFiles/warzone2100.dir/chat.cpp.o src/CMakeFiles/warzone2100.dir/cheat.cpp.o src/CMakeFiles/warzone2100.dir/clparse.cpp.o src/CMakeFiles/warzone2100.dir/cmddroid.cpp.o src/CMakeFiles/warzone2100.dir/combat.cpp.o src/CMakeFiles/warzone2100.dir/component.cpp.o src/CMakeFiles/warzone2100.dir/configuration.cpp.o src/CMakeFiles/warzone2100.dir/console.cpp.o src/CMakeFiles/warzone2100.dir/data.cpp.o src/CMakeFiles/warzone2100.dir/design.cpp.o src/CMakeFiles/warzone2100.dir/difficulty.cpp.o src/CMakeFiles/warzone2100.dir/display.cpp.o src/CMakeFiles/warzone2100.dir/display3d.cpp.o src/CMakeFiles/warzone2100.dir/droid.cpp.o src/CMakeFiles/warzone2100.dir/edit3d.cpp.o src/CMakeFiles/warzone2100.dir/effects.cpp.o src/CMakeFiles/warzone2100.dir/faction.cpp.o src/CMakeFiles/warzone2100.dir/feature.cpp.o src/CMakeFiles/warzone2100.dir/fpath.cpp.o src/CMakeFiles/warzone2100.dir/frontend.cpp.o src/CMakeFiles/warzone2100.dir/game.cpp.o src/CMakeFiles/warzone2100.dir/gateway.cpp.o src/CMakeFiles/warzone2100.dir/geometry.cpp.o src/CMakeFiles/warzone2100.dir/group.cpp.o src/CMakeFiles/warzone2100.dir/hci.cpp.o src/CMakeFiles/warzone2100.dir/hci/build.cpp.o src/CMakeFiles/warzone2100.dir/hci/commander.cpp.o src/CMakeFiles/warzone2100.dir/hci/manufacture.cpp.o src/CMakeFiles/warzone2100.dir/hci/objects_stats.cpp.o src/CMakeFiles/warzone2100.dir/hci/research.cpp.o src/CMakeFiles/warzone2100.dir/ingameop.cpp.o src/CMakeFiles/warzone2100.dir/init.cpp.o src/CMakeFiles/warzone2100.dir/input/context.cpp.o src/CMakeFiles/warzone2100.dir/input/debugmappings.cpp.o src/CMakeFiles/warzone2100.dir/input/keyconfig.cpp.o src/CMakeFiles/warzone2100.dir/input/manager.cpp.o src/CMakeFiles/warzone2100.dir/input/mapping.cpp.o src/CMakeFiles/warzone2100.dir/intdisplay.cpp.o src/CMakeFiles/warzone2100.dir/intelmap.cpp.o src/CMakeFiles/warzone2100.dir/intimage.cpp.o src/CMakeFiles/warzone2100.dir/intorder.cpp.o src/CMakeFiles/warzone2100.dir/keybind.cpp.o src/CMakeFiles/warzone2100.dir/keyedit.cpp.o src/CMakeFiles/warzone2100.dir/level_lexer.cpp.o src/CMakeFiles/warzone2100.dir/levels.cpp.o src/CMakeFiles/warzone2100.dir/lighting.cpp.o src/CMakeFiles/warzone2100.dir/loadsave.cpp.o src/CMakeFiles/warzone2100.dir/loop.cpp.o src/CMakeFiles/warzone2100.dir/main.cpp.o src/CMakeFiles/warzone2100.dir/map.cpp.o src/CMakeFiles/warzone2100.dir/mapdisplay.cpp.o src/CMakeFiles/warzone2100.dir/mapgrid.cpp.o src/CMakeFiles/warzone2100.dir/mechanics.cpp.o src/CMakeFiles/warzone2100.dir/message.cpp.o src/CMakeFiles/warzone2100.dir/miscimd.cpp.o src/CMakeFiles/warzone2100.dir/mission.cpp.o src/CMakeFiles/warzone2100.dir/modding.cpp.o src/CMakeFiles/warzone2100.dir/move.cpp.o src/CMakeFiles/warzone2100.dir/multibot.cpp.o src/CMakeFiles/warzone2100.dir/multigifts.cpp.o src/CMakeFiles/warzone2100.dir/multiint.cpp.o src/CMakeFiles/warzone2100.dir/multijoin.cpp.o src/CMakeFiles/warzone2100.dir/multilimit.cpp.o src/CMakeFiles/warzone2100.dir/multilobbycommands.cpp.o src/CMakeFiles/warzone2100.dir/multimenu.cpp.o src/CMakeFiles/warzone2100.dir/multiopt.cpp.o src/CMakeFiles/warzone2100.dir/multiplay.cpp.o src/CMakeFiles/warzone2100.dir/multistat.cpp.o src/CMakeFiles/warzone2100.dir/multistruct.cpp.o src/CMakeFiles/warzone2100.dir/multisync.cpp.o src/CMakeFiles/warzone2100.dir/musicmanager.cpp.o src/CMakeFiles/warzone2100.dir/nethelpers.cpp.o src/CMakeFiles/warzone2100.dir/notifications.cpp.o src/CMakeFiles/warzone2100.dir/objects.cpp.o src/CMakeFiles/warzone2100.dir/objmem.cpp.o src/CMakeFiles/warzone2100.dir/oprint.cpp.o src/CMakeFiles/warzone2100.dir/order.cpp.o src/CMakeFiles/warzone2100.dir/pointtree.cpp.o src/CMakeFiles/warzone2100.dir/power.cpp.o src/CMakeFiles/warzone2100.dir/projectile.cpp.o src/CMakeFiles/warzone2100.dir/qtscript.cpp.o src/CMakeFiles/warzone2100.dir/quickjs_backend.cpp.o src/CMakeFiles/warzone2100.dir/radar.cpp.o src/CMakeFiles/warzone2100.dir/random.cpp.o src/CMakeFiles/warzone2100.dir/raycast.cpp.o src/CMakeFiles/warzone2100.dir/research.cpp.o src/CMakeFiles/warzone2100.dir/scores.cpp.o src/CMakeFiles/warzone2100.dir/selection.cpp.o src/CMakeFiles/warzone2100.dir/seqdisp.cpp.o src/CMakeFiles/warzone2100.dir/spectatorwidgets.cpp.o src/CMakeFiles/warzone2100.dir/stats.cpp.o src/CMakeFiles/warzone2100.dir/stdinreader.cpp.o src/CMakeFiles/warzone2100.dir/structure.cpp.o src/CMakeFiles/warzone2100.dir/template.cpp.o src/CMakeFiles/warzone2100.dir/terrain.cpp.o src/CMakeFiles/warzone2100.dir/text.cpp.o src/CMakeFiles/warzone2100.dir/texture.cpp.o src/CMakeFiles/warzone2100.dir/titleui/gamefind.cpp.o src/CMakeFiles/warzone2100.dir/titleui/msgbox.cpp.o src/CMakeFiles/warzone2100.dir/titleui/old.cpp.o src/CMakeFiles/warzone2100.dir/titleui/passbox.cpp.o src/CMakeFiles/warzone2100.dir/titleui/protocol.cpp.o src/CMakeFiles/warzone2100.dir/titleui/titleui.cpp.o src/CMakeFiles/warzone2100.dir/transporter.cpp.o src/CMakeFiles/warzone2100.dir/updatemanager.cpp.o src/CMakeFiles/warzone2100.dir/urlhelpers.cpp.o src/CMakeFiles/warzone2100.dir/urlrequest.cpp.o src/CMakeFiles/warzone2100.dir/version.cpp.o src/CMakeFiles/warzone2100.dir/visibility.cpp.o src/CMakeFiles/warzone2100.dir/warcam.cpp.o src/CMakeFiles/warzone2100.dir/warzoneconfig.cpp.o src/CMakeFiles/warzone2100.dir/wavecast.cpp.o src/CMakeFiles/warzone2100.dir/wrappers.cpp.o src/CMakeFiles/warzone2100.dir/wzapi.cpp.o src/CMakeFiles/warzone2100.dir/wzcrashhandlingproviders.cpp.o src/CMakeFiles/warzone2100.dir/wzpropertyproviders.cpp.o src/CMakeFiles/warzone2100.dir/wzscriptdebug.cpp.o src/CMakeFiles/warzone2100.dir/integrations/wzdiscordrpc.cpp.o -o src/warzone2100  lib/exceptionhandler/libexception-handler.a  lib/gamelib/libgamelib.a  lib/wzmaplib/libwzmaplib.a  lib/ivis_opengl/libivis-opengl.a  lib/netplay/libnetplay.a  lib/sdl/libsdl-backend.a  lib/framework/libframework.a  lib/sequence/libsequence.a  lib/sound/libsound.a  lib/widget/libwidget.a  3rdparty/launchinfo/liblaunchinfo.a  3rdparty/EmbeddedJSONSignature/libEmbeddedJSONSignature.a  3rdparty/fmt/libfmt.a  3rdparty/quickjs/libquickjs.a  /usr/lib/riscv64-linux-gnu/libcurl.so  3rdparty/re2/libre2.a  /usr/lib/riscv64-linux-gnu/libsqlite3.so  3rdparty/SQLiteCpp/libSQLiteCpp.a  3rdparty/discord-rpc/src/libdiscord-rpc.a  /usr/lib/riscv64-linux-gnu/libminiupnpc.so  /usr/lib/riscv64-linux-gnu/libz.so  /usr/lib/riscv64-linux-gnu/libSDL2.so  /usr/lib/riscv64-linux-gnu/libSDL2main.a  /usr/lib/riscv64-linux-gnu/libtheoradec.so  /usr/lib/riscv64-linux-gnu/libogg.so  /usr/lib/riscv64-linux-gnu/libvorbis.so  /usr/lib/riscv64-linux-gnu/libvorbisfile.so  /usr/lib/riscv64-linux-gnu/libopenal.so  lib/ivis_opengl/libivis-opengl.a  /usr/lib/riscv64-linux-gnu/libpng.so  /usr/lib/riscv64-linux-gnu/libz.so  /usr/lib/riscv64-linux-gnu/libharfbuzz.so  /usr/lib/riscv64-linux-gnu/libfreetype.so  3rdparty/libglad.a  lib/framework/libframework.a  /usr/lib/riscv64-linux-gnu/libphysfs.so  /usr/lib/riscv64-linux-gnu/libsodium.so  3rdparty/utf8proc/libutf8proc.a  /usr/lib/riscv64-linux-gnu/libsodium.so  -lpthread  /usr/lib/riscv64-linux-gnu/libsqlite3.so  -ldl  -lpthread && :
/usr/bin/ld: 3rdparty/discord-rpc/src/libdiscord-rpc.a(discord_rpc.cpp.o): in function `.L0 ':
./debian/build/./3rdparty/discord-rpc/src/discord_rpc.cpp:357: undefined reference to `__atomic_exchange_1'
/usr/bin/ld: 3rdparty/discord-rpc/src/libdiscord-rpc.a(discord_rpc.cpp.o): in function `Discord_Shutdown':
./debian/build/./3rdparty/discord-rpc/src/discord_rpc.cpp:358: undefined reference to `__atomic_exchange_1'
/usr/bin/ld: 3rdparty/discord-rpc/src/libdiscord-rpc.a(discord_rpc.cpp.o): in function `IoThreadHolder::Notify()':
./debian/build/./3rdparty/discord-rpc/src/discord_rpc.cpp:102: undefined reference to `__atomic_exchange_1'
/usr/bin/ld: 3rdparty/discord-rpc/src/libdiscord-rpc.a(discord_rpc.cpp.o): in function `.L0 ':
./debian/build/./3rdparty/discord-rpc/src/discord_rpc.cpp:373: undefined reference to `__atomic_exchange_1'
/usr/bin/ld: ./debian/build/./3rdparty/discord-rpc/src/discord_rpc.cpp:401: undefined reference to `__atomic_exchange_1'
/usr/bin/ld: 3rdparty/discord-rpc/src/libdiscord-rpc.a(discord_rpc.cpp.o):/usr/include/c++/11/bits/atomic_base.h:499: more undefined references to `__atomic_exchange_1' follow
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
make[1]: *** [debian/rules:21: override_dh_auto_build] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:8: build-arch] Error 2
dpkg-buildpackage: error: debian/rules build-arch subprocess returned exit status 2
```

The full buildd log is here:

https://buildd.debian.org/status/fetch.php?pkg=warzone2100&arch=riscv64&ver=4.2.7-1&stamp=1651923447&raw=0

The patch attached is to fix the issue:

```
Build Architecture: riscv64
Build Type: binary
Build-Space: 3012284
Build-Time: 3435
Distribution: unstable
Host Architecture: riscv64
Install-Time: 183
Job: /home/vimer/05/25_warzone2100/warzone2100_4.2.7-1.dsc
Lintian: warn
Machine Architecture: riscv64
Package: warzone2100
Package-Time: 3794
Source-Version: 4.2.7-1
Space: 3012284
Status: successful
Version: 4.2.7-1
--------------------------------------------------------------------------------
Finished at 2022-05-19T09:13:28Z
Build needed 01:03:14, 3012284k disk space
```

Please consider apply it in next upload, thank you.

BR,
Bo
-------------- next part --------------
fix ftbfs on riscv64 arch

Bo YU <stu.yubo at gmail.com>
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -657,6 +657,7 @@
 SET(_ALL_SOURCE 1)
 SET(_GNU_SOURCE 1)
 SET(_POSIX_PTHREAD_SEMANTICS 1)
+SET(THREADS_PREFER_PTHREAD_FLAG ON)
 SET(_TANDEM_SOURCE 1)
 if(CMAKE_SYSTEM_NAME MATCHES "SunOS") # Solaris / SunOS
 	SET(__EXTENSIONS__ 1)


More information about the Pkg-games-devel mailing list