#!/usr/bin/env bash
#
# Script to install host system binaries along with required libraries.
-# Refer to the --help output for more information.
#
-# Copyright (C) 2012 Jo-Philipp Wich <jow@openwrt.org>
+# Copyright (C) 2012-2013 Jo-Philipp Wich <jo@mein.io>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
LDD=""
done
-[ -n "$LDD" -a -x "$LDD" ] || {
- echo "Unable to find working ldd" >&2
- exit 4
-}
+[ -n "$LDD" -a -x "$LDD" ] || LDD=
for BIN in "$@"; do
[ -n "$BIN" -a -x "$BIN" -a -n "$DIR" ] || {
LDSO=""
echo "Bundling ${BIN##*/}"
- for token in $("$LDD" "$BIN" 2>/dev/null); do
- case "$token" in */*.so*)
- case "$token" in
- *ld-*.so*) LDSO="${token##*/}" ;;
- *) echo " * lib: ${token##*/}" ;;
- esac
-
- dest="$DIR/bundled/lib/${token#*/lib*/}"
- ddir="${dest%/*}"
-
- [ -f "$token" -a ! -f "$dest" ] && {
- _md "$ddir"
- _cp "$token" "$dest"
-
- case "$token" in */tls/*.so*)
- _cp "${token%/tls/*}/${token##*/}" "$DIR/bundled/lib/${token##*/}"
- ;; esac
- }
- ;; esac
- done
+ [ -n "$LDD" ] && {
+ for token in $("$LDD" "$BIN" 2>/dev/null); do
+ case "$token" in */*.so*)
+ case "$token" in
+ *ld-*.so*) LDSO="${token##*/}" ;;
+ *) echo " * lib: ${token##*/}" ;;
+ esac
+
+ dest="$DIR/bundled/lib/${token##*/}"
+ ddir="${dest%/*}"
+
+ [ -f "$token" -a ! -f "$dest" ] && {
+ _md "$ddir"
+ _cp "$token" "$dest"
+ }
+ ;; esac
+ done
+ }
_md "$DIR"
if [ -n "$LDSO" ]; then
_cp "$BIN" "$DIR/bundled/${BIN##*/}"
- [ -x "$DIR/bundled/run.sh" ] || {
- cat <<-EOF > "$DIR/bundled/run.sh"
+ RUN="${LDSO#ld-}"; RUN="run-${RUN%%.so*}.sh"
+
+ [ -x "$DIR/bundled/$RUN" ] || {
+ cat <<-EOF > "$DIR/bundled/$RUN"
#!/usr/bin/env bash
dir="\$(dirname "\$0")"
bin="\$(basename "\$0")"
exec -a "\$0" "\$dir/bundled/lib/$LDSO" --library-path "\$dir/bundled/lib" "\$dir/bundled/\$bin" "\$@"
EOF
- chmod ${VERBOSE:+-v} 0755 "$DIR/bundled/run.sh"
+ chmod ${VERBOSE:+-v} 0755 "$DIR/bundled/$RUN"
}
- _ln "./bundled/run.sh" "$DIR/${BIN##*/}"
+ _ln "./bundled/$RUN" "$DIR/${BIN##*/}"
# is a static executable or non-elf binary
else
- echo " * not dynamically linked"
+ [ -n "$LDD" ] && echo " * not dynamically linked"
_cp "$BIN" "$DIR/${BIN##*/}"
fi
done