AppImageUpdate: Unable to build for armhf
Attempting to build on 32bit systems requires _FILE_OFFSET_BITS=64
(as you do for i386 in the CI). However doing this on armhf results in an attempt to link to non-existent symbols in the system libz.so.1 library
/usr/bin/ld: libzsync2_standalone.a(zsclient.cpp.o): undefined reference to symbol 'gzopen64@@ZLIB_1.2.3.3'
/usr/bin/ld: /lib/arm-linux-gnueabihf/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
the only current solution I have is to build an older version of appimageupdate before gpgme
became a requirement which avoids needing to set _FILE_OFFSET_BITS=64
About this issue
- Original URL
- State: open
- Created 7 months ago
- Comments: 15 (12 by maintainers)
Commits related to this issue
- appimageupdatetool: downgrade to older version avoids needing gpgme which, in order to build, requires _FILE_OFFSET_BITS=64 which causes issues with linking to system libz.so.1 /usr/bin/ld: libzsync... — committed to theofficialgman/MuseScore by theofficialgman 7 months ago
- appimageupdatetool: downgrade to older version avoids needing gpgme which, in order to build, requires _FILE_OFFSET_BITS=64 which causes issues with linking to system libz.so.1 /usr/bin/ld: libzsync... — committed to RomanPudashkin/MuseScore by theofficialgman 7 months ago
Error reproduced. The thing is, I don’t see how libzsync2 was involved in it, though. Likely a misinterpretation due to the just 2(!) mere lines of log shared. People, share actual build logs!
I now set the flag only on the required libappimageupdate in the CMake scripts depending on whether we had to build for a 32-bit target. That fixes the linking issue.
Building works fine for both platforms using our own CI scripts on both Debian bullseye and Ubuntu focal (the latter using the patching explained above). This is about all the debugging I’m able to do now. Please see our reference build environment. Cannot reproduce.
As a side effect, ARM builds will soon be available. The only tool missing is linuxdeploy-plugin-qt.
For zsync2, see https://github.com/AppImageCommunity/zsync2/commit/5731f09813a560c42152adb3ec26000f34a7f0f9. Builds fine with Debian on all architectures, no changes needed. Locally, I changed the Dockerfile to use Ubuntu focal for a single armhf build which also worked. I’ll work on AppImageUpdate next.
We have to use Debian now as it still supports i386 with zsync2 (bionic is EOL, focal does not ship i386). zsync2 builds fine there, so I suspect it might be Ubuntu that is causing problems here. I’ll try and build zsync2 with the new build scripts for Ubuntu focal and armhf. But I don’t expect any problems there either, honestly.
I am going to publish the scripts as soon as possible.