From 51154bacbe34d160f089c4ab4bbb51766030233d Mon Sep 17 00:00:00 2001
From: Eric Andersen <andersen@codepoet.org>
Date: Thu, 20 Jul 2000 21:57:11 +0000
Subject: Adjusted install.sh to use relative symlinks, and to optionally
 create hardlinks.  Added a makefile target to create hardlinks.  -Erik

---
 Makefile           |  9 ++++++---
 applets/install.sh | 44 +++++++++++++++++++++++++++++++++++++-------
 install.sh         | 44 +++++++++++++++++++++++++++++++++++++-------
 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
-- 
cgit v1.2.3-55-g6feb