111 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| export LC_ALL=POSIX
 | |
| export LC_CTYPE=POSIX
 | |
| 
 | |
| prefix=${1}
 | |
| if [ -z "$prefix" ]; then
 | |
| 	echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks/--scriptwrapper]"
 | |
| 	exit 1;
 | |
| fi
 | |
| h=`sort busybox.links | uniq`
 | |
| scriptwrapper="n"
 | |
| cleanup="0"
 | |
| noclobber="0"
 | |
| case "$2" in
 | |
| 	--hardlinks)     linkopts="-f";;
 | |
| 	--symlinks)      linkopts="-fs";;
 | |
| 	--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
 | |
| 	# get the target dir for the libs
 | |
| 	# assume it starts with lib
 | |
| 	libdir=$($CC -print-file-name=libc.so | \
 | |
| 		 sed -n 's%^.*\(/lib[^\/]*\)/libc.so%\1%p')
 | |
| 	if test -z "$libdir"; then
 | |
| 		libdir=/lib
 | |
| 	fi
 | |
| 
 | |
| 	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 -pPR $i $prefix/$libdir/ || exit 1
 | |
| 			chmod 0644 $prefix/$libdir/$i || exit 1
 | |
| 		fi
 | |
| 	done
 | |
| 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
 | |
| 	`
 | |
| 	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
 | |
| 
 | |
| for i in $h; do
 | |
| 	appdir=`dirname $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"
 | |
| 	else
 | |
| 		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
 | |
| done
 | |
| 
 | |
| exit 0
 |