#!/bin/sh export LC_ALL=POSIX export LC_CTYPE=POSIX prefix=$1 if [ -z "$prefix" ]; then echo "usage: applets/install.sh DESTINATION TYPE [OPTS ...]" echo " TYPE is one of: --symlinks --hardlinks --binaries --scriptwrapper --none" echo " OPTS is one or more of: --cleanup --noclobber" exit 1 fi shift # Keep only remaining options # Source the configuration . ./.config h=`sort busybox.links | uniq` sharedlib_dir="0_lib" linkopts="" scriptwrapper="n" binaries="n" cleanup="0" noclobber="0" while [ ${#} -gt 0 ]; do case "$1" in --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";; --none) h="";; *) echo "Unknown install option: $1"; exit 1;; esac shift done if [ -n "$DO_INSTALL_LIBS" ] && [ x"$DO_INSTALL_LIBS" != x"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 libdir=/lib mkdir -p "$prefix/$libdir" || exit 1 for i in $DO_INSTALL_LIBS; do 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 if [ x"$cleanup" = x"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"` app=`basename "$i"` if [ x"$noclobber" = x"1" ] && ([ -e "$prefix/$i" ] || [ -h "$prefix/$i" ]); then echo " $prefix/$i already exists" continue fi if [ x"$scriptwrapper" = x"y" ]; then if [ x"$swrapall" != x"y" ] && [ x"$i" = x"/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 [ x"$binaries" = x"y" ]; then # Copy the binary over rather if [ -e "$sharedlib_dir/$app" ]; then echo " Copying $sharedlib_dir/$app to $prefix/$i" cp -pPR "$sharedlib_dir/$app" "$prefix/$i" || exit 1 else echo "Error: Could not find $sharedlib_dir/$app" exit 1 fi else if [ x"$linkopts" = x"-f" ]; 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 echo " $prefix/$i -> $bb_path" ln $linkopts "$bb_path" "$prefix/$i" || exit 1 fi done exit 0