Files
qdl/.github
Igor Opaniuk 1b9e6894b9 github: package self-contained binaries on Linux and macOS
The release artifacts were not self-contained. qdl links libxml2 and
libzip (and, on Linux, their transitive closure), but packaging copied
only a subset of those libraries, so qdl failed to start on hosts
without them installed. Inspecting the uploaded artifacts:

  Artifact         Missing                       Status
  ---------------  ----------------------------  ------
  ubuntu-22-x64    libxml2.so.2, libzip.so.4     broken
  ubuntu-22-arm64  libxml2.so.2, libzip.so.4     broken
  ubuntu-24-x64    libxml2.so.2, libzip.so.4     broken
  ubuntu-24-arm64  libxml2.so.2, libzip.so.4     broken
  macos-arm64      libzip.5.dylib (Homebrew)     broken
  macos-intel      libzip.5.dylib (Homebrew)     broken
  windows-x64      -                             ok
  windows-arm64    -                             ok

On Linux only libusb was copied; libxml2 and libzip (plus their closure:
libz, liblzma, libzstd, libbz2, libcrypto, libudev) were left to the
host. On macOS libzip was never handled, so the binary kept an absolute
Homebrew path to libzip.5.dylib. Windows already bundled the full set.

Bundle the complete dependency closure on Linux (every ldd entry except
the C runtime and dynamic loader) and set an $ORIGIN RUNPATH on the
binary and each bundled library, since RUNPATH is not inherited by
transitively-loaded libraries.

On macOS, use dylibbundler to recursively copy the non-system dylibs and
rewrite the load commands to @executable_path, replacing the
hand-maintained install_name_tool calls that missed libzip.

Both jobs now fail if any non-system library remains unresolved after
packaging.

Signed-off-by: Igor Opaniuk <igor.opaniuk@oss.qualcomm.com>
2026-06-27 20:49:13 -05:00
..