mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-24 20:02:35 +03:00
fix: busybox static link detection on Alpine/musl
On musl-based systems (Alpine), ldd returns exit code 0 for static binaries, unlike glibc which returns 1. This causes install_busybox() to reject all busybox binaries as "dynamically linked" on Alpine. Fix by also accepting binaries whose executable name contains "static" (i.e. busybox-static, busybox.static), which are the first two candidates checked by the function. The generic "busybox" fallback still relies on the ldd return code check.
This commit is contained in:
parent
2b4a05eedd
commit
3dd4184193
@ -79,8 +79,10 @@ class Docker(BaseManager):
|
|||||||
stderr=asyncio.subprocess.DEVNULL
|
stderr=asyncio.subprocess.DEVNULL
|
||||||
)
|
)
|
||||||
stdout, _ = await proc.communicate()
|
stdout, _ = await proc.communicate()
|
||||||
if proc.returncode == 1:
|
if proc.returncode == 1 or "static" in busybox_exec:
|
||||||
# ldd returns 1 if the file is not a dynamic executable
|
# ldd returns 1 if the file is not a dynamic executable
|
||||||
|
# on Alpine/musl, ldd returns 0 even for static binaries,
|
||||||
|
# so also trust binaries named busybox-static or busybox.static
|
||||||
log.info(f"Installing busybox from '{busybox_path}' to '{dst_busybox}'")
|
log.info(f"Installing busybox from '{busybox_path}' to '{dst_busybox}'")
|
||||||
shutil.copy2(busybox_path, dst_busybox, follow_symlinks=True)
|
shutil.copy2(busybox_path, dst_busybox, follow_symlinks=True)
|
||||||
return
|
return
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user