duckstation/scripts/packaging/appimage/inject-libc-apprun.sh

30 lines
756 B
Bash
Executable File

#!/usr/bin/env bash
REQUIRED_GLIBC_VERSION="__REQ_GLIBC_VERSION__"
this_dir="$(readlink -f "$(dirname "$0")")"
APPBIN="${this_dir}/usr/bin/__APPNAME__"
RUNTIME_DIR="${this_dir}/libc-runtime"
LOADER_BIN="${this_dir}/usr/bin/ld-linux"
GLIBC_VERSION=$(ldd --version | head -1 | sed -e 's/.* \([0-9.]\)/\1/')
echo "Detected glibc version ${GLIBC_VERSION}."
if [[ -z "${GLIBC_VERSION}" || ! "${GLIBC_VERSION}" < "${REQUIRED_GLIBC_VERSION}" ]]; then
echo "Using system libc/libstdc++."
exec "${APPBIN}" "$@"
fi
echo "Using bundled libc/libstdc++ from ${RUNTIME_DIR}."
if [ -z "$LD_LIBRARY_PATH" ]; then
export LD_LIBRARY_PATH="${RUNTIME_DIR}"
else
export LD_LIBRARY_PATH="${RUNTIME_DIR}:${LD_LIBRARY_PATH}"
fi
exec "${LOADER_BIN}" "${APPBIN}" "$@"