From 51154bacbe34d160f089c4ab4bbb51766030233d Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Thu, 20 Jul 2000 21:57:11 +0000 Subject: [PATCH] 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