(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REBUILD) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [77] ) ] ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ ($ Id.VSub_Number '$2')) <.sh>} {<Id.Lit_RBracket ']'>} ) (C {<echo>} {(DQ <'no stage '> ($ Id.VSub_Number '$2'))}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<1>} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<2>} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {<'sources/targets/'> (DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>} ) ] ) ] ) action: [ (C {<echo>}) (C {<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number '$0') <' TARGET [REBUILD_FROM_STAGE]'>)}) (C {<echo>}) (C {<echo>} {(DQ <'Supported architectures:'>)}) (C {<ls>} {<'sources/targets'>}) (C {<echo>}) (C {<echo>} {(DQ <'Build stages:'>)}) (command.Pipeline children: [ (C {<sed>} {<-n>} {(SQ <'s/#.*//;s@.*[.]/\\([^.]*\\)[.]sh.*@\\1@p'>)} {(DQ ($ Id.VSub_Number '$0'))} ) (C {<uniq>}) (C {<xargs>} {<echo>}) ] negated: F ) (C {<echo>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [114 153] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ARCH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [226] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-e>} {<config>} {<Id.Lit_RBracket ']'>}) (C {<source>} {<config>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$BUILD'))} {<Id.Lit_RBracket ']'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUILD) op: assign_op.Equal rhs: {(DQ <build>)} spids: [270] ) ] ) ] ) (command.ShFunction name: not_already body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$AGAIN'))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$REBUILD'))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>} ) (C {<zap>} {(DQ ($ Id.VSub_Number '$1'))}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-f>} { (DQ ($ Id.VSub_DollarName '$BUILD') <'/'> ($ Id.VSub_Number '$1') <-> ($ Id.VSub_DollarName '$ARCH') <.tar.gz> ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'=== Skipping '> ($ Id.VSub_Number '$1') <-> ($ Id.VSub_DollarName '$ARCH') <' (already there)'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [344 362] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: zap body: (BraceGroup children: [ (command.ForEach iter_name: i iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (C {<rm>} {<-f>} { (DQ ($ Id.VSub_DollarName '$BUILD') <'/'> ($ Id.VSub_DollarName '$i') <-> ($ Id.VSub_DollarName '$ARCH') <.tar.gz> ) } ) ] ) ) ] ) ) (command.ShFunction name: do_stage body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STAGE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [442] ) ] ) (C {<shift>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$AFTER'))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$STAGE'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<unset>} {<AFTER>})] spids: [452 470] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.TimeBlock pipeline: (C {<'./'> (DQ ($ Id.VSub_DollarName '$STAGE')) <.sh>} {(DQ ($ Id.VSub_At '$@'))} ) ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ) ] ) ] ) ) (C {<do_stage>} {<download>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NO_HOST_TOOLS'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<do_stage>} {<host-tools>})] spids: [537 549] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$MY_CROSS_PATH'))} {<Id.Lit_RBracket ']'>} ) (C {<not_already>} {<simple-cross-compiler>}) ] ) ] ) action: [ (C {<zap>} {<root-filesystem>} {<cross-compiler>} {<native-compiler>}) (C {<do_stage>} {<simple-cross-compiler>} {(DQ ($ Id.VSub_DollarName '$ARCH'))}) ] spids: [563 581] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$MY_CROSS_PATH'))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$CROSS_COMPILER_HOST'))} {<Id.Lit_RBracket ']'>} ) (C {<not_already>} {<cross-compiler>}) ] ) ] ) action: [ (C {<zap>} {<root-filesystem>} {<native-compiler>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Simple words: [{<not_already>} {<simple-cross-compiler>}] more_env: [ (env_pair name: ARCH val: {(DQ ($ Id.VSub_DollarName '$CROSS_COMPILER_HOST'))} spids: [671] ) ] do_fork: T ) ] ) action: [ (C {<do_stage>} {<simple-cross-compiler>} {(DQ ($ Id.VSub_DollarName '$CROSS_COMPILER_HOST'))} ) ] spids: [669 681] ) ] ) (C {<do_stage>} {<cross-compiler>} {(DQ ($ Id.VSub_DollarName '$ARCH'))}) ] spids: [620 653] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [ (C {<grep>} {<-q>} {<Id.Lit_VarLike 'KARCH='>} {<'sources/targets/'> (DQ ($ Id.VSub_DollarName '$ARCH'))} ) ] negated: T ) ] ) action: [ (C {<echo>} {<no>} {<KARCH>} {<Id.KW_In in>} {($ Id.VSub_Number '$1') <Id.Lit_Comma ','>} {<stopping>} {<here>} ) ] spids: [708 723] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands:[(C {<not_already>} {<root-filesystem>})]) action: [(C {<do_stage>} {<root-filesystem>} {(DQ ($ Id.VSub_DollarName '$ARCH'))})] spids: [748 754] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$MY_CROSS_PATH'))} {<Id.Lit_RBracket ']'>} ) (command.Pipeline children: [ (C {<grep>} {<-q>} {<ELF2FLT>} {<'sources/targets/'> (DQ ($ Id.VSub_DollarName '$ARCH'))} ) ] negated: T ) (C {<not_already>} {<native-compiler>}) ] ) ] ) action: [(C {<do_stage>} {<native-compiler>} {(DQ ($ Id.VSub_DollarName '$ARCH'))})] spids: [779 813] ) ] ) (C {<do_stage>} {<system-image>} {(DQ ($ Id.VSub_DollarName '$ARCH'))}) ] )