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
 |