#!/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` linkopts="" 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