(List (= scope= flags=0 words=[] bindings=[('SAVEPATH', {[DQ [VarSub PATH]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[LIT_CHARS sources/include.sh]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (= scope= flags=0 words=[] bindings=[('STAGE_DIR', {[DQ [VarSub HOSTTOOLS]]})]) (Com {[LIT_CHARS blank_tempdir]} {[DQ [VarSub WORK]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub STAGE_DIR]]}) (Com {[LIT_CHARS dienow]}) ) (= scope= flags=0 words=[] bindings=[('PATH', {[DQ [ComSub (Com {[LIT_CHARS hosttools_path]})][LIT_CHARS ":"][VarSub PATH]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_STATIC]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS none]} {[LIT_OTHER "]"]}) (List (Com {[VarSub CC]} {[DQ [VarSub SOURCES][LIT_CHARS /root-filesystem/src/hello.c]]} {[LIT_CHARS --static]} {[LIT_CHARS -o]} {[LIT_CHARS /dev/null]}) (If (Com {[LIT_OTHER "["]} {[VarSub ?]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Your host toolchain does not support static linking."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Either install support, or export BUILD_STATIC=none"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS dienow]}) ) ) ) ) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub STAGE_DIR][LIT_CHARS /busybox]]} {[LIT_OTHER "]"]}) (AndOr OP_AND_IF (Com {[LIT_CHARS build_section]} {[LIT_CHARS busybox]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub STAGE_DIR][LIT_CHARS /sh]]}) ) ) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub STAGE_DIR][LIT_CHARS /toybox]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS build_section]} {[LIT_CHARS toybox]}) ) (For i [{[LIT_CHARS ar]}, {[LIT_CHARS as]}, {[LIT_CHARS nm]}, {[LIT_CHARS cc]}, {[LIT_CHARS make]}, {[LIT_CHARS ld]}, {[LIT_CHARS gcc]}, {[LIT_CHARS objdump]}, {[LIT_CHARS sh]}, {[VarSub HOST_EXTRA]}]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub STAGE_DIR][LIT_CHARS /][VarSub i]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('X', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('FALLBACK', {[DQ [VarSub STAGE_DIR]]})]) (Pipeline (Com {[DQ [VarSub STAGE_DIR][LIT_CHARS /which]]} {[LIT_CHARS -a]} {[DQ [VarSub i]]} more_env=[('PATH', {[DQ [VarSub SAVEPATH]]})] ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS j]}) (List (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub FALLBACK][LIT_CHARS /][VarSub i]]} {[LIT_OTHER "]"]}) (AndOr OP_AND_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub FALLBACK]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS ln]} {[LIT_CHARS -sf]} {[DQ [VarSub j]]} {[DQ [VarSub FALLBACK][LIT_CHARS /][VarSub i]]}) (Com {[LIT_CHARS dienow]}) ) ) ) (= scope= flags=0 words=[] bindings=[('X', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub X]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (= scope= flags=0 words=[] bindings=[('FALLBACK', {[DQ [VarSub STAGE_DIR][LIT_CHARS /fallback-][VarSub X]]})]) ) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub STAGE_DIR][LIT_CHARS /][VarSub i]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Toolchain component missing: "][VarSub i]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS dienow]}) ) ) ) ) ) (= scope= flags=0 words=[] bindings=[('ET_TU_UBUNTU', {[DQ [ComSub (Com more_env=[('PATH', {[DQ [VarSub SAVEPATH]]})] {[DQ [VarSub STAGE_DIR][LIT_CHARS /which]]} {[LIT_CHARS gcc.real]})]]})]) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub ET_TU_UBUNTU]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[DQ [VarSub ET_TU_UBUNTU]]} {[DQ [VarSub STAGE_DIR][LIT_CHARS /gcc.real]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) (= scope= flags=0 words=[] bindings=[('PATH', {[DQ [ComSub (Com {[LIT_CHARS hosttools_path]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS find]} {[DQ [VarSub STAGE_DIR]]} {[LIT_CHARS -newer]} {[DQ [VarSub BUILD][LIT_CHARS /record-commands]]})]]} {[LIT_OTHER "]"]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub TOP]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS more/record-commands.sh]}) (Com {[LIT_CHARS dienow]}) ) ) (= scope= flags=0 words=[] bindings=[('PATH', {[DQ [VarSub WRAPDIR]]})]) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS distccd]})]]} {[LIT_OTHER "]"]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS setupfor]} {[LIT_CHARS distcc]}) (AndOr OP_AND_IF (Com {[LIT_CHARS ./configure]} {[LIT_CHARS --with-included-popt]} {[LIT_CHARS --disable-Werror]}) (AndOr OP_AND_IF (Com {[LIT_CHARS make]} {[LIT_CHARS -j]} {[DQ [VarSub CPUS]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS distcc]} {[LIT_CHARS distccd]} {[DQ [VarSub STAGE_DIR]]}) ) ) ) (Com {[LIT_CHARS cleanup]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub STAGE_DIR]] [LIT_CHARS /genext2fs]} {[LIT_OTHER "]"]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS setupfor]} {[LIT_CHARS genext2fs]}) (AndOr OP_AND_IF (Com {[LIT_CHARS ./configure]}) (AndOr OP_AND_IF (Com {[LIT_CHARS make]} {[LIT_CHARS -j]} {[VarSub CPUS]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS genext2fs]} {[DQ [VarSub STAGE_DIR]]}) ) ) ) (Com {[LIT_CHARS cleanup]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub STAGE_DIR]] [LIT_CHARS /mke2fs]} {[LIT_OTHER "]"]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS setupfor]} {[LIT_CHARS e2fsprogs]}) (AndOr OP_AND_IF (Com {[LIT_CHARS ./configure]} {[LIT_CHARS --disable-tls]} {[LIT_CHARS --disable-nls]} {[LIT_CHARS --enable-htree]}) (AndOr OP_AND_IF (Com {[LIT_CHARS make]} {[LIT_CHARS -j]} {[DQ [VarSub CPUS]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cp]} {[LIT_CHARS misc/] [LIT_LBRACE "{"] [LIT_CHARS mke2fs] [LIT_COMMA ","] [LIT_CHARS tune2fs] [LIT_RBRACE "}"]} {[LIT_CHARS resize/resize2fs]} {[DQ [VarSub STAGE_DIR]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS e2fsck/e2fsck]} {[DQ [VarSub STAGE_DIR]] [LIT_CHARS /fsck.ext2]}) ) ) ) ) (Com {[LIT_CHARS cleanup]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub STAGE_DIR]] [LIT_CHARS /mksquashfs]} {[LIT_OTHER "]"]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS setupfor]} {[LIT_CHARS zlib]}) (AndOr OP_AND_IF (Com {[LIT_CHARS ./configure]}) (AndOr OP_AND_IF (Com {[LIT_CHARS make]} {[LIT_CHARS -j]} {[VarSub CPUS]}) (Com {[LIT_CHARS mv]} {[LIT_CHARS z] [LIT_OTHER "*"] [LIT_CHARS .h]} {[LIT_CHARS libz.a]} {[LIT_CHARS ..]}) ) ) ) (Com {[LIT_CHARS cleanup]}) (AndOr OP_AND_IF (Com {[LIT_CHARS setupfor]} {[LIT_CHARS squashfs]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS squashfs-tools]}) (AndOr OP_AND_IF (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[DQ [LIT_CHARS "/^XATTR_/d"]]} {[LIT_CHARS Makefile]}) (AndOr OP_AND_IF (Com {[LIT_CHARS make]} {[LIT_CHARS -j]} {[VarSub CPUS]} more_env=[('CC', {[DQ [VarSub CC][LIT_CHARS " -I ../.. -L ../.."]]})] ) (AndOr OP_AND_IF (Com {[LIT_CHARS cp]} {[LIT_CHARS mksquashfs]} {[LIT_CHARS unsquashfs]} {[DQ [VarSub STAGE_DIR]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS ../../] [LIT_LBRACE "{"] [LIT_CHARS z] [LIT_OTHER "*"] [LIT_CHARS .h] [LIT_COMMA ","] [LIT_CHARS libz.a] [LIT_RBRACE "}"]}) ) ) ) ) ) (Com {[LIT_CHARS cleanup]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS find]} {[DQ [VarSub STAGE_DIR]]} {[LIT_CHARS -newer]} {[DQ [VarSub BUILD][LIT_CHARS /record-commands]]})]]} {[LIT_OTHER "]"]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub TOP]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS more/record-commands.sh]}) (Com {[LIT_CHARS dienow]}) ) ) ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [\ LIT_ESCAPED_CHAR "\\e"][LIT_CHARS "[32mHost tools build complete."][\ LIT_ESCAPED_CHAR "\\e"][LIT_CHARS "[0m"]]}) )