b30656acea
With this, I can use jimmy's autobuilt dmg, which fails with the other two variables due to containing two versions of libiconv.
55 lines
1.4 KiB
Bash
Executable file
55 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
# Runs a shell command (or interactive shell) using the binaries and
|
|
# libraries bundled with this app.
|
|
|
|
set -e
|
|
|
|
base="$(dirname $0)"
|
|
|
|
if [ ! -d "$base" ]; then
|
|
echo "** cannot find base directory (I seem to be $0)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -e "$base/bin/git-annex" ]; then
|
|
echo "** base directory $base does not contain bin/git-annex" >&2
|
|
exit 1
|
|
fi
|
|
if [ ! -e "$base/bin/git" ]; then
|
|
echo "** base directory $base does not contain bin/git" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Get absolute path to base, to avoid breakage when things change directories.
|
|
orig="$(pwd)"
|
|
cd "$base"
|
|
base="$(pwd)"
|
|
cd "$orig"
|
|
|
|
# Put our binaries first, to avoid issues with out of date or incompatable
|
|
# system binaries.
|
|
PATH=$base/bin:$PATH
|
|
export PATH
|
|
|
|
# This makes the linker first look in the library directories bundled
|
|
# in this app. Only if it fails to find a library there will a system
|
|
# library be used.
|
|
#
|
|
# This seems to work better than DYLD_LIBRARY_PATH, which can force
|
|
# the wrong version of a library to be used, if the app bundles two
|
|
# different versions of a single library. And it seems to work better
|
|
# than DYLD_FALLBACK_LIBRARY_PATH, which fails to override old system
|
|
# versions of libraries when a program in the app needs a newer version.
|
|
DYLD_ROOT_PATH=$base
|
|
export DYLD_ROOT_PATH
|
|
|
|
GIT_EXEC_PATH=$base/git-core
|
|
export GIT_EXEC_PATH
|
|
|
|
if [ "$1" ]; then
|
|
cmd="$1"
|
|
shift 1
|
|
exec "$cmd" "$@"
|
|
else
|
|
$SHELL
|
|
fi
|