add osxapp target

Not fully tested.
This commit is contained in:
Joey Hess 2012-09-24 19:40:21 -04:00 committed by Joey Hess
parent a40fe3a5d8
commit 37dff15ade
5 changed files with 79 additions and 1 deletions

3
.gitignore vendored
View file

@ -21,3 +21,6 @@ cabal-dev
.dir-locals.el
# OSX related
.DS_Store
ui-macos/git-annex.app/Contents/MacOS/bin
ui-macos/git-annex.app/Contents/MacOS/lib
ui-macos/git-annex.app/Contents/MacOS/git-core

View file

@ -133,4 +133,24 @@ sdist: clean $(mans)
hackage: sdist
@cabal upload dist/*.tar.gz
OSXAPP_BASE=ui-macos/git-annex.app/Contents/MacOS
THIRDPARTY_BINS=git curl lsof xargs rsync uuid wget xargs \
sha1sum sha224sum sha256sum sha384sum sha512sum
osxapp: $(bins)
install -d "$(OSXAPP_BASE)/bin"
for bin in git-annex $(THIRDPARTY_BINS); do \
cp "$$(which "$$bin")" "$(OSXAPP_BASE)/bin/" || echo "$$bin not available; skipping"; \
done
ln -sf git-annex "$(OSXAPP_BASE)/bin/git-annex-shell"
install -d "$(OSXAPP_BASE)/git-core"
(cd "$(shell git --exec-path)" && tar c .) | (cd "$(OSXAPP_BASE)"/git-core && tar x)
install -d "$(OSXAPP_BASE)/lib"
for lib in $$(otool -L "$(OSXAPP_BASE)"/bin/* "$(OSXAPP_BASE)"/git-core/* | egrep '^ ' | cut -d ' ' -f 1 | sed 's/^ //' | sort | uniq); do \
base=$$(basename "$$lib"); \
cp "$$lib" "$(OSXAPP_BASE)/lib/$$base"; \
done
.PHONY: $(bins) test install

View file

@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>git-annex</string>
<string>git-annex-webapp</string>
<key>NSHumanReadableCopyright</key>
<string>GPL 3</string>
<key>CFBundleGetInfoString</key>

View file

@ -0,0 +1,11 @@
#!/bin/sh
base="$(dirname $0)"
if [ ! -d "$base" ]; then
echo "** cannot find base directory (I seem to be $0)" >&2
exit 1
fi
if [ ! -e "$base/runshell" ]; then
echo "** cannot find $base/runshell" >&2
exit 1
fi
"$base/runshell" git-annex webapp "$@"

View file

@ -0,0 +1,44 @@
#!/bin/sh
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, so our overloaded libs don't get used with
# system binaries.
# Also avoids issues with out of date system binaries.
PATH=$base/bin:$PATH
export PATH
DYLD_LIBRARY_PATH=$base/lib:$DYLD_LIBRARY_PATH
export DYLD_LIBRARY_PATH
GIT_EXEC_PATH=$base/git-core
export GIT_EXEC_PATH
if [ "$1" ]; then
cmd="$1"
shift 1
"$cmd" "$@"
else
$SHELL
fi