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

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);
}
}
}