aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile9
-rwxr-xr-xapplets/install.sh44
-rwxr-xr-xinstall.sh44
3 files changed, 80 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index f4df9c702..a17225c0f 100644
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,9 @@ VERSION := 0.46
BUILDTIME := $(shell TZ=UTC date --utc "+%Y.%m.%d-%H:%M%z")
export VERSION
+# If you want a static binary, turn this on.
+DOSTATIC = false
+
# Set the following to `true' to make a debuggable build.
# Leave this set to `false' for production use.
# eg: `make DODEBUG=true tests'
@@ -37,9 +40,6 @@ DODEBUG = false
# Do not enable this for production builds...
DODMALLOC = false
-# If you want a static binary, turn this on.
-DOSTATIC = false
-
# If you are running a cross compiler, you may want to set this
# to something more interesting...
CROSS =
@@ -182,6 +182,9 @@ distclean: clean
install: busybox busybox.links
./install.sh $(PREFIX)
+install-hardlinks: busybox busybox.links
+ ./install.sh $(PREFIX) --hardlinks
+
dist release: distclean doc
cd ..; \
rm -rf busybox-$(VERSION); \
diff --git a/applets/install.sh b/applets/install.sh
index 65190f59d..236f62a56 100755
--- a/applets/install.sh
+++ b/applets/install.sh
@@ -1,21 +1,51 @@
#!/bin/sh
set -e
-
+set -x
if [ "$1" = "" ]; then
echo "No installation directory, aborting."
exit 1;
fi
-
+if [ "$2" = "--hardlinks" ]; then
+ linkopts="-f"
+else
+ linkopts="-fs"
+fi
+prefix=$1
h=`sort busybox.links | uniq`
-for i in $h ; do
- echo " $1$i -> /bin/busybox"
- mkdir -p $1/`echo $i | sed -e 's/\/[^\/]*$//' `
- ln -fs /bin/busybox $1$i
-done
+
rm -f $1/bin/busybox
mkdir -p $1/bin
install -m 755 busybox $1/bin/busybox
+for i in $h ; do
+ appdir=`dirname $i`
+ mkdir -p $prefix/$appdir
+ if [ "$2" = "--hardlinks" ]; then
+ bb_path="$prefix/bin/busybox"
+ else
+ case "$appdir" in
+ /)
+ bb_path="bin/busybox"
+ ;;
+ /bin)
+ bb_path="busybox"
+ ;;
+ /sbin)
+ bb_path="../bin/busybox"
+ ;;
+ /usr/bin|/usr/sbin)
+ bb_path="../../bin/busybox"
+ ;;
+ *)
+ echo "Unknown installation directory: $appdir"
+ exit 1
+ ;;
+ esac
+ fi
+ echo " $prefix$i -> /bin/busybox"
+ ln $linkopts $bb_path $prefix$i
+done
+
exit 0
diff --git a/install.sh b/install.sh
index 65190f59d..236f62a56 100755
--- a/install.sh
+++ b/install.sh
@@ -1,21 +1,51 @@
#!/bin/sh
set -e
-
+set -x
if [ "$1" = "" ]; then
echo "No installation directory, aborting."
exit 1;
fi
-
+if [ "$2" = "--hardlinks" ]; then
+ linkopts="-f"
+else
+ linkopts="-fs"
+fi
+prefix=$1
h=`sort busybox.links | uniq`
-for i in $h ; do
- echo " $1$i -> /bin/busybox"
- mkdir -p $1/`echo $i | sed -e 's/\/[^\/]*$//' `
- ln -fs /bin/busybox $1$i
-done
+
rm -f $1/bin/busybox
mkdir -p $1/bin
install -m 755 busybox $1/bin/busybox
+for i in $h ; do
+ appdir=`dirname $i`
+ mkdir -p $prefix/$appdir
+ if [ "$2" = "--hardlinks" ]; then
+ bb_path="$prefix/bin/busybox"
+ else
+ case "$appdir" in
+ /)
+ bb_path="bin/busybox"
+ ;;
+ /bin)
+ bb_path="busybox"
+ ;;
+ /sbin)
+ bb_path="../bin/busybox"
+ ;;
+ /usr/bin|/usr/sbin)
+ bb_path="../../bin/busybox"
+ ;;
+ *)
+ echo "Unknown installation directory: $appdir"
+ exit 1
+ ;;
+ esac
+ fi
+ echo " $prefix$i -> /bin/busybox"
+ ln $linkopts $bb_path $prefix$i
+done
+
exit 0