commit c87b8c6

chld  ·  2026-08-29 20:16:06 +0000 UTC
parent 45ba4cc
remove gnuslop/toybox
4 files changed,  +0, -756
+0, -734
  1@@ -1,734 +0,0 @@
  2-This patch is the work of E5ten; Landley doesn't want toybox to be POSIX because
  3-he's writing his own sh (toysh), and somehow that means the build system
  4-shouldn't be buildable outside of toybox bootstrapping itself. 
  5-https://github.com/landley/toybox/pull/182
  6-diff --git a/configure b/configure
  7-index 0b6501fc..23dd687d 100755
  8---- a/configure
  9-+++ b/configure
 10-@@ -1,10 +1,10 @@
 11--#!/bin/bash
 12-+#!/bin/sh
 13- 
 14- # This sets environment variables used by scripts/make.sh
 15- 
 16- # People run ./configure out of habit, so do "defconfig" for them.
 17- 
 18--if [ "$(basename "$0")" == configure ]
 19-+if [ "${0##*/}" = configure ]
 20- then
 21-   echo "Assuming you want 'make defconfig', but you should probably check the README."
 22-   make defconfig
 23-diff --git a/scripts/bloatcheck b/scripts/bloatcheck
 24-index fff4690f..30492c64 100755
 25---- a/scripts/probes/bloatcheck
 26-+++ b/scripts/probes/bloatcheck
 27-@@ -1,4 +1,4 @@
 28--#!/bin/bash
 29-+#!/bin/sh
 30- 
 31- if [ $# -ne 2 ]
 32- then
 33-@@ -40,7 +40,7 @@ do_bloatcheck()
 34-     fi
 35- 
 36-     SIZE=$(printf "%d" "0x$b")
 37--    if [ "$a" == "-" ]
 38-+    if [ "$a" = "-" ]
 39-     then
 40-       OLD=$(($OLD+$SIZE))
 41-       SIZE=$((-1*$SIZE))
 42-diff --git a/scripts/change.sh b/scripts/change.sh
 43-index 99dcfde9..b1fa62a0 100755
 44---- a/scripts/change.sh
 45-+++ b/scripts/change.sh
 46-@@ -1,4 +1,4 @@
 47--#!/bin/bash
 48-+#!/bin/sh
 49- 
 50- # build each command as a standalone executable
 51- 
 52-@@ -14,8 +14,8 @@ mkdir -p "$PREFIX" || exit 1
 53- 
 54- for i in $(generated/instlist | egrep -vw "sh|help")
 55- do
 56--  echo -n " $i" &&
 57-+  printf ' %s' "$i" &&
 58-   scripts/single.sh $i > /dev/null 2>$PREFIX/${i}.bad &&
 59--    rm $PREFIX/${i}.bad || echo -n '*'
 60-+    rm $PREFIX/${i}.bad || printf '*'
 61- done
 62- echo
 63-diff --git a/scripts/findglobals.sh b/scripts/findglobals.sh
 64-index 2c63164b..9455bc61 100755
 65---- a/scripts/probes/findglobals
 66-+++ b/scripts/probes/findglobals
 67-@@ -1,4 +1,4 @@
 68--#!/bin/bash
 69-+#!/bin/sh
 70- 
 71- # Quick and dirty check to see if anybody's leaked global variables.
 72- # We should have this, toy_list, toybuf, and toys.
 73-diff --git a/scripts/genconfig.sh b/scripts/genconfig.sh
 74-index 955c82cd..b5cff559 100755
 75---- a/scripts/genconfig.sh
 76-+++ b/scripts/genconfig.sh
 77-@@ -1,11 +1,11 @@
 78--#!/bin/bash
 79-+#!/bin/sh
 80- 
 81- # This has to be a separate file from scripts/make.sh so it can be called
 82- # before menuconfig.  (It's called again from scripts/make.sh just to be sure.)
 83- 
 84- mkdir -p generated
 85- 
 86--source scripts/portability.sh
 87-+. scripts/portability.sh
 88- 
 89- probecc()
 90- {
 91-@@ -18,8 +18,8 @@ probesymbol()
 92- {
 93-   probecc $2 2>/dev/null && DEFAULT=y || DEFAULT=n
 94-   rm a.out 2>/dev/null
 95--  echo -e "config $1\n\tbool" || exit 1
 96--  echo -e "\tdefault $DEFAULT\n" || exit 1
 97-+  printf 'config %s\n\tbool' || exit 1
 98-+  printf '\tdefault %s\n\n' || exit 1
 99- }
100- 
101- probeconfig()
102-@@ -28,7 +28,7 @@ probeconfig()
103-   # llvm produces its own really stupid warnings about things that aren't wrong,
104-   # and although you can turn the warning off, gcc reacts badly to command line
105-   # arguments it doesn't understand. So probe.
106--  [ -z "$(probecc -Wno-string-plus-int <<< \#warn warn 2>&1 | grep string-plus-int)" ] &&
107-+  [ -z "$(echo '#warn' | probecc -Wno-string-plus-int warn 2>&1 | grep string-plus-int)" ] &&
108-     echo -Wno-string-plus-int >> generated/cflags
109- 
110-   # Probe for container support on target
111-@@ -92,7 +92,7 @@ EOF
112-     #include <unistd.h>
113-     int main(int argc, char *argv[]) { return fork(); }
114- EOF
115--  echo -e '\tdepends on !TOYBOX_FORCE_NOMMU'
116-+  printf '\tdepends on !TOYBOX_FORCE_NOMMU\n'
117- 
118-   probesymbol TOYBOX_PRLIMIT << EOF
119-     #include <sys/types.h>
120-@@ -155,17 +155,18 @@ PENDING=
121- toys toys/*/*.c | (
122- while IFS=":" read FILE NAME
123- do
124--  [ "$NAME" == help ] && continue
125--  [ "$NAME" == install ] && continue
126--  [ "$NAME" == sh ] && FILE="toys/*/*.c"
127--  echo -e "$NAME: $FILE *.[ch] lib/*.[ch]\n\tscripts/single.sh $NAME\n"
128--  echo -e "test_$NAME:\n\tscripts/test.sh $NAME\n"
129--  [ "${FILE/pending//}" != "$FILE" ] &&
130-+  [ "$NAME" = help ] && continue
131-+  [ "$NAME" = install ] && continue
132-+  [ "$NAME" = sh ] && FILE="toys/*/*.c"
133-+  printf '%s: %s *.[ch] lib/*.[ch]\n\tscripts/single.sh %s\n\n' \
134-+      "$NAME" "$FILE" "$NAME"
135-+  printf 'test_%s:\n\tscripts/test.sh \n\n' "$NAME" "$NAME"
136-+  [ "${FILE#*pending}" != "$FILE" ] &&
137-     PENDING="$PENDING $NAME" ||
138-     WORKING="$WORKING $NAME"
139- done &&
140--echo -e "clean::\n\t@rm -f $WORKING $PENDING" &&
141--echo -e "list:\n\t@echo $(echo $WORKING | tr ' ' '\n' | sort | xargs)" &&
142--echo -e "list_pending:\n\t@echo $(echo $PENDING | tr ' ' '\n' | sort | xargs)" &&
143--echo -e ".PHONY: $WORKING $PENDING" | $SED 's/ \([^ ]\)/ test_\1/g'
144-+printf 'clean::\n\t@rm -f %s %s\n' "$WORKING" "$PENDING" &&
145-+printf 'list:\n\t@echo %s\n' "$(echo $WORKING | tr ' ' '\n' | sort | xargs)" &&
146-+printf 'list_pending:\n\t@echo %s\n' "$(echo $PENDING | tr ' ' '\n' | sort | xargs)" &&
147-+echo ".PHONY: $WORKING $PENDING" | $SED 's/ \([^ ]\)/ test_\1/g'
148- ) > .singlemake
149-diff --git a/scripts/install.sh b/scripts/install.sh
150-index 648a2411..0ee232cd 100755
151---- a/scripts/install.sh
152-+++ b/scripts/install.sh
153-@@ -1,8 +1,8 @@
154--#!/bin/bash
155-+#!/bin/sh
156- 
157- # Grab default values for $CFLAGS and such.
158- 
159--source ./configure
160-+. ./configure
161- 
162- [ -z "$PREFIX" ] && PREFIX="/usr/toybox"
163- 
164-@@ -12,19 +12,19 @@ LONG_PATH=""
165- while [ ! -z "$1" ]
166- do
167-   # Create symlinks instead of hardlinks?
168--  [ "$1" == "--symlink" ] && LINK_TYPE="-s"
169-+  [ "$1" = "--symlink" ] && LINK_TYPE="-s"
170- 
171-   # Uninstall?
172--  [ "$1" == "--uninstall" ] && UNINSTALL=Uninstall
173-+  [ "$1" = "--uninstall" ] && UNINSTALL=Uninstall
174- 
175-   # Delete destination command if it exists?
176--  [ "$1" == "--force" ] && DO_FORCE="-f"
177-+  [ "$1" = "--force" ] && DO_FORCE="-f"
178- 
179-   # Use {,usr}/{bin,sbin} paths instead of all files in one directory?
180--  [ "$1" == "--long" ] && LONG_PATH="bin/"
181-+  [ "$1" = "--long" ] && LONG_PATH="bin/"
182- 
183-   # Symlink host toolchain binaries to destination to create cross compile $PATH
184--  [ "$1" == "--airlock" ] && AIRLOCK=1
185-+  [ "$1" = "--airlock" ] && AIRLOCK=1
186- 
187-   shift
188- done
189-@@ -131,7 +131,7 @@ do
190-       fi
191- 
192-       X=$[$X+1]
193--      FALLBACK="$PREFIX/fallback-$X"
194-+      FALLBACK="$PREFIX/fallback-$((X += 1))"
195-     done
196- 
197-     if [ ! -f "$PREFIX/$i" ]
198-diff --git a/scripts/make.sh b/scripts/make.sh
199-index 5b2d5d81..68fcbc2d 100755
200---- a/scripts/make.sh
201-+++ b/scripts/make.sh
202-@@ -1,4 +1,4 @@
203--#!/bin/bash
204-+#!/bin/sh
205- 
206- # Grab default values for $CFLAGS and such.
207- 
208-@@ -16,8 +16,7 @@ fi
209- 
210- export LANG=c
211- export LC_ALL=C
212--set -o pipefail
213--source scripts/portability.sh
214-+. scripts/portability.sh
215- 
216- [ -z "$KCONFIG_CONFIG" ] && KCONFIG_CONFIG=.config
217- [ -z "$OUTNAME" ] && OUTNAME=toybox"${TARGET:+-$TARGET}"
218-@@ -31,7 +30,7 @@ UNSTRIPPED="generated/unstripped/$(basename "$OUTNAME")"
219- DOTPROG=
220- do_loudly()
221- {
222--  [ ! -z "$V" ] && echo "$@" || echo -n "$DOTPROG"
223-+  [ ! -z "$V" ] && echo "$@" || printf '%s' "$DOTPROG"
224-   "$@"
225- }
226- 
227-@@ -60,7 +59,7 @@ fi
228- 
229- if isnewer generated/newtoys.h toys
230- then
231--  echo -n "generated/newtoys.h "
232-+  printf 'generated/newtoys.h '
233- 
234-   echo "USE_TOYBOX(NEWTOY(toybox, NULL, TOYFLAG_STAYROOT))" > generated/newtoys.h
235-   $SED -n -e 's/^USE_[A-Z0-9_]*(/&/p' toys/*/*.c \
236-@@ -83,9 +82,9 @@ BUILD="$(echo ${CROSS_COMPILE}${CC} $CFLAGS -I . $OPTIMIZE $GITHASH)"
237- LIBFILES="$(ls lib/*.c | grep -v lib/help.c)"
238- TOYFILES="lib/help.c main.c $TOYFILES"
239- 
240--if [ "${TOYFILES/pending//}" != "$TOYFILES" ]
241-+if [ "${TOYFILES#*pending}" != "$TOYFILES" ]
242- then
243--  echo -e "\n\033[1;31mwarning: using unfinished code from toys/pending\033[0m"
244-+  printf '\n\033[1;31mwarning: using unfinished code from toys/pending\033[0m\n'
245- fi
246- 
247- genbuildsh()
248-@@ -106,10 +105,10 @@ genbuildsh()
249-   echo '$BUILD $FILES $LINK'
250- }
251- 
252--if ! cmp -s <(genbuildsh 2>/dev/null | head -n 6 ; echo LINK="'"$LDOPTIMIZE $LDFLAGS) \
253--          <(head -n 7 generated/build.sh 2>/dev/null | $SED '7s/ -o .*//')
254-+if [ "$(genbuildsh 2>/dev/null | head -n 6 ; echo LINK="'"$LDOPTIMIZE $LDFLAGS)" != \
255-+          "$(head -n 7 generated/build.sh 2>/dev/null | $SED '7s/ -o .*//')" ]
256- then
257--  echo -n "Library probe"
258-+  printf 'Library probe'
259- 
260-   # We trust --as-needed to remove each library if we don't use any symbols
261-   # out of it, this loop is because the compiler has no way to ignore a library
262-@@ -122,7 +121,7 @@ then
263-     echo "int main(int argc, char *argv[]) {return 0;}" | \
264-     ${CROSS_COMPILE}${CC} $CFLAGS $LDFLAGS -xc - -o generated/libprobe $LDASNEEDED -l$i > /dev/null 2>/dev/null &&
265-     echo -l$i >> generated/optlibs.dat
266--    echo -n .
267-+    printf .
268-   done
269-   rm -f generated/libprobe
270-   echo
271-@@ -185,7 +184,7 @@ make_flagsh()
272- 
273-     echo "#define NEWTOY(aa,bb,cc) aa $I bb"
274-     echo '#define OLDTOY(...)'
275--    if [ "$I" == A ]
276-+    if [ "$I" = A ]
277-     then
278-       cat generated/config.h
279-     else
280-@@ -215,13 +214,13 @@ make_flagsh()
281- 
282- if isnewer generated/flags.h toys "$KCONFIG_CONFIG"
283- then
284--  echo -n "generated/flags.h "
285-+  printf 'generated/flags.h '
286-   make_flagsh
287- fi
288- 
289- # Extract global structure definitions and flag definitions from toys/*/*.c
290- 
291--function getglobals()
292-+getglobals()
293- {
294-   for i in toys/*/*.c
295-   do
296-@@ -230,13 +229,13 @@ function getglobals()
297-             -e 's/^GLOBALS(/struct '"$NAME"'_data {/' \
298-             -e 's/^)/};/' -e 'p' $i)"
299- 
300--    [ ! -z "$DATA" ] && echo -e "// $i\n\n$DATA\n"
301-+    [ ! -z "$DATA" ] && printf '// %s\n\n%s\n\n' "$i" "$DATA"
302-   done
303- }
304- 
305- if isnewer generated/globals.h toys
306- then
307--  echo -n "generated/globals.h "
308-+  printf 'generated/globals.h '
309-   GLOBSTRUCT="$(getglobals)"
310-   (
311-     echo "$GLOBSTRUCT"
312-@@ -255,7 +254,7 @@ fi
313- 
314- if isnewer generated/tags.h toys
315- then
316--  echo -n "generated/tags.h "
317-+  printf 'generated/tags.h '
318- 
319-   $SED -n '/TAGGED_ARRAY(/,/^)/{s/.*TAGGED_ARRAY[(]\([^,]*\),/\1/;p}' \
320-     toys/*/*.c lib/*.c | generated/mktags > generated/tags.h
321-@@ -273,7 +272,7 @@ fi
322- 
323- [ ! -z "$NOBUILD" ] && exit 0
324- 
325--echo -n "Compile $OUTNAME"
326-+printf 'Compile $OUTNAME'
327- [ ! -z "$V" ] && echo
328- DOTPROG=.
329- 
330-@@ -286,7 +285,7 @@ if [ ! -e "$X" ] || [ ! -z "$(find toys -name "*.h" -newer "$X")" ]
331- then
332-   rm -rf generated/obj && mkdir -p generated/obj || exit 1
333- else
334--  rm -f generated/obj/{main,lib_help}.o || exit 1
335-+  rm -f generated/obj/main.o generated/obj/lib_help.o || exit 1
336- fi
337- 
338- # build each generated/obj/*.o file in parallel
339-@@ -299,9 +298,10 @@ CLICK=
340- 
341- for i in $LIBFILES click $TOYFILES
342- do
343--  [ "$i" == click ] && CLICK=1 && continue
344-+  [ "$i" = click ] && CLICK=1 && continue
345- 
346--  X=${i/lib\//lib_}
347-+  X="$i"
348-+  [ "${X#*lib/}" = "$X" ] || X="${X%%lib/*}lib_${X#*lib/}"
349-   X=${X##*/}
350-   OUT="generated/obj/${X%%.c}.o"
351-   LNKFILES="$LNKFILES $OUT"
352-@@ -309,8 +309,9 @@ do
353-   # $LIBFILES doesn't need to be rebuilt if older than .config, $TOYFILES does
354-   # ($TOYFILES contents can depend on CONFIG symbols, lib/*.c never should.)
355- 
356--  [ "$OUT" -nt "$i" ] && [ -z "$CLICK" -o "$OUT" -nt "$KCONFIG_CONFIG" ] &&
357--    continue
358-+  [ -n "$(find "$OUT" -newer "$i" 2>/dev/null)" ] &&
359-+      { [ -z "$CLICK" ] || [ -n "$(find "$OUT" -newer "$KCONFIG_CONFIG" 2>/dev/null)" ]; } &&
360-+      continue
361- 
362-   do_loudly $BUILD -c $i -o $OUT &
363-   PENDING="$PENDING $!"
364-diff --git a/scripts/mcm-buildall.sh b/scripts/mcm-buildall.sh
365-index cac41372..4075872f 100755
366---- a/scripts/mcm-buildall.sh
367-+++ b/scripts/mcm-buildall.sh
368-@@ -1,4 +1,4 @@
369--#!/bin/bash
370-+#!/bin/sh
371- 
372- # Script to build all cross and native compilers supported by musl-libc.
373- # This isn't directly used by toybox, but is useful for testing.
374-@@ -22,7 +22,7 @@ BOOTSTRAP=i686-linux-musl
375- 
376- [ -z "$OUTPUT" ] && OUTPUT="$PWD/ccc"
377- 
378--if [ "$1" == clean ]
379-+if [ "$1" = clean ]
380- then
381-   rm -rf "$OUTPUT" host-* *.log
382-   make clean
383-@@ -38,7 +38,7 @@ make_toolchain()
384-     OUTPUT="$PWD/host-$TARGET"
385-     EXTRASUB=y
386-   else
387--    if [ "$TYPE" == static ]
388-+    if [ "$TYPE" = static ]
389-     then
390-       HOST=$BOOTSTRAP
391-       [ "$TARGET" = "$HOST" ] && LP="$PWD/host-$HOST/bin:$LP"
392-@@ -53,7 +53,9 @@ make_toolchain()
393-          echo "no $TARGET-cc in $LP" && return
394-     fi
395-     COMMON_CONFIG="CC=\"$HOST-gcc -static --static\" CXX=\"$HOST-g++ -static --static\""
396--    export -n HOST
397-+    _HOST="$HOST"
398-+    unset HOST
399-+    HOST="$_HOST"
400-     OUTPUT="$OUTPUT/${RENAME:-$TARGET}-$TYPE"
401-   fi
402- 
403-@@ -66,7 +68,7 @@ make_toolchain()
404-   # Change title bar to say what we're currently building
405- 
406-   echo === building $TARGET-$TYPE
407--  echo -en "\033]2;$TARGET-$TYPE\007"
408-+  printf '\033]2;$TARGET-$TYPE\007' "$TARGET" "$TYPE"
409- 
410-   rm -rf build/"$TARGET" "$OUTPUT" &&
411-   [ -z "$CPUS" ] && CPUS=$(($(nproc)+1))
412-@@ -76,10 +78,10 @@ make_toolchain()
413-     COMMON_CONFIG="CFLAGS=\"$CFLAGS -g0 -Os\" CXXFLAGS=\"$CXXFLAGS -g0 -Os\" LDFLAGS=\"$LDFLAGS -s\" $COMMON_CONFIG" \
414-     install -j$CPUS || exit 1
415-   set +x
416--  echo -e '#ifndef __MUSL__\n#define __MUSL__ 1\n#endif' \
417-+  printf '#ifndef __MUSL__\n#define __MUSL__ 1\n#endif\n' \
418-     >> "$OUTPUT/${EXTRASUB:+$TARGET/}include/features.h"
419- 
420--  if [ ! -z "$RENAME" ] && [ "$TYPE" == cross ]
421-+  if [ ! -z "$RENAME" ] && [ "$TYPE" = cross ]
422-   then
423-     CONTEXT="output/$RENAME-cross/bin"
424-     for i in "$CONTEXT/$TARGET-"*
425-@@ -93,7 +95,7 @@ make_toolchain()
426-   # $BOOTSTRAP arch
427-   [ -z "$TYPE" ] && make clean
428- 
429--  if [ "$TYPE" == native ]
430-+  if [ "$TYPE" = native ]
431-   then
432-     # gcc looks in "../usr/include" but not "/bin/../include" (relative to the
433-     # executable). That means /usr/bin/gcc looks in /usr/usr/include, so that's
434-@@ -108,14 +110,14 @@ make_toolchain()
435- # Expand compressed target into binutils/gcc "tuple" and call make_toolchain
436- make_tuple()
437- {
438--  PART1=${1/:*/}
439--  PART3=${1/*:/}
440--  PART2=${1:$((${#PART1}+1)):$((${#1}-${#PART3}-${#PART1}-2))}
441-+  PART1=${1%%:*}
442-+  PART3=${1##*:}
443-+  PART2=${1#${PART1}:} PART2+${PART2%:${PART3}}
444- 
445-   # Do we need to rename this toolchain after building it?
446--  RENAME=${PART1/*@/}
447--  [ "$RENAME" == "$PART1" ] && RENAME=
448--  PART1=${PART1/@*/}
449-+  RENAME=${PART1##*@}
450-+  [ "$RENAME" = "$PART1" ] && RENAME=
451-+  PART1=${PART1%%@*}
452-   TARGET=${PART1}-linux-musl${PART2} 
453- 
454-   [ -z "$NOCLEAN" ] && rm -rf build
455-diff --git a/scripts/portability.sh b/scripts/portability.sh
456-index 618022c7..63dee932 100644
457---- a/scripts/portability.sh
458-+++ b/scripts/portability.sh
459-@@ -1,6 +1,6 @@
460- # sourced to find alternate names for things
461- 
462--source configure
463-+. ./configure
464- 
465- if [ -z "$(command -v "${CROSS_COMPILE}${CC}")" ]
466- then
467-diff --git a/mkroot/record-commands b/mkroot/record-commands
468-index 8410966b..f49bcff9 100755
469---- a/mkroot/record-commands
470-+++ b/mkroot/record-commands
471-@@ -1,4 +1,4 @@
472--#!/bin/bash
473-+#!/bin/sh
474- 
475- # Set up command recording wrapper
476- 
477-diff --git a/scripts/single.sh b/scripts/single.sh
478-index c40c6bcf..473bbdd4 100755
479---- a/scripts/single.sh
480-+++ b/scripts/single.sh
481-@@ -1,4 +1,4 @@
482--#!/bin/bash
483-+#!/bin/sh
484- 
485- # Build a standalone toybox command
486- 
487-@@ -9,7 +9,7 @@ then
488- fi
489- 
490- # Add trailing / to PREFIX when it's set but hasn't got one
491--[ "$PREFIX" == "${PREFIX%/}" ] && PREFIX="${PREFIX:+$PREFIX/}"
492-+[ "$PREFIX" = "${PREFIX%/}" ] && PREFIX="${PREFIX:+$PREFIX/}"
493- 
494- # Harvest TOYBOX_* symbols from .config
495- if [ ! -e .config ]
496-@@ -24,7 +24,7 @@ touch -c .config
497- export KCONFIG_CONFIG=.singleconfig
498- for i in "$@"
499- do
500--  echo -n "$i:"
501-+  printf '%s:' "$i"
502-   TOYFILE="$(egrep -l "TOY[(]($i)[ ,]" toys/*/*.c)"
503- 
504-   if [ -z "$TOYFILE" ]
505-@@ -37,7 +37,7 @@ do
506- 
507-   DEPENDS=
508-   MPDEL=
509--  if [ "$i" == sh ]
510-+  if [ "$i" = sh ]
511-   then
512-     DEPENDS="$(sed -n 's/USE_\([^(]*\)(NEWTOY([^,]*,.*TOYFLAG_MAYFORK.*/\1/p' toys/*/*.c)"
513-   else
514---- a/scripts/mkroot.sh
515-+++ b/scripts/mkroot.sh
516-@@ -6,7 +6,7 @@
517- 
518- # assign command line NAME=VALUE args to env vars, keeping rest as packages
519- while [ $# -ne 0 ]; do
520--  [ "${1/=/}" != "$1" ] && eval "export ${1/=*/}=\"\${1#*=}\"" ||
521-+    [ "${1#*=}" != "$1" ] && eval "export ${1%%=*}=\"\${1#*=}\"" ||
522-     { [ "$1" != '--' ] && PKG="${PKG:-plumbing} $1"; }
523-   shift
524- done
525-@@ -13,6 +13,6 @@
526- 
527- die() { echo "$@" >&2; exit 1; }
528--announce() { echo -e "\033]2;$CROSS $*\007\n=== $*"; }
529-+announce() { printf '\033]2;%s %s\007\n=== %s\n' "$CROSS" "$*"; }
530- 
531- # Create target-independent working directories (cmdline can change locations)
532- TOP="$PWD/root"
533-@@ -22,13 +22,13 @@
534- if [ ! -z "$CROSS" ]; then
535-   [ ! -d "${CCC:=$PWD/ccc}" ] && die "No ccc symlink to compiler directory."
536-   CROSS_COMPILE="$(echo "$CCC/$CROSS"-*cross/bin/"$CROSS"*-cc | sed 's/cc$//')"
537--  if [ "${CROSS::3}" == all ]; then
538-+  if [ "${CROSS::3}" = all ]; then
539-     for i in $(ls "$CCC" | sed -n 's/-.*//p' | sort -u | xargs); do
540--      { rm -f "$LOG/$i-log".{failed,success}
541--        "$0" "$@" CROSS=$i ; [ $? -eq 0 ] && mv "$LOG/$i".{txt,success}
542--      } |& tee "$LOG/$i.txt"
543-+        { rm -f "$LOG/$i-logfailed" "$LOG/$i-log.success"
544-+          "$0" "$@" CROSS=$i ; [ $? -eq 0 ] && mv "$LOG/$i.txt" "$LOG/$i.success"
545-+        } 2>&1 | tee "$LOG/$i.txt"
546-       [ ! -e "$LOG/$i.success" ] &&
547--        { mv "$LOG/$i".{txt,failed};[ "$CROSS" != allnonstop ] && exit 1; }
548-+        { mv "$LOG/$i.txt" "$LOG/$i.failed";[ "$CROSS" != allnonstop ] && exit 1; }
549-     done
550-     exit
551-   elif [ ! -e "${CROSS_COMPILE}cc" ]; then
552-@@ -37,8 +37,8 @@
553-   fi
554- fi
555- 
556--${CROSS_COMPILE}cc --static -xc - -o /dev/null <<< "int main(void){return 0;}"||
557--  die "${CROSS_COMPILE}cc can't create static binaries"
558-+! echo 'int main(void) {return 0;}' | cc --static -cx - -o /dev/null ||
559-+    die "Warning: host compiler can't create static binaries." >&2; sleep 3
560- 
561- # Parse and sanity check $CROSS_COMPILE (if any)
562- if [ ! -z "$CROSS_COMPILE" ]; then
563-@@ -45,6 +45,6 @@
564-   CROSS_PATH="$(dirname "$(which "${CROSS_COMPILE}cc")")"
565-   [ -z "$CROSS_PATH" ] && die "no ${CROSS_COMPILE}cc in path"
566--  : ${CROSS_BASE:=$(basename "$CROSS_COMPILE")} ${CROSS:=${CROSS_BASE/-*/}}
567-+  : ${CROSS_BASE:=$(basename "$CROSS_COMPILE")} ${CROSS:=${CROSS_BASE/%%-*/}}
568- fi
569- echo "Building for ${CROSS:=host}"
570- 
571-@@ -65,8 +65,10 @@
572- fi
573- 
574- # Create new root filesystem's directory layout
575--mkdir -p "$ROOT"/{etc,tmp,proc,sys,dev,home,mnt,root,usr/{bin,sbin,lib},var} &&
576--chmod a+rwxt "$ROOT"/tmp && ln -s usr/{bin,sbin,lib} "$ROOT" || exit 1
577-+mkdir -p "$ROOT/etc" "$ROOT/tmp" "$ROOT/proc" "$ROOT/sys" "$ROOT/dev" \
578-+    "$ROOT/home" "$ROOT/mnt" "$ROOT/root" "$ROOT/usr/bin" "$ROOT/usr/sbin" \
579-+    "$ROOT/usr/lib" "$ROOT/var"
580-+chmod a+rwxt "$ROOT"/tmp && ln -s usr/bin usr/sbin usr/lib "$ROOT" || exit 1
581- 
582- # Write init script. Runs as pid 1 from initramfs to set up and hand off system.
583- cat > "$ROOT"/init << 'EOF' &&
584-@@ -114,7 +116,7 @@
585- guest:x:500:500:guest:/home/guest:/bin/sh
586- nobody:x:65534:65534:nobody:/proc/self:/dev/null
587- EOF
588--echo -e 'root:x:0:\nguest:x:500:\nnobody:x:65534:' > "$ROOT"/etc/group || exit 1
589-+printf 'root:x:0:\nguest:x:500:\nnobody:x:65534:\n' > "$ROOT"/etc/group || exit 1
590- 
591- # Build static toybox with existing .config if there is one, else defconfig+sh
592- announce toybox
593-@@ -133,7 +135,7 @@
594- else
595-   # Which architecture are we building a kernel for?
596-   LINUX="$(realpath "$LINUX")"
597--  [ -z "$TARGET" ] && TARGET="${CROSS_BASE/-*/}"
598-+  [ -z "$TARGET" ] && TARGET="${CROSS_BASE%%-*/}"
599-   [ -z "$TARGET" ] && TARGET="$(uname -m)"
600- 
601-   # Target-specific info in an (alphabetical order) if/else staircase
602-@@ -140,6 +142,6 @@
603-   # Each target needs board config, serial console, RTC, ethernet, block device.
604- 
605--  if [ "$TARGET" == armv5l ]; then
606-+  if [ "$TARGET" = armv5l ]; then
607-     # This could use the same VIRT board as armv7, but let's demonstrate a
608-     # different one requiring a separate device tree binary.
609-     QEMU="arm -M versatilepb -net nic,model=rtl8139 -net user"
610-@@ -147,8 +149,8 @@
611-     KCONF=CPU_ARM926T,MMU,VFP,ARM_THUMB,AEABI,ARCH_VERSATILE,ATAGS,DEPRECATED_PARAM_STRUCT,ARM_ATAG_DTB_COMPAT,ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND,SERIAL_AMBA_PL011,SERIAL_AMBA_PL011_CONSOLE,RTC_CLASS,RTC_DRV_PL031,RTC_HCTOSYS,PCI,PCI_VERSATILE,BLK_DEV_SD,SCSI,SCSI_LOWLEVEL,SCSI_SYM53C8XX_2,SCSI_SYM53C8XX_MMIO,NET_VENDOR_REALTEK,8139CP
612-     KERNEL_CONFIG="CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0"
613-     DTB=arch/arm/boot/dts/versatile-pb.dtb
614--  elif [ "$TARGET" == armv7l ] || [ "$TARGET" == aarch64 ]; then
615--    if [ "$TARGET" == aarch64 ]; then
616-+  elif [ "$TARGET" = armv7l ] || [ "$TARGET" = aarch64 ]; then
617-+    if [ "$TARGET" = aarch64 ]; then
618-       QEMU="aarch64 -M virt -cpu cortex-a57"
619-       KARCH=arm64 VMLINUX=arch/arm64/boot/Image
620-     else
621-@@ -156,11 +158,11 @@
622-     fi
623-     KARGS=ttyAMA0
624-     KCONF=MMU,ARCH_MULTI_V7,ARCH_VIRT,SOC_DRA7XX,ARCH_OMAP2PLUS_TYPICAL,ARCH_ALPINE,ARM_THUMB,VDSO,CPU_IDLE,ARM_CPUIDLE,KERNEL_MODE_NEON,SERIAL_AMBA_PL011,SERIAL_AMBA_PL011_CONSOLE,RTC_CLASS,RTC_HCTOSYS,RTC_DRV_PL031,NET_CORE,VIRTIO_MENU,VIRTIO_NET,PCI,PCI_HOST_GENERIC,VIRTIO_BLK,VIRTIO_PCI,VIRTIO_MMIO,ATA,ATA_SFF,ATA_BMDMA,ATA_PIIX,PATA_PLATFORM,PATA_OF_PLATFORM,ATA_GENERIC
625--  elif [ "$TARGET" == i486 ] || [ "$TARGET" == i686 ] ||
626--       [ "$TARGET" == x86_64 ] || [ "$TARGET" == x32 ]; then
627--    if [ "$TARGET" == i486 ]; then
628-+  elif [ "$TARGET" = i486 ] || [ "$TARGET" = i686 ] ||
629-+       [ "$TARGET" = x86_64 ] || [ "$TARGET" = x32 ]; then
630-+    if [ "$TARGET" = i486 ]; then
631-       QEMU="i386 -cpu 486 -global fw_cfg.dma_enabled=false" KCONF=M486
632--    elif [ "$TARGET" == i686 ]; then
633-+    elif [ "$TARGET" = i686 ]; then
634-       QEMU="i386 -cpu pentium3" KCONF=MPENTIUMII
635-     else
636-       QEMU=x86_64 KCONF=64BIT
637-@@ -167,4 +169,4 @@
638--      [ "$TARGET" == x32 ] && KCONF=X86_X32
639-+      [ "$TARGET" = x32 ] && KCONF=X86_X32
640-     fi
641-     KARCH=x86 KARGS=ttyS0 VMLINUX=arch/x86/boot/bzImage
642-     KCONF=$KCONF,UNWINDER_FRAME_POINTER,PCI,BLK_DEV_SD,ATA,ATA_SFF,ATA_BMDMA,ATA_PIIX,NET_VENDOR_INTEL,E1000,SERIAL_8250,SERIAL_8250_CONSOLE,RTC_CLASS
643-@@ -171,15 +173,15 @@
644--  elif [ "$TARGET" == m68k ]; then
645-+  elif [ "$TARGET" = m68k ]; then
646-     QEMU="m68k -M q800" KARCH=m68k KARGS=ttyS0 VMLINUX=vmlinux
647-     KCONF=MMU,M68040,M68KFPU_EMU,MAC,SCSI_MAC_ESP,MACINTOSH_DRIVERS,ADB,ADB_MACII,NET_CORE,MACSONIC,SERIAL_PMACZILOG,SERIAL_PMACZILOG_TTYS,SERIAL_PMACZILOG_CONSOLE
648--  elif [ "$TARGET" == mips ] || [ "$TARGET" == mipsel ]; then
649-+  elif [ "$TARGET" = mips ] || [ "$TARGET" = mipsel ]; then
650-     QEMU="mips -M malta" KARCH=mips KARGS=ttyS0 VMLINUX=vmlinux
651-     KCONF=MIPS_MALTA,CPU_MIPS32_R2,SERIAL_8250,SERIAL_8250_CONSOLE,PCI,BLK_DEV_SD,ATA,ATA_SFF,ATA_BMDMA,ATA_PIIX,NET_VENDOR_AMD,PCNET32,POWER_RESET,POWER_RESET_SYSCON
652--    [ "$TARGET" == mipsel ] && KCONF=$KCONF,CPU_LITTLE_ENDIAN &&
653-+    [ "$TARGET" = mipsel ] && KCONF=$KCONF,CPU_LITTLE_ENDIAN &&
654-       QEMU="mipsel -M malta"
655--  elif [ "$TARGET" == powerpc ]; then
656-+  elif [ "$TARGET" = powerpc ]; then
657-     KARCH=powerpc QEMU="ppc -M g3beige" KARGS=ttyS0 VMLINUX=vmlinux
658-     KCONF=ALTIVEC,PPC_PMAC,PPC_OF_BOOT_TRAMPOLINE,IDE,IDE_GD,IDE_GD_ATA,BLK_DEV_IDE_PMAC,BLK_DEV_IDE_PMAC_ATA100FIRST,MACINTOSH_DRIVERS,ADB,ADB_CUDA,NET_VENDOR_NATSEMI,NET_VENDOR_8390,NE2K_PCI,SERIO,SERIAL_PMACZILOG,SERIAL_PMACZILOG_TTYS,SERIAL_PMACZILOG_CONSOLE,BOOTX_TEXT
659--  elif [ "$TARGET" == powerpc64le ]; then
660-+  elif [ "$TARGET" = powerpc64le ]; then
661-     KARCH=powerpc QEMU="ppc64 -M pseries -vga none" KARGS=hvc0
662-     VMLINUX=vmlinux
663-     KCONF=PPC64,PPC_PSERIES,CPU_LITTLE_ENDIAN,PPC_OF_BOOT_TRAMPOLINE,BLK_DEV_SD,SCSI_LOWLEVEL,SCSI_IBMVSCSI,ATA,NET_VENDOR_IBM,IBMVETH,HVC_CONSOLE,PPC_TRANSACTIONAL_MEM,PPC_DISABLE_WERROR,SECTION_MISMATCH_WARN_ONLY
664-@@ -186,7 +188,7 @@
665-   elif [ "$TARGET" = s390x ]; then
666-     QEMU="s390x" KARCH=s390 VMLINUX=arch/s390/boot/bzImage
667-     KCONF=MARCH_Z900,PACK_STACK,NET_CORE,VIRTIO_NET,VIRTIO_BLK,SCLP_TTY,SCLP_CONSOLE,SCLP_VT220_TTY,SCLP_VT220_CONSOLE,S390_GUEST
668--  elif [ "$TARGET" == sh2eb ]; then
669-+  elif [ "$TARGET" = sh2eb ]; then
670-     KARCH=sh VMLINUX=vmlinux KERNEL_CONFIG='CONFIG_MEMORY_START=0x10000000
671- CONFIG_CMDLINE="console=ttyUL0 earlycon"' BUILTIN=1
672-     KCONF=CPU_SUBTYPE_J2,CPU_BIG_ENDIAN,SH_JCORE_SOC,SMP,BINFMT_ELF_FDPIC,JCORE_EMAC,SERIAL_UARTLITE,SERIAL_UARTLITE_CONSOLE,HZ_100,CMDLINE_OVERWRITE,SPI,SPI_JCORE,MMC,PWRSEQ_SIMPLE,MMC_BLOCK,MMC_SPI
673-@@ -193,4 +195,4 @@
674--  elif [ "$TARGET" == sh4 ]; then
675-+  elif [ "$TARGET" = sh4 ]; then
676-     QEMU="sh4 -M r2d -serial null -serial mon:stdio" KARCH=sh
677-     KARGS="ttySC1 noiotrap" VMLINUX=arch/sh/boot/zImage
678-     KERNEL_CONFIG="CONFIG_MEMORY_START=0x0c000000"
679-@@ -205,7 +207,7 @@
680-     echo qemu-system-"$QEMU" '"$@"' $QEMU_MORE -nographic -no-reboot -m 256 \
681-          -kernel $(basename $VMLINUX) $INITRD \
682-          "-append \"panic=1 HOST=$TARGET console=$KARGS \$KARGS\"" \
683--         ${DTB:+-dtb "$(basename "$DTB")"} ";echo -e '\e[?7h'" \
684-+         ${DTB:+-dtb "$(basename "$DTB")"} ";printf  '\033[?7h\n'" \
685-          > "$OUTPUT/qemu-$TARGET.sh" &&
686-     chmod +x "$OUTPUT/qemu-$TARGET.sh" || exit 1
687-   fi
688-@@ -212,7 +214,8 @@
689- 
690-   announce "linux-$KARCH"
691--  pushd "$LINUX" && make distclean && popd &&
692--  cp -sfR "$LINUX" "$MYBUILD/linux" && pushd "$MYBUILD/linux" &&
693-+  dir="$PWD"
694-+  cd "$LINUX" && make distclean && cd "$dir" &&
695-+  cp -sfR "$LINUX" "$MYBUILD/linux" && cd "$MYBUILD/linux" &&
696- 
697-   # Write miniconfig
698-   { echo "# make ARCH=$KARCH allnoconfig KCONFIG_ALLCONFIG=$TARGET.miniconf"
699-@@ -219,4 +222,4 @@
700--    echo -e "# make ARCH=$KARCH -j \$(nproc)\n# boot $VMLINUX\n\n"
701-+    printf "# make ARCH=%s -j \$(nproc)\n# boot %s\n\n\n" "$KARCH" "$VMLINUX"
702-     echo "# CONFIG_EMBEDDED is not set"
703- 
704-     # Expand list of =y symbols, first generic then architecture-specific
705-@@ -223,6 +226,6 @@
706-     for i in BINFMT_ELF,BINFMT_SCRIPT,NO_HZ,HIGH_RES_TIMERS,BLK_DEV,BLK_DEV_INITRD,RD_GZIP,BLK_DEV_LOOP,EXT4_FS,EXT4_USE_FOR_EXT2,VFAT_FS,FAT_DEFAULT_UTF8,MISC_FILESYSTEMS,SQUASHFS,SQUASHFS_XATTR,SQUASHFS_ZLIB,DEVTMPFS,DEVTMPFS_MOUNT,TMPFS,TMPFS_POSIX_ACL,NET,PACKET,UNIX,INET,IPV6,NETDEVICES,NET_CORE,NETCONSOLE,ETHERNET,COMPAT_32BIT_TIME,EARLY_PRINTK,IKCONFIG,IKCONFIG_PROC $KCONF ; do
707-       echo "# architecture ${X:-independent}"
708--      sed -E '/^$/d;s/([^,]*)($|,)/CONFIG_\1=y\n/g' <<< "$i"
709-+      echo "$i" | sed -E '/^$/d;s/([^,]*)($|,)/CONFIG_\1=y\n/g'
710-       X=specific
711-     done
712-     [ ! -z "$BUILTIN" ] && echo -e CONFIG_INITRAMFS_SOURCE="\"$OUTPUT/fs\""
713-@@ -232,9 +235,10 @@
714- 
715-   # Second config pass to remove stupid kernel defaults
716-   # See http://lkml.iu.edu/hypermail/linux/kernel/1912.3/03493.html
717--  sed -e 's/# CONFIG_EXPERT .*/CONFIG_EXPERT=y/' -e "$(sed -E -e '/^$/d' \
718--    -e 's@([^,]*)($|,)@/^CONFIG_\1=y/d;$a# CONFIG_\1 is not set/\n@g' \
719--       <<< VT,SCHED_DEBUG,DEBUG_MISC,X86_DEBUG_FPU)" -i .config &&
720-+     sed -e 's/# CONFIG_EXPERT .*/CONFIG_EXPERT=y/' -e "$(echo \
721-+    'VT,SCHED_DEBUG,DEBUG_MISC,X86_DEBUG_FPU' | sed -E -e '/^$/d' \
722-+    -e 's@([^,]*)($|,)@/^CONFIG_\1=y/d;$a# CONFIG_\1 is not set/\n@g')" \
723-+    -i .config &&
724-   yes "" | make ARCH=$KARCH oldconfig > /dev/null &&
725- 
726-   # Build kernel. Copy config, device tree binary, and kernel binary to output
727-@@ -241,7 +245,7 @@
728-   make ARCH=$KARCH CROSS_COMPILE="$CROSS_COMPILE" -j $(nproc) &&
729-   cp .config "$OUTPUT/linux-fullconfig" || exit 1
730-   [ ! -z "$DTB" ] && { cp "$DTB" "$OUTPUT" || exit 1 ;}
731--  cp "$VMLINUX" "$OUTPUT" && cd .. && rm -rf linux && popd || exit 1
732-+  cp "$VMLINUX" "$OUTPUT" && cd .. && rm -rf linux && "$dir" || exit 1
733- fi
734- 
735- # clean up and package root filesystem for initramfs.
+0, -1
1@@ -1 +0,0 @@
2-.linux-headers
+0, -6
1@@ -1,6 +0,0 @@
2-name: toybox
3-description:
4-license:
5-upstream: https://github.com/landley/toybox
6-version: git
7-maintainer:
+0, -15
 1@@ -1,15 +0,0 @@
 2-#!/bin/sh -ue
 3-NAME=toybox
 4-VERSION=git
 5-RELEASE=1
 6-SOURCE="https://github.com/landley/toybox.git"
 7-BUILD_STYLE=gmake
 8-build(){
 9-    for i in `find . -type f`; do
10-	sed -i 's/bash/sh/g' $i
11-    done
12-    gmake CC='cc -static' CFLAGS='-static' LDFLAGS='-static' defconfig || die "defconfig failed"
13-    gmake CC='cc -static' CFLAGS='-static' LDFLAGS='-static' PREFIX="$PKG" || die "gmake failed"
14-    gmake CC='cc -static' CFLAGS='-static' LDFLAGS='-static' DESTDIR="$PKG" install || die "install failed"
15-}
16-. ${0%/*}/../../libsh/libdmake.sh