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