Android app: Avoid using hard links to app's lib directory, which is sometimes on a different filesystem than the data directory.

Assumes symlinks work on all android. If not, this would need to be adapted
to try both. This worked for me.
This commit is contained in:
Joey Hess 2013-05-23 13:54:49 -04:00
parent cf96a69490
commit 4713f0c89d
4 changed files with 13 additions and 7 deletions

2
debian/changelog vendored
View file

@ -7,6 +7,8 @@ git-annex (4.20130522) UNRELEASED; urgency=low
* XMPP: Send pings and use them to detect when contact with the server
is lost.
* hook special remote: Added combined hook program support.
* Android app: Avoid using hard links to app's lib directory, which
is sometimes on a different filesystem than the data directory.
-- Joey Hess <joeyh@debian.org> Tue, 21 May 2013 18:22:46 -0400

View file

@ -64,7 +64,7 @@ build: start
$(GITTREE)/libexec/git-core/git-web--browse
# Most of git is in one multicall binary, but a few important
# commands are still shell scripts. Those are put into
# a tarball, along with a list of all the hard links that should be
# a tarball, along with a list of all the links that should be
# set up.
cd $(GITTREE) && mkdir -p links
cd $(GITTREE) && find -samefile bin/git -not -wholename ./bin/git > links/git

View file

@ -27,7 +27,7 @@ buildtree () {
if $cmd test -e "$base/bin/$prog"; then
$cmd rm -f "$base/bin/$prog"
fi
$cmd ln "$base/lib/lib.$prog.so" "$base/bin/$prog"
$cmd ln -s "$base/lib/lib.$prog.so" "$base/bin/$prog"
done
$cmd --install $base/bin
@ -41,7 +41,7 @@ buildtree () {
if $cmd test -e "$base/$link"; then
$cmd rm -f "$base/$link"
fi
$cmd ln "$base/bin/$prog" "$base/$link"
$cmd ln -s "$base/bin/$prog" "$base/$link"
done
$cmd rm -f "$base/links/$prog"
done

View file

@ -47,11 +47,15 @@ main () {
}
}
/* If this is the first run, set up busybox link. */
/* If this is the first run, set up busybox symlink,
* which allows busybox to run. */
if (stat("busybox", &st_buf) != 0) {
if (link("lib/lib.busybox.so", "busybox") != 0) {
perror("link busybox");
exit(1);
if (symlink("lib/lib.busybox.so", "busybox") != 0) {
/* Just in case! */
if (link("lib/lib.busybox.so", "busybox") != 0) {
perror("link busybox");
exit(1);
}
}
}