summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--Makefile20
-rw-r--r--ui-macos/git-annex.app/Contents/Info.plist2
-rwxr-xr-xui-macos/git-annex.app/Contents/MacOS/git-annex-webapp11
-rwxr-xr-xui-macos/git-annex.app/Contents/MacOS/runshell44
5 files changed, 79 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 4dafe012f..fbc2ec581 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/Makefile b/Makefile
index 95766429e..8531be963 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/ui-macos/git-annex.app/Contents/Info.plist b/ui-macos/git-annex.app/Contents/Info.plist
index 36973a498..ced9948da 100644
--- a/ui-macos/git-annex.app/Contents/Info.plist
+++ b/ui-macos/git-annex.app/Contents/Info.plist
@@ -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>
diff --git a/ui-macos/git-annex.app/Contents/MacOS/git-annex-webapp b/ui-macos/git-annex.app/Contents/MacOS/git-annex-webapp
new file mode 100755
index 000000000..dc5c556b4
--- /dev/null
+++ b/ui-macos/git-annex.app/Contents/MacOS/git-annex-webapp
@@ -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 "$@"
diff --git a/ui-macos/git-annex.app/Contents/MacOS/runshell b/ui-macos/git-annex.app/Contents/MacOS/runshell
new file mode 100755
index 000000000..e6c932720
--- /dev/null
+++ b/ui-macos/git-annex.app/Contents/MacOS/runshell
@@ -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