(List (FunctionDef blank_tempdir [] (List (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS dienow]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS touch]} {[LIT_CHARS -c]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS dienow]}) ) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub NO_CLEANUP]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub 1]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS dienow]}) ) ) ) (FunctionDef sha1file [] (Pipeline (Com {[LIT_CHARS sha1sum]} {[LIT_CHARS /dev/null]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_OTHER "+"] [LIT_CHARS 2]}) (Com {[LIT_CHARS awk]} {[SQ ]}) ) ) (FunctionDef actually_dienow [] (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"][\ LIT_ESCAPED_CHAR "\\e"][LIT_CHARS "[31mExiting due to errors ("][VarSub ARCH_NAME][LIT_CHARS " "][VarSub STAGE_NAME][LIT_CHARS " "][VarSub PACKAGE][LIT_CHARS ")"][\ LIT_ESCAPED_CHAR "\\e"][LIT_CHARS "[0m"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS trap]} {[LIT_CHARS actually_dienow]} {[LIT_CHARS SIGUSR1]}) (= scope= flags=0 words=[] bindings=[('TOPSHELL', {[VarSub $]})]) (FunctionDef dienow [] (List (Com {[LIT_CHARS kill]} {[LIT_CHARS -USR1]} {[VarSub TOPSHELL]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef dotprogress [] (List (= scope= flags=0 words=[] bindings=[('x', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS i]}) (List (= 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]}}}]})]) (If (DBracket {B2 BINARY_INT_EQ {[DQ [VarSub x]]} {[LIT_CHARS 25]}}) (List (= scope= flags=0 words=[] bindings=[('x', {[LIT_CHARS 0]})]) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[LIT_CHARS .]}) ) ) ) ) (Com {[LIT_CHARS echo]}) ) ) (FunctionDef announce [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "=== "][VarSub 1][LIT_CHARS " ("][VarSub ARCH_NAME][LIT_CHARS " "][VarSub STAGE_NAME][LIT_CHARS ")"]]}) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub NO_TITLE_BAR]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -en]} {[DQ [\ LIT_ESCAPED_CHAR "\\0"][LIT_CHARS "33]2;"][VarSub ARCH_NAME][LIT_CHARS " "][VarSub STAGE_NAME][LIT_CHARS " "][VarSub 1][\ LIT_ESCAPED_CHAR "\\0"][LIT_CHARS 07]]}) ) ) ) (FunctionDef maybe_quiet [] (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub FORK]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_CHARS cat]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^==="]]}) ) ) ) (FunctionDef maybe_fork [] (List (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub BUILD_VERBOSE]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub *]]}) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub FORK]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS eval]} {[DQ [VarSub *]]}) (ElseTrue) (Fork (Com {[LIT_CHARS eval]} {[DQ [VarSub *]]}) ) ) ) ) (FunctionDef killtree [] (List (= scope= flags=0 words=[] bindings=[('KIDS', {[DQ ]})]) (While (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('KIDS', {[DQ [VarSub KIDS][LIT_CHARS " "][ComSub (Com {[LIT_CHARS pgrep]} {[LIT_CHARS -P] [VarSub 1]})]]})]) (Com {[LIT_CHARS shift]}) ) ) (= scope= flags=0 words=[] bindings=[('KIDS', {[DQ [ComSub (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[VarSub KIDS]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub KIDS]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS killtree]} {[VarSub KIDS]}) (Com {[LIT_CHARS kill]} {[VarSub KIDS]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) ) ) ) (FunctionDef path_search [] (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS DIR]}) (Pipeline (Com {[LIT_CHARS find]} {[DQ [VarSub DIR][LIT_CHARS /]]} {[LIT_CHARS -maxdepth]} {[LIT_CHARS 1]} {[LIT_CHARS -mindepth]} {[LIT_CHARS 1]} {[LIT_CHARS -name]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS FILE]}) (List (Com {[LIT_CHARS eval]} {[DQ [VarSub 3]]}) (Com {[LIT_CHARS echo]} {[VarSub FILE]}) ) ) ) ) ) ) (FunctionDef check_prerequisite [] (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [ComSub (Com {[LIT_CHARS which]} {[DQ [VarSub 1]]})]]} {[LIT_OTHER "]"]}) (List (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub FAIL_QUIET]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS No]} {[DQ [VarSub 1]]} {[LIT_CHARS in]} {[SQ ] [LIT_CHARS .]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS dienow]}) ) ) ) (FunctionDef collapse_hardlinks [] (List (= scope= flags=0 words=[] bindings=[('SHA1LIST', {[DQ ]})]) (Pipeline (Com {[LIT_CHARS find]} {[DQ [VarSub 1]]} {[LIT_CHARS -type]} {[LIT_CHARS f]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS FILE]}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub FILE]]}) (= scope= flags=0 words=[] bindings=[('SHA1', {[ComSub (Com {[LIT_CHARS sha1file]} {[DQ [VarSub FILE]]})]})]) (= scope= flags=0 words=[] bindings=[('MATCH', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub SHA1LIST]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^"][VarSub SHA1]]}) )]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub MATCH]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('SHA1LIST', {[DQ [VarSub SHA1LIST][LIT_CHARS "\n"][VarSub SHA1][LIT_CHARS " "][VarSub FILE]]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('FILE2', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub MATCH]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[DQ [VarSub FILE]]} {[DQ [VarSub FILE2]]}) (Com {[LIT_CHARS continue]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ln]} {[LIT_CHARS -f]} {[DQ [VarSub FILE]]} {[DQ [VarSub FILE2]]}) (Com {[LIT_CHARS dienow]}) ) ) ) ) ) ) ) ) (FunctionDef is_in_list [] (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub 2]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[LIT_CHARS all]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[LIT_COMMA ","] [DQ [VarSub 2]] [LIT_COMMA ","]}) (Com {[LIT_CHARS grep]} {[LIT_COMMA ","] [DQ [VarSub 1]] [LIT_COMMA ","]}) )]]} {[LIT_OTHER "]"]}) ) ) )