(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAVEPATH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$PATH'))} spids: [66] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(sources/include.sh)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:77) arg_word: {(1)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STAGE_DIR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name HOSTTOOLS))} spids: [82] ) ] ) (C {(blank_tempdir)} {(DQ ($ Id.VSub_DollarName '$WORK'))}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {(mkdir)} {(-p)} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR'))}) (C {(dienow)})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:181) command_list: (command.CommandList children:[(C {(hosttools_path)})]) ) (':') ($ Id.VSub_DollarName '$PATH') ) } spids: [179] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$BUILD_STATIC'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(none)} {(Id.Lit_RBracket ']')} ) ] action: [ (C {($ Id.VSub_DollarName '$CC')} {(DQ ($ Id.VSub_DollarName '$SOURCES') (/root-filesystem/src/hello.c))} {(--static)} {(-o)} {(/dev/null)} ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')} ) ] action: [ (command.Simple words: [{(echo)} {(DQ ('Your host toolchain does not support static linking.'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:248) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [{(echo)} {(DQ ('Either install support, or export BUILD_STATIC=none'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:258) fd: -1 arg_word: {(2)} ) ] ) (C {(dienow)}) ] spids: [226 239] ) ] ) ] spids: [193 208] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/busybox))} {(Id.Lit_RBracket ']')} ) (C {(build_section)} {(busybox)}) (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/sh))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/toybox))} {(Id.Lit_RBracket ']')} ) (C {(build_section)} {(toybox)}) ] ) (command.ForEach iter_name: i iter_words: [ {(ar)} {(as)} {(nm)} {(cc)} {(make)} {(ld)} {(gcc)} {(objdump)} {(sh)} {($ Id.VSub_DollarName '$HOST_EXTRA')} ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/) ($ Id.VSub_DollarName '$i'))} {(Id.Lit_RBracket ']')} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:X) op: assign_op.Equal rhs: {(0)} spids: [415] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FALLBACK) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$STAGE_DIR'))} spids: [419] ) ] ) (command.Pipeline children: [ (command.Simple words: [ {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/which))} {(-a)} {(DQ ($ Id.VSub_DollarName '$i'))} ] more_env: [ (env_pair name: PATH val: {(DQ ($ Id.VSub_DollarName '$SAVEPATH'))} spids: [425] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:443) cond: [(C {(read)} {(j)})] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} { (DQ ($ Id.VSub_DollarName '$FALLBACK') (/) ($ Id.VSub_DollarName '$i') ) } {(Id.Lit_RBracket ']')} ) ] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {(mkdir)} {(-p)} {(DQ ($ Id.VSub_DollarName '$FALLBACK'))}) (C {(ln)} {(-sf)} {(DQ ($ Id.VSub_DollarName '$j'))} { (DQ ($ Id.VSub_DollarName '$FALLBACK') (/) ($ Id.VSub_DollarName '$i') ) } ) (C {(dienow)}) ] ) ] spids: [453 470] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:X) op: assign_op.Equal rhs: { (word_part.ExprSub left: (Token id: Id.Left_DollarBracket val: '$[' span_id: 508 ) child: (expr.Binary op: (Token id:Id.Arith_Plus val:'+' span_id:510) left: ($ Id.VSub_DollarName '$X') right: (Const Id.Expr_DecInt 1) ) ) } spids: [507] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FALLBACK) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/fallback-) ($ Id.VSub_DollarName '$X') ) } spids: [515] ) ] ) ] ) ) ] negated: F ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} { (DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/) ($ Id.VSub_DollarName '$i')) } {(Id.Lit_RBracket ']')} ) ] action: [ (command.Simple words: [ {(echo)} {(DQ ('Toolchain component missing: ') ($ Id.VSub_DollarName '$i'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:554) fd: -1 arg_word: {(2)} ) ] ) (C {(dienow)}) ] spids: [527 544] ) ] ) ] spids: [390 407] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ET_TU_UBUNTU) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:578) command_list: (command.CommandList children: [ (command.Simple words: [{(DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/which))} {(gcc.real)}] more_env: [ (env_pair name: PATH val: {(DQ ($ Id.VSub_DollarName '$SAVEPATH'))} spids: [579] ) ] ) ] ) ) ) } spids: [576] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} {(DQ ($ Id.VSub_DollarName '$ET_TU_UBUNTU'))} {(Id.Lit_RBracket ']')} ) (command.Simple words: [ {(ln)} {(-s)} {(DQ ($ Id.VSub_DollarName '$ET_TU_UBUNTU'))} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') (/gcc.real))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:620) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:633) command_list: (command.CommandList children:[(C {(hosttools_path)})]) ) ) } spids: [631] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:647) command_list: (command.CommandList children: [ (command.Simple words: [ {(find)} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR'))} {(-newer)} {(DQ ($ Id.VSub_DollarName '$BUILD') (/record-commands))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:661) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) ) } {(Id.Lit_RBracket ']')} ) ] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {(cd)} {(DQ ($ Id.VSub_DollarName '$TOP'))}) (C {(more/record-commands.sh)}) (C {(dienow)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$WRAPDIR'))} spids: [686] ) ] ) ] spids: [638 668] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(-z)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:727) command_list: (command.CommandList children:[(C {(which)} {(distccd)})]) ) ) } {(Id.Lit_RBracket ']')} ) ] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(setupfor)} {(distcc)}) (C {(./configure)} {(--with-included-popt)} {(--disable-Werror)}) (C {(make)} {(-j)} {(DQ ($ Id.VSub_DollarName '$CPUS'))}) (C {(cp)} {(distcc)} {(distccd)} {(DQ (${ Id.VSub_Name STAGE_DIR))}) ] ) (C {(cleanup)}) ] spids: [720 736] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(DQ (${ Id.VSub_Name STAGE_DIR)) (/genext2fs)} {(Id.Lit_RBracket ']')} ) ] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(setupfor)} {(genext2fs)}) (C {(./configure)}) (C {(make)} {(-j)} {($ Id.VSub_DollarName '$CPUS')}) (C {(cp)} {(genext2fs)} {(DQ (${ Id.VSub_Name STAGE_DIR))}) ] ) (C {(cleanup)}) ] spids: [792 809] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(DQ (${ Id.VSub_Name STAGE_DIR)) (/mke2fs)} {(Id.Lit_RBracket ']')} ) ] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(setupfor)} {(e2fsprogs)}) (C {(./configure)} {(--disable-tls)} {(--disable-nls)} {(--enable-htree)}) (C {(make)} {(-j)} {(DQ ($ Id.VSub_DollarName '$CPUS'))}) (C {(cp)} (word.BracedTree parts: [(misc/) (word_part.BracedTuple words:[{(mke2fs)} {(tune2fs)}])] ) {(resize/resize2fs)} {(DQ (${ Id.VSub_Name STAGE_DIR))} ) (C {(cp)} {(e2fsck/e2fsck)} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR')) (/fsck.ext2)}) ] ) (C {(cleanup)}) ] spids: [883 900] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(DQ (${ Id.VSub_Name STAGE_DIR)) (/mksquashfs)} {(Id.Lit_RBracket ']')} ) ] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(setupfor)} {(zlib)}) (C {(./configure)}) (C {(make)} {(-j)} {($ Id.VSub_DollarName '$CPUS')}) (C {(mv)} {(z) (Id.Lit_Star '*') (.h)} {(libz.a)} {(..)}) ] ) (C {(cleanup)}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(setupfor)} {(squashfs)}) (C {(cd)} {(squashfs-tools)}) (C {(sed)} {(-i)} {(DQ ('/^XATTR_/d'))} {(Makefile)}) (command.Simple words: [{(make)} {(-j)} {($ Id.VSub_DollarName '$CPUS')}] more_env: [ (env_pair name: CC val: {(DQ ($ Id.VSub_DollarName '$CC') (' -I ../.. -L ../..'))} spids: [1064] ) ] ) (C {(cp)} {(mksquashfs)} {(unsquashfs)} {(DQ (${ Id.VSub_Name STAGE_DIR))}) (C {(rm)} (word.BracedTree parts: [ (../../) (word_part.BracedTuple words: [{(z) (Id.Lit_Star '*') (.h)} {(libz.a)}] ) ] ) ) ] ) (C {(cleanup)}) ] spids: [972 989] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1124) command_list: (command.CommandList children: [ (command.Simple words: [ {(find)} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR'))} {(-newer)} {(DQ ($ Id.VSub_DollarName '$BUILD') (/record-commands))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:1138) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) ) } {(Id.Lit_RBracket ']')} ) ] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {(cd)} {(DQ ($ Id.VSub_DollarName '$TOP'))}) (C {(more/record-commands.sh)}) (C {(dienow)}) ] ) ] spids: [1115 1145] ) ] ) (C {(echo)} {(-e)} {(DQ (Id.Lit_Other '\\') ('e[32mHost tools build complete.') (Id.Lit_Other '\\') ('e[0m'))} ) ] )