diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/genconfig.sh | 16 | ||||
-rwxr-xr-x | scripts/install.sh | 45 | ||||
-rwxr-xr-x | scripts/make.sh | 15 | ||||
-rwxr-xr-x | scripts/single.sh | 4 |
4 files changed, 40 insertions, 40 deletions
diff --git a/scripts/genconfig.sh b/scripts/genconfig.sh index 5e7d1df2..e9bb5141 100755 --- a/scripts/genconfig.sh +++ b/scripts/genconfig.sh @@ -146,12 +146,10 @@ do [ "${FILE/pending//}" != "$FILE" ] && PENDING="$PENDING $NAME" || WORKING="$WORKING $NAME" -done > .singlemake && -echo -e "clean::\n\trm -f $WORKING $PENDING" >> .singlemake && -echo -e "list:\n\t@echo $(echo $WORKING $PENDING | tr ' ' '\n' | sort | xargs)"\ - >> .singlemake && -echo -e "list_working:\n\t@echo $(echo $WORKING | tr ' ' '\n' | sort | xargs)" \ - >> .singlemake && -echo -e "list_pending:\n\t@echo $(echo $PENDING | tr ' ' '\n' | sort | xargs)" \ - >> .singlemake -) +done && +echo -e "clean::\n\trm -f $WORKING $PENDING" && +echo -e "list:\n\t@echo $(echo $WORKING $PENDING | tr ' ' '\n' | sort | xargs)" && +echo -e "list_working:\n\t@echo $(echo $WORKING | tr ' ' '\n' | sort | xargs)" && +echo -e "list_pending:\n\t@echo $(echo $PENDING | tr ' ' '\n' | sort | xargs)" && +echo -e ".PHONY: $WORKING $PENDING" | sed 's/ \([^ ]\)/ test_\1/g' +) > .singlemake diff --git a/scripts/install.sh b/scripts/install.sh index 8891a314..961341e6 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -4,31 +4,24 @@ source ./configure -# Parse command line arguments. +[ -z "$PREFIX" ] && PREFIX="/usr/toybox" -[ -z "$PREFIX" ] && PREFIX="." +# Parse command line arguments. LONG_PATH="" while [ ! -z "$1" ] do # Create symlinks instead of hardlinks? - [ "$1" == "--symlink" ] && LINK_TYPE="-s" # Uninstall? - - [ "$1" == "--uninstall" ] && UNINSTALL=1 + [ "$1" == "--uninstall" ] && UNINSTALL=Uninstall # Delete destination command if it exists? - [ "$1" == "--force" ] && DO_FORCE="-f" # Use {,usr}/{bin,sbin} paths instead of all files in one directory? - - if [ "$1" == "--long" ] - then - LONG_PATH="bin/" - fi + [ "$1" == "--long" ] && LONG_PATH="bin/" shift done @@ -38,22 +31,24 @@ echo "Compile instlist..." $DEBUG $HOSTCC -I . scripts/install.c -o generated/instlist || exit 1 COMMANDS="$(generated/instlist $LONG_PATH)" -echo "Install commands..." +echo "${UNINSTALL:-Install} commands..." # Copy toybox itself if [ -z "$UNINSTALL" ] then - mkdir -p ${PREFIX}/${LONG_PATH} || exit 1 + mkdir -p "${PREFIX}/${LONG_PATH}" && + rm -f "${PREFIX}/${LONG_PATH}/toybox" && cp toybox ${PREFIX}/${LONG_PATH} || exit 1 else - rm "${PREFIX}/${LONG_PATH}/toybox" 2>/dev/null - rmdir "${PREFIX}/${LONG_PATH}" 2>/dev/null + rm -f "${PREFIX}/${LONG_PATH}/toybox" 2>/dev/null fi -cd "${PREFIX}" +cd "$PREFIX" || exit 1 # Make links to toybox +EXIT=0 + for i in $COMMANDS do # Figure out target of link @@ -64,20 +59,19 @@ do else # Create subdirectory for command to go in (if necessary) - DOTPATH="$(echo $i | sed 's@\(.*/\).*@\1@')" + DOTPATH="$(dirname "$i")"/ if [ -z "$UNINSTALL" ] then mkdir -p "$DOTPATH" || exit 1 - else - rmdir "$DOTPATH" 2>/dev/null fi if [ -z "$LINK_TYPE" ] then - dotpath="bin/" + DOTPATH="bin/" else if [ "$DOTPATH" != "$LONG_PATH" ] then + # For symlinks we need ../../bin style relative paths DOTPATH="$(echo $DOTPATH | sed -e 's@[^/]*/@../@g')"$LONG_PATH else DOTPATH="" @@ -86,7 +80,12 @@ do fi # Create link - [ -z "$UNINSTALL" ] && - ln $DO_FORCE $LINK_TYPE ${DOTPATH}toybox $i || - rm $i 2>/dev/null + if [ -z "$UNINSTALL" ] + then + ln $DO_FORCE $LINK_TYPE ${DOTPATH}toybox $i || EXIT=1 + else + rm -f $i || EXIT=1 + fi done + +exit $EXIT diff --git a/scripts/make.sh b/scripts/make.sh index 8be4c3be..d3dc8eb9 100755 --- a/scripts/make.sh +++ b/scripts/make.sh @@ -7,7 +7,9 @@ export LC_ALL=C set -o pipefail source ./configure -[ -z "$KCONFIG_CONFIG" ] && KCONFIG_CONFIG=".config" +[ -z "$KCONFIG_CONFIG" ] && KCONFIG_CONFIG=.config +[ -z "$OUTNAME" ] && OUTNAME=toybox +UNSTRIPPED="generated/unstripped/$(basename "$OUTNAME")" # Since each cc invocation is short, launch half again as many processes # as we have processors so they don't exit faster than we can start them. @@ -30,7 +32,7 @@ isnewer() echo "Generate headers from toys/*/*.c..." -mkdir -p generated +mkdir -p generated/unstripped if isnewer generated/Config.in toys then @@ -111,7 +113,7 @@ fi # LINK needs optlibs.dat, above -LINK="$(echo $LDOPTIMIZE $LDFLAGS -o toybox_unstripped -Wl,--as-needed $(cat generated/optlibs.dat))" +LINK="$(echo $LDOPTIMIZE $LDFLAGS -o "$UNSTRIPPED" -Wl,--as-needed $(cat generated/optlibs.dat))" genbuildsh > generated/build.sh && chmod +x generated/build.sh || exit 1 echo "Make generated/config.h from $KCONFIG_CONFIG." @@ -293,9 +295,10 @@ done [ $DONE -ne 0 ] && exit 1 do_loudly $BUILD $LFILES $LINK || exit 1 -if [ ! -z "$NOSTRIP" ] || ! do_loudly ${CROSS_COMPILE}strip toybox_unstripped -o toybox +if [ ! -z "$NOSTRIP" ] || + ! do_loudly ${CROSS_COMPILE}strip "$UNSTRIPPED" -o "$OUTNAME" then - echo "strip failed, using unstripped" && cp toybox_unstripped toybox || + echo "strip failed, using unstripped" && cp "$UNSTRIPPED" "$OUTNAME" || exit 1 fi @@ -303,6 +306,6 @@ fi # its output the way SUSv4 suggests it do so. While we're at it, make sure # we don't have the "w" bit set so things like bzip2's "cp -f" install don't # overwrite our binary through the symlink. -do_loudly chmod 555 toybox || exit 1 +do_loudly chmod 555 "$OUTNAME" || exit 1 echo diff --git a/scripts/single.sh b/scripts/single.sh index e3c9ebbd..cadb2fcd 100755 --- a/scripts/single.sh +++ b/scripts/single.sh @@ -38,6 +38,6 @@ do echo "# CONFIG_TOYBOX is not set" >> "$KCONFIG_CONFIG" && grep "CONFIG_TOYBOX_" .config >> "$KCONFIG_CONFIG" && - make && - mv -f toybox $PREFIX$i || exit 1 + rm -f "$PREFIX$i" && + OUTNAME="$PREFIX$i" scripts/make.sh || exit 1 done |