Repository navigation
fix(linux-deploy): skip all glibc libraries when bundling - #375
Conversation
On Arch Linux, ldd reports glibc as /usr/lib/libc.so.6. The copy_ldd_deps() skip list only matched multiarch (/usr/lib/*/) and /usr/lib64/ paths, so libc.so.6 and libm.so.6 were bundled into the runtime directory while the loader was not. With RPATH $ORIGIN the game then mixes the bundled libc with the host loader, which breaks startup after a host glibc update or on another machine. The other glibc libraries (libmvec, libresolv, libutil, libanl, libnsl.so.1, libnss_*, libthread_db and a few more) were missing from the skip list entirely, so they were bundled on every distro when a dependency needed them, for example libmvec.so.1 via libx265. Add /usr/lib/<lib>.so.* patterns for libc, libm, libpthread, librt and libdl, and */<lib> patterns for the remaining glibc libraries, in the deploy, bundle and AppImage scripts for both Zero Hour and Generals. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
On Arch Linux, ldd reports glibc as /usr/lib/libc.so.6. The copy_ldd_deps() skip list only matched multiarch (/usr/lib/*/) and /usr/lib64/ paths, so libc.so.6 and libm.so.6 were bundled into the runtime directory while the loader was not. With RPATH $ORIGIN the game then mixes the bundled libc with the host loader, which breaks startup after a host glibc update or on another machine.
The other glibc libraries (libmvec, libresolv, libutil, libanl, libnsl.so.1, libnss_*, libthread_db and a few more) were missing from the skip list entirely, so they were bundled on every distro when a dependency needed them, for example libmvec.so.1 via libx265.
Add /usr/lib/.so.* patterns for libc, libm, libpthread, librt and libdl, and */ patterns for the remaining glibc libraries, in the deploy, bundle and AppImage scripts for both Zero Hour and Generals.
Summary by CodeRabbit