bundle_deps.sh
Raw
1#!/bin/bash
2programs=(ldd mkdir cd cp grep echo chmod awk xargs)
3
4for prog in "${programs[@]}"; do
5 command -v "$prog" >/dev/null 2>&1 || { echo >&2 "This script requires $prog but it's not installed. Aborting."; exit 1;}
6done
7
8if [ $# -ne 2 ]; then
9 echo "Usage: $0 BINARY DESTINATION"
10else
11 BINARY=$(realpath "$1")
12 DESTINATION=$(realpath "$2")
13 SCRIPTFILENAME="$DESTINATION/start_$(basename "$BINARY").sh"
14
15read -r -d '' SCRIPTFILE << EOM
16LD_LIBRARY_PATH=./libs ./$(basename "$BINARY")
17EOM
18
19 mkdir -p "$DESTINATION" && mkdir -p "$DESTINATION"/libs && cd "$DESTINATION" && cp "$BINARY" "$DESTINATION"
20 ldd "$BINARY" | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' "$DESTINATION"/libs &&
21 echo "$SCRIPTFILE" > "$SCRIPTFILENAME" && chmod +x "$SCRIPTFILENAME"
22fi