1#!/bin/sh 2 3export LC_ALL=POSIX 4export LC_CTYPE=POSIX 5 6prefix=${1} 7if [ -z "$prefix" ]; then 8 echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks]" 9 exit 1; 10fi 11h=`sort busybox.links | uniq` 12cleanup="0" 13noclobber="0" 14case "$2" in 15 --hardlinks) linkopts="-f";; 16 --symlinks) linkopts="-fs";; 17 --cleanup) cleanup="1";; 18 --noclobber) noclobber="1";; 19 "") h="";; 20 *) echo "Unknown install option: $2"; exit 1;; 21esac 22 23if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then 24 # get the target dir for the libs 25 # assume it starts with lib 26 libdir=$($CC -print-file-name=libc.so | \ 27 sed -n 's%^.*\(/lib[^\/]*\)/libc.so%\1%p') 28 if test -z "$libdir"; then 29 libdir=/lib 30 fi 31 32 mkdir -p $prefix/$libdir || exit 1 33 for i in $DO_INSTALL_LIBS; do 34 rm -f $prefix/$libdir/$i || exit 1 35 if [ -f $i ]; then 36 cp -a $i $prefix/$libdir/ || exit 1 37 chmod 0644 $prefix/$libdir/$i || exit 1 38 fi 39 done 40fi 41 42if [ "$cleanup" = "1" ] && [ -e "$prefix/bin/busybox" ]; then 43 inode=`ls -i "$prefix/bin/busybox" | awk '{print $1}'` 44 sub_shell_it=` 45 cd "$prefix" 46 for d in usr/sbin usr/bin sbin bin; do 47 pd=$PWD 48 if [ -d "$d" ]; then 49 cd $d 50 ls -iL . | grep "^ *$inode" | awk '{print $2}' | env -i xargs rm -f 51 fi 52 cd "$pd" 53 done 54 ` 55fi 56 57rm -f $prefix/bin/busybox || exit 1 58mkdir -p $prefix/bin || exit 1 59install -m 755 busybox $prefix/bin/busybox || exit 1 60 61for i in $h; do 62 appdir=`dirname $i` 63 mkdir -p $prefix/$appdir || exit 1 64 if [ "$2" = "--hardlinks" ]; then 65 bb_path="$prefix/bin/busybox" 66 else 67 case "$appdir" in 68 /) 69 bb_path="bin/busybox" 70 ;; 71 /bin) 72 bb_path="busybox" 73 ;; 74 /sbin) 75 bb_path="../bin/busybox" 76 ;; 77 /usr/bin|/usr/sbin) 78 bb_path="../../bin/busybox" 79 ;; 80 *) 81 echo "Unknown installation directory: $appdir" 82 exit 1 83 ;; 84 esac 85 fi 86 if [ "$noclobber" = "0" ] || [ ! -e "$prefix$i" ]; then 87 echo " $prefix$i -> $bb_path" 88 ln $linkopts $bb_path $prefix$i || exit 1 89 else 90 echo " $prefix$i already exists" 91 fi 92done 93 94exit 0 95