(command.CommandList children: [ (command.ShFunction name: blank_tempdir body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>}) (C {<dienow>}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<touch>} {<-c>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<dienow>})] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NO_CLEANUP'))} {<Id.Lit_RBracket ']'>} ) (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_Number '$1'))}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<dienow>})] ) ] ) ) (command.ShFunction name: sha1file body: (BraceGroup children: [ (command.Pipeline children: [ (C {<sha1sum>} {<'/dev/null'>} {(DQ ($ Id.VSub_At '$@'))}) (C {<tail>} {<-n>} {<Id.Lit_Other '+'> <2>}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F ) ] ) ) (command.ShFunction name: actually_dienow body: (BraceGroup children: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'e[31mExiting due to errors ('> ($ Id.VSub_DollarName '$ARCH_NAME') <' '> ($ Id.VSub_DollarName '$STAGE_NAME') <' '> ($ Id.VSub_DollarName '$PACKAGE') <')'> <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) ) (C {<trap>} {<actually_dienow>} {<SIGUSR1>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TOPSHELL) op: assign_op.Equal rhs: {($ Id.VSub_Dollar '$$')} spids: [181] ) ] ) (command.ShFunction name: dienow body: (BraceGroup children: [ (C {<kill>} {<-USR1>} {($ Id.VSub_DollarName '$TOPSHELL')}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) ) (command.ShFunction name: dotprogress body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {<0>} spids: [220] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<i>})]) body: (command.DoGroup children: [ (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: [234] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$x'))} right: {<25>} ) ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {<0>} spids: [262] ) ] ) (C {<echo>} {<-n>} {<.>}) ] spids: [244 259] ) ] ) ] ) ) (C {<echo>}) ] ) ) (command.ShFunction name: announce body: (BraceGroup children: [ (C {<echo>} { (DQ <'=== '> ($ Id.VSub_Number '$1') <' ('> ($ Id.VSub_DollarName '$ARCH_NAME') <' '> ($ Id.VSub_DollarName '$STAGE_NAME') <')'> ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NO_TITLE_BAR'))} {<Id.Lit_RBracket ']'>} ) (C {<echo>} {<-en>} { (DQ <Id.Lit_BadBackslash '\\'> <'033]2;'> ($ Id.VSub_DollarName '$ARCH_NAME') <' '> ($ Id.VSub_DollarName '$STAGE_NAME') <' '> ($ Id.VSub_Number '$1') <Id.Lit_BadBackslash '\\'> <007> ) } ) ] ) ] ) ) (command.ShFunction name: maybe_quiet body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$FORK'))} {<Id.Lit_RBracket ']'>} ) (C {<cat>}) (C {<grep>} {(DQ <'^==='>)}) ] ) ] ) ) (command.ShFunction name: maybe_fork body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$BUILD_VERBOSE'))} {<Id.Lit_RBracket ']'>} ) (C {<echo>} {(DQ ($ Id.VSub_Star '$*'))}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$FORK'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<eval>} {(DQ ($ Id.VSub_Star '$*'))})] spids: [415 428] ) ] else_action: [ (command.Sentence child: (C {<eval>} {(DQ ($ Id.VSub_Star '$*'))}) terminator: <Id.Op_Amp _> ) ] ) ] ) ) (command.ShFunction name: killtree body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'KIDS='> (DQ )}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KIDS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$KIDS') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<pgrep>} {<-P> ($ Id.VSub_Number '$1')}) ) ) } spids: [490] ) ] ) (C {<shift>}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KIDS) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<echo>} {<-n>} {($ Id.VSub_DollarName '$KIDS')}) ) ) } spids: [510] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$KIDS'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<killtree>} {($ Id.VSub_DollarName '$KIDS')}) (command.Simple words: [{<kill>} {($ Id.VSub_DollarName '$KIDS')}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [522 537] ) ] ) ] ) ) (command.ShFunction name: path_search body: (BraceGroup children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<sed>} {(SQ <'s/:/\\n/g'>)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<DIR>})]) body: (command.DoGroup children: [ (command.Pipeline children: [ (C {<find>} {(DQ ($ Id.VSub_DollarName '$DIR') <'/'>)} {<-maxdepth>} {<1>} {<-mindepth>} {<1>} {<-name>} {(DQ ($ Id.VSub_Number '$2'))} ) (C {<sed>} {(SQ <'s@.*/@@'>)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<FILE>})]) body: (command.DoGroup children: [ (C {<eval>} {(DQ ($ Id.VSub_Number '$3'))}) (C {<echo>} {($ Id.VSub_DollarName '$FILE')}) ] ) ) ] negated: F ) ] ) ) ] negated: F ) ] ) ) (command.ShFunction name: check_prerequisite body: (BraceGroup children: [ (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>} {(DQ ($ Id.VSub_Number '$1'))}) ) ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$FAIL_QUIET'))} {<Id.Lit_RBracket ']'>} ) (command.Simple words: [ {<echo>} {<No>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.KW_In in>} {(SQ <'$PATH'>) <.>} ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) (C {<dienow>}) ] spids: [699 718] ) ] ) ] ) ) (command.ShFunction name: collapse_hardlinks body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHA1LIST) op: assign_op.Equal rhs: {(DQ )} spids: [774] ) ] ) (command.Pipeline children: [ (C {<find>} {(DQ ($ Id.VSub_Number '$1'))} {<-type>} {<f>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<FILE>})]) body: (command.DoGroup children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$FILE'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHA1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sha1file>} {(DQ ($ Id.VSub_DollarName '$FILE'))}) ) } spids: [808] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MATCH) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$SHA1LIST'))}) (C {<grep>} {(DQ <'^'> ($ Id.VSub_DollarName '$SHA1'))}) ] negated: F ) ) } spids: [818] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$MATCH'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHA1LIST) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$SHA1LIST') <'\n'> ($ Id.VSub_DollarName '$SHA1') <' '> ($ Id.VSub_DollarName '$FILE') ) } spids: [857] ) ] ) ] spids: [837 850] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE2) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$MATCH'))}) (C {<sed>} {(SQ <'s/[^ ]* //'>)}) ] negated: F ) ) ) } spids: [870] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<cmp>} {<-s>} {(DQ ($ Id.VSub_DollarName '$FILE'))} {(DQ ($ Id.VSub_DollarName '$FILE2'))} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<ln>} {<-f>} {(DQ ($ Id.VSub_DollarName '$FILE'))} {(DQ ($ Id.VSub_DollarName '$FILE2'))} ) (C {<dienow>}) ] ) ] ) ] ) ) ] negated: F ) ] ) ) (command.ShFunction name: is_in_list body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {<all>} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {<Id.Lit_Comma ','> (DQ ($ Id.VSub_Number '$2')) <Id.Lit_Comma ','>} ) (C {<grep>} {<Id.Lit_Comma ','> (DQ ($ Id.VSub_Number '$1')) <Id.Lit_Comma ','>} ) ] negated: F ) ) ) } {<Id.Lit_RBracket ']'>} ) ] ) ] ) ) ] )