X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=applets%2Finstall.sh;h=f6c097e57e9b1527eee68bef96b7ec1a723932c4;hb=e32b6503e75d5bcbf8ffff69cafb09523ff2b482;hp=1cd97bba32db395f67dd1ae62adde5c038162882;hpb=81514ecca37fdd0d158377287a45db8aaa926d67;p=oweals%2Fbusybox.git diff --git a/applets/install.sh b/applets/install.sh index 1cd97bba3..f6c097e57 100755 --- a/applets/install.sh +++ b/applets/install.sh @@ -3,19 +3,35 @@ export LC_ALL=POSIX export LC_CTYPE=POSIX -prefix=${1} +prefix=$1 if [ -z "$prefix" ]; then - echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks]" - exit 1; + echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks/--binaries/--scriptwrapper]" + exit 1 fi + +# Source the configuration +. ./.config + h=`sort busybox.links | uniq` + +sharedlib_dir="0_lib" + +linkopts="" +scriptwrapper="n" +binaries="n" cleanup="0" +noclobber="0" case "$2" in - --hardlinks) linkopts="-f";; - --symlinks) linkopts="-fs";; - --cleanup) cleanup="1";; - "") h="";; - *) echo "Unknown install option: $2"; exit 1;; + --hardlinks) linkopts="-f";; + --symlinks) linkopts="-fs";; + --binaries) binaries="y";; + --scriptwrapper) scriptwrapper="y";swrapall="y";; + --sw-sh-hard) scriptwrapper="y";linkopts="-f";; + --sw-sh-sym) scriptwrapper="y";linkopts="-fs";; + --cleanup) cleanup="1";; + --noclobber) noclobber="1";; + "") h="";; + *) echo "Unknown install option: $2"; exit 1;; esac if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then @@ -27,12 +43,13 @@ if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then libdir=/lib fi - mkdir -p $prefix/$libdir || exit 1 + mkdir -p "$prefix/$libdir" || exit 1 for i in $DO_INSTALL_LIBS; do - rm -f $prefix/$libdir/$i || exit 1 - if [ -f $i ]; then - cp -a $i $prefix/$libdir/ || exit 1 - chmod 0644 $prefix/$libdir/$i || exit 1 + rm -f "$prefix/$libdir/$i" || exit 1 + if [ -f "$i" ]; then + echo " Installing $i to the target at $prefix/$libdir/" + cp -pPR "$i" "$prefix/$libdir/" || exit 1 + chmod 0644 "$prefix/$libdir/`basename $i`" || exit 1 fi done fi @@ -40,49 +57,79 @@ fi if [ "$cleanup" = "1" ] && [ -e "$prefix/bin/busybox" ]; then inode=`ls -i "$prefix/bin/busybox" | awk '{print $1}'` sub_shell_it=` - cd "$prefix" - for d in usr/sbin usr/bin sbin bin ; do - pd=$PWD - if [ -d "$d" ]; then - cd $d - ls -iL . | grep "^ *$inode" | awk '{print $2}' | env -i xargs rm -f - fi - cd "$pd" - done - ` + cd "$prefix" + for d in usr/sbin usr/bin sbin bin; do + pd=$PWD + if [ -d "$d" ]; then + cd "$d" + ls -iL . | grep "^ *$inode" | awk '{print $2}' | env -i xargs rm -f + fi + cd "$pd" + done + ` + exit 0 fi -rm -f $prefix/bin/busybox || exit 1 -mkdir -p $prefix/bin || exit 1 -install -m 755 busybox $prefix/bin/busybox || exit 1 +rm -f "$prefix/bin/busybox" || exit 1 +mkdir -p "$prefix/bin" || exit 1 +install -m 755 busybox "$prefix/bin/busybox" || exit 1 -for i in $h ; do - appdir=`dirname $i` - mkdir -p $prefix/$appdir || exit 1 - if [ "$2" = "--hardlinks" ]; then - bb_path="$prefix/bin/busybox" +for i in $h; do + appdir=`dirname "$i"` + app=`basename "$i"` + mkdir -p "$prefix/$appdir" || exit 1 + if [ "$scriptwrapper" = "y" ]; then + if [ "$swrapall" != "y" ] && [ "$i" = "/bin/sh" ]; then + ln $linkopts busybox "$prefix/$i" || exit 1 + else + rm -f "$prefix/$i" + echo "#!/bin/busybox" >"$prefix/$i" + chmod +x "$prefix/$i" + fi + echo " $prefix/$i" + elif [ "$binaries" = "y" ]; then + # Copy the binary over rather + if [ -e $sharedlib_dir/$app ]; then + if [ "$noclobber" = "0" ] || [ ! -e "$prefix/$i" ]; then + echo " Copying $sharedlib_dir/$app to $prefix/$i" + cp -pPR $sharedlib_dir/$app $prefix/$i || exit 1 + else + echo " $prefix/$i already exists" + fi + else + echo "Error: Could not find $sharedlib_dir/$app" + exit 1 + fi 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 + 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 + if [ "$noclobber" = "0" ] || [ ! -e "$prefix/$i" ]; then + echo " $prefix/$i -> $bb_path" + ln $linkopts "$bb_path" "$prefix/$i" || exit 1 + else + echo " $prefix/$i already exists" + fi fi - echo " $prefix$i -> $bb_path" - ln $linkopts $bb_path $prefix$i || exit 1 done exit 0