(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:<Id.ControlFlow_Exit exit> 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:<Id.Left_DollarParen '$('> child:(C {<hosttools_path>})) <':'> ($ Id.VSub_DollarName '$PATH') ) } spids: [179] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (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: (condition.Shell commands: [ (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'Either install support, or export BUILD_STATIC=none'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (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: (condition.Shell commands: [ (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] ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<j>})]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (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: <Id.Left_DollarBracket '$['> child: (expr.Binary op: <Id.Arith_Plus _> 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: (condition.Shell commands: [ (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 op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (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: <Id.Left_DollarParen '$('> child: (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] ) ] do_fork: T ) ) ) } 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 op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<hosttools_path>})))} spids: [631] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<find>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR'))} {<-newer>} {(DQ ($ Id.VSub_DollarName '$BUILD') <'/record-commands'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) ) } {<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: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (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: (condition.Shell commands: [ (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: (condition.Shell commands: [ (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: (condition.Shell commands: [ (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] ) ] do_fork: T ) (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: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<find>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR'))} {<-newer>} {(DQ ($ Id.VSub_DollarName '$BUILD') <'/record-commands'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) ) } {<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_BadBackslash '\\'> <'e[32mHost tools build complete.'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) ] )