(List (FunctionDef smallyes [] (List (= scope= flags=0 words=[] bindings=[('YES', {[DQ [VarSub 1 test_op=VS_TEST_HYPHEN {[LIT_CHARS y]}]]})]) (While (Com {[LIT_CHARS echo]} {[DQ [VarSub YES]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_OTHER ":"]}) ) ) ) (FunctionDef in_path [] (List (= scope= flags=0 words=[] bindings=[('OLD_IFS', {[DQ [VarSub IFS]]})]) (= scope= flags=0 words=[] bindings=[('IFS', {[DQ [LIT_CHARS ":"]]})]) (For dir [{[VarSub PATH]}]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -x]} {[DQ [VarSub dir][LIT_CHARS /][VarSub 1]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('IFS', {[DQ [VarSub OLD_IFS]]})]) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) ) (= scope= flags=0 words=[] bindings=[('IFS', {[DQ [VarSub OLD_IFS]]})]) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (FunctionDef error [] (List (= scope= flags=0 words=[] bindings=[('err', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('name', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('fmt', {[DQ [VarSub 3]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub USE_DEBIANINSTALLER_INTERACTION]]} {[LIT_OTHER "]"]}) (Subshell (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "E: "][VarSub name]]}) (For x [{[DQ [VarSub @]]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "EA: "][VarSub x]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "EF: "][VarSub fmt]]}) ) ) (ElseTrue) (Subshell (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "E: "][VarSub fmt][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub @]]}) ) ) (Com {[LIT_CHARS exit]} {[VarSub err]}) ) ) (FunctionDef warning [] (List (= scope= flags=0 words=[] bindings=[('name', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('fmt', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub USE_DEBIANINSTALLER_INTERACTION]]} {[LIT_OTHER "]"]}) (Subshell (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "W: "][VarSub name]]}) (For x [{[DQ [VarSub @]]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "WA: "][VarSub x]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "WF: "][VarSub fmt]]}) ) ) (ElseTrue) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "W: "][VarSub fmt][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 1), > ) ) ) ) (FunctionDef info [] (List (= scope= flags=0 words=[] bindings=[('name', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('fmt', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub USE_DEBIANINSTALLER_INTERACTION]]} {[LIT_OTHER "]"]}) (Subshell (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "I: "][VarSub name]]}) (For x [{[DQ [VarSub @]]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "IA: "][VarSub x]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "IF: "][VarSub fmt]]}) ) ) (ElseTrue) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "I: "][VarSub fmt][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 1), > ) ) ) ) (= scope= flags=0 words=[] bindings=[('PROGRESS_NOW', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('PROGRESS_END', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('PROGRESS_NEXT', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('PROGRESS_WHAT', {[DQ ]})]) (FunctionDef progress_next [] (= scope= flags=0 words=[] bindings=[('PROGRESS_NEXT', {[DQ [VarSub 1]]})]) ) (FunctionDef wgetprogress [] (List (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[DQ [VarSub VERBOSE]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('QSWITCH', {[DQ [LIT_CHARS -q]]})]) ) (= scope= flags=0 words=[] bindings=[('ret', {[LIT_CHARS 0]})]) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub USE_DEBIANINSTALLER_INTERACTION]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub PROGRESS_NEXT]]} {[LIT_OTHER "]"]}) ) (List (Pipeline (Com {[LIT_CHARS wget]} {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[VarSub PKGDETAILS]} {[DQ [LIT_CHARS "WGET%"]]} {[VarSub PROGRESS_NOW]} {[VarSub PROGRESS_NEXT]} {[VarSub PROGRESS_END]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) ) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub ?]})]) ) (ElseTrue) (List (Com {[LIT_CHARS wget]} {[VarSub QSWITCH]} {[DQ [VarSub @]]}) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub ?]})]) ) ) (Com {[LIT_CHARS return]} {[VarSub ret]}) ) ) (FunctionDef progress [] (List (= scope= flags=0 words=[] bindings=[('now', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('end', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('name', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('fmt', {[DQ [VarSub 4]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub USE_DEBIANINSTALLER_INTERACTION]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('PROGRESS_NOW', {[DQ [VarSub now]]})]) (= scope= flags=0 words=[] bindings=[('PROGRESS_END', {[DQ [VarSub end]]})]) (= scope= flags=0 words=[] bindings=[('PROGRESS_NEXT', {[DQ ]})]) (Subshell (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "P: "][VarSub now][LIT_CHARS " "][VarSub end][LIT_CHARS " "][VarSub name]]}) (For x [{[DQ [VarSub @]]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "PA: "][VarSub x]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "PF: "][VarSub fmt]]}) ) ) ) ) ) ) (FunctionDef dpkg_progress [] (List (= scope= flags=0 words=[] bindings=[('now', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('end', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('name', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('desc', {[DQ [VarSub 4]]})]) (= scope= flags=0 words=[] bindings=[('action', {[DQ [VarSub 5]]})]) (= scope= flags=0 words=[] bindings=[('expect', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub action]]} {[LIT_OTHER "="]} {[LIT_CHARS UNPACKING]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('expect', {[LIT_CHARS half-installed]})]) (Com {[LIT_OTHER "["]} {[DQ [VarSub action]]} {[LIT_OTHER "="]} {[LIT_CHARS CONFIGURING]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('expect', {[LIT_CHARS half-configured]})]) ) (FunctionDef dp [] (= scope= flags=0 words=[] bindings=[('now', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub now]}} {A Atom NODE_ARITH_WORD {[VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 1]}]}}}]]})]) ) (= scope= flags=0 words=[] bindings=[('exitcode', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS status]} {[LIT_CHARS pkg]} {[LIT_CHARS qstate]}) (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub status]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS EXITCODE]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('exitcode', {[DQ [VarSub pkg]]})]) (Com {[LIT_CHARS continue]}) ) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub qstate]]} {[LIT_OTHER "="]} {[DQ [VarSub expect]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS continue]}) ) (Case to_match={[VarSub qstate]}, pat_word_list=[[{[LIT_CHARS half-installed]}], [{[LIT_CHARS unpacked]}], [{[LIT_CHARS half-configured]}], [{[LIT_CHARS installed]}]] (List (Com {[LIT_CHARS dp]}) (Com {[LIT_CHARS progress]} {[DQ [VarSub now]]} {[DQ [VarSub end]]} {[DQ [VarSub name]]} {[DQ [VarSub desc]]}) (Com {[LIT_CHARS info]} {[DQ [VarSub action]]} {[DQ [LIT_CHARS "Unpacking %s..."]]} {[DQ [VarSub pkg transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS ":"]}]]]}) (= scope= flags=0 words=[] bindings=[('expect', {[LIT_CHARS unpacked]})]) ) (= scope= flags=0 words=[] bindings=[('expect', {[LIT_CHARS half-installed]})]) (List (Com {[LIT_CHARS dp]}) (Com {[LIT_CHARS progress]} {[DQ [VarSub now]]} {[DQ [VarSub end]]} {[DQ [VarSub name]]} {[DQ [VarSub desc]]}) (Com {[LIT_CHARS info]} {[DQ [VarSub action]]} {[DQ [LIT_CHARS "Configuring %s..."]]} {[DQ [VarSub pkg transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS ":"]}]]]}) (= scope= flags=0 words=[] bindings=[('expect', {[LIT_CHARS installed]})]) ) (= scope= flags=0 words=[] bindings=[('expect', {[LIT_CHARS half-configured]})]) ) ) ) (Com {[LIT_CHARS return]} {[VarSub exitcode]}) ) ) (FunctionDef default_mirror [] (= scope= flags=0 words=[] bindings=[('DEF_MIRROR', {[DQ [VarSub 1]]})]) ) (= scope= flags=0 words=[] bindings=[('FINDDEBS_NEEDS_INDICES', {[LIT_CHARS false]})]) (FunctionDef finddebs_style [] (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS hardcoded]}], [{[LIT_CHARS from-indices]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (= scope= flags=0 words=[] bindings=[('FINDDEBS_NEEDS_INDICES', {[LIT_CHARS true]})]) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS BADFINDDEBS]} {[DQ [LIT_CHARS "unknown finddebs style"]]}) ) ) (FunctionDef mk_download_dirs [] (If (Com {[LIT_OTHER "["]} {[VarSub DLDEST]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS apt_dest]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub TARGET][LIT_CHARS /][VarSub APTSTATE][LIT_CHARS /lists/partial]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub TARGET][LIT_CHARS /var/cache/apt/archives/partial]]}) ) ) ) (FunctionDef download_style [] (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS apt]}], [{[LIT_OTHER "*"]}]] (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 2]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS var-state]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('APTSTATE', {[LIT_CHARS var/state/apt]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('APTSTATE', {[LIT_CHARS var/lib/apt]})]) ) (= scope= flags=0 words=[] bindings=[('DLDEST', {[LIT_CHARS apt_dest]})]) (= scope= flags=1 words=[{[LIT_CHARS APTSTATE]}, {[LIT_CHARS DLDEST]}, {[LIT_CHARS DEBFOR]}] bindings=[]) ) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS BADDLOAD]} {[DQ [LIT_CHARS "unknown download style"]]}) ) ) (FunctionDef keyring [] (List (= scope= flags=0 words=[] bindings=[('KEYRING_WANTED', {[DQ [VarSub 1]]})]) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub KEYRING]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub KEYRING_WANTED]]} {[LIT_OTHER "]"]}) ) (= scope= flags=0 words=[] bindings=[('KEYRING', {[DQ [VarSub KEYRING_WANTED]]})]) ) ) ) (FunctionDef doing_variant [] (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [VarSub VARIANT]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS -]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub VARIANT]]} {[LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('SUPPORTED_VARIANTS', {[DQ [LIT_CHARS -]]})]) (FunctionDef variants [] (List (= scope= flags=0 words=[] bindings=[('SUPPORTED_VARIANTS', {[DQ [VarSub *]]})]) (For v [{[VarSub *]}]) (If (Com {[LIT_CHARS doing_variant]} {[DQ [VarSub v]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS UNSUPPVARIANT]} {[DQ [LIT_CHARS "unsupported variant"]]}) ) ) (FunctionDef mirror_style [] (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS release]}], [{[LIT_CHARS main]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('DOWNLOAD_INDICES', {[LIT_CHARS download_release_indices]})]) (= scope= flags=0 words=[] bindings=[('DOWNLOAD_DEBS', {[LIT_CHARS download_release]})]) ) (List (= scope= flags=0 words=[] bindings=[('DOWNLOAD_INDICES', {[LIT_CHARS download_main_indices]})]) (= scope= flags=0 words=[] bindings=[('DOWNLOAD_DEBS', {[LIT_CHARS download_main]})]) ) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS BADMIRROR]} {[DQ [LIT_CHARS "unknown mirror style"]]}) ) (= scope= flags=1 words=[{[LIT_CHARS DOWNLOAD_INDICES]}] bindings=[]) (= scope= flags=1 words=[{[LIT_CHARS DOWNLOAD_DEBS]}] bindings=[]) ) ) (FunctionDef force_md5 [] (List (= scope= flags=0 words=[] bindings=[('DEBOOTSTRAP_CHECKSUM_FIELD', {[LIT_CHARS MD5SUM]})]) (= scope= flags=1 words=[{[LIT_CHARS DEBOOTSTRAP_CHECKSUM_FIELD]}] bindings=[]) ) ) (FunctionDef verify_checksum [] (List (= scope= flags=0 words=[] bindings=[('expchecksum', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('expsize', {[DQ [VarSub 3]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub DEBOOTSTRAP_CHECKSUM_FIELD]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS MD5SUM]]} {[LIT_OTHER "]"]}) (If (Com {[LIT_CHARS in_path]} {[LIT_CHARS md5sum]}) (= scope= flags=0 words=[] bindings=[('relchecksum', {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS md5sum]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]})]) (Com {[LIT_CHARS in_path]} {[LIT_CHARS md5]}) (= scope= flags=0 words=[] bindings=[('relchecksum', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS md5]})]})]) (ElseTrue) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS SIGCHECK]} {[DQ [LIT_CHARS "Cannot check md5sum"]]}) ) (ElseTrue) (If (Com {[LIT_CHARS in_path]} {[DQ [LIT_CHARS sha][VarSub SHA_SIZE][LIT_CHARS sum]]}) (= scope= flags=0 words=[] bindings=[('relchecksum', {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS sha] [VarSub SHA_SIZE] [LIT_CHARS sum]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]})]) (Com {[LIT_CHARS in_path]} {[DQ [LIT_CHARS sha][VarSub SHA_SIZE]]}) (= scope= flags=0 words=[] bindings=[('relchecksum', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS sha] [VarSub SHA_SIZE]})]})]) (ElseTrue) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS SIGCHECK]} {[DQ [LIT_CHARS "Cannot check sha"][VarSub SHA_SIZE][LIT_CHARS sum]]}) ) ) (= scope= flags=0 words=[] bindings=[('relsize', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS wc]} {[LIT_CHARS -c]})]})]) (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub expsize]]} {[LIT_CHARS -ne]} {[DQ [VarSub relsize]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub expchecksum]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub relchecksum]]} {[LIT_OTHER "]"]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (FunctionDef get [] (List (= scope= flags=0 words=[{[LIT_CHARS displayname]}] bindings=[]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 2 transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS .deb]}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub 2]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('displayname', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('displayname', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]]})]) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub 2]]} {[LIT_OTHER "]"]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 3]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub 3]]} {[LIT_OTHER "="]} {[LIT_CHARS nocache]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub 2]]}) (ElseTrue) (List (Com {[LIT_CHARS info]} {[LIT_CHARS VALIDATING]} {[DQ [LIT_CHARS "Validating %s"]]} {[DQ [VarSub displayname]]}) (If (Com {[LIT_CHARS verify_checksum]} {[DQ [VarSub 2]]} {[DQ [VarSub 3]]} {[DQ [VarSub 4]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) (ElseTrue) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub 2]]}) ) ) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 3]]} {[LIT_OTHER "="]} {[LIT_CHARS nocache]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS set]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]}) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub #]]} {[LIT_CHARS -gt]} {[LIT_CHARS 5]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('st', {[LIT_CHARS 3]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 5]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS -]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('st', {[LIT_CHARS 6]})]) ) (= scope= flags=0 words=[] bindings=[('order', {[DQ [ComSub (List (= scope= flags=0 words=[] bindings=[('a', {[VarSub st]})]) (Pipeline (While (Com {[LIT_OTHER "["]} {[DQ [VarSub a]]} {[LIT_CHARS -le]} {[VarSub #]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS eval]} {[LIT_CHARS echo]} {[\ LIT_ESCAPED_CHAR "\\\""] [\ LIT_ESCAPED_CHAR "\\$"] [LIT_LBRACE "{"] [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub a]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}] [LIT_RBRACE "}"] [\ LIT_ESCAPED_CHAR "\\\""]} {[VarSub a]}) (= scope= flags=0 words=[] bindings=[('a', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub a]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 3]}}}]})]) ) ) (Com {[LIT_CHARS sort]} {[LIT_CHARS -n]}) (Com {[LIT_CHARS sed]} {[SQ ]}) ) )]]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('order', {[LIT_CHARS 3]})]) ) (For a [{[VarSub order]}]) (List (= scope= flags=0 words=[] bindings=[('checksum', {[DQ [ComSub (Com {[LIT_CHARS eval]} {[LIT_CHARS echo]} {[\ LIT_ESCAPED_CHAR "\\$"] [LIT_LBRACE "{"] [VarSub a] [LIT_RBRACE "}"]})]]})]) (= scope= flags=0 words=[] bindings=[('siz', {[DQ [ComSub (Com {[LIT_CHARS eval]} {[LIT_CHARS echo]} {[\ LIT_ESCAPED_CHAR "\\$"] [LIT_LBRACE "{"] [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub a]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}] [LIT_RBRACE "}"]})]]})]) (= scope= flags=0 words=[] bindings=[('typ', {[DQ [ComSub (Com {[LIT_CHARS eval]} {[LIT_CHARS echo]} {[\ LIT_ESCAPED_CHAR "\\$"] [LIT_LBRACE "{"] [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub a]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}}}] [LIT_RBRACE "}"]})]]})]) (= scope= flags=0 words=[{[LIT_CHARS from]}] bindings=[]) (= scope= flags=0 words=[{[LIT_CHARS dest]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('iters', {[LIT_CHARS 0]})]) (Case to_match={[DQ [VarSub typ]]}, pat_word_list=[[{[LIT_CHARS bz2]}], [{[LIT_CHARS gz]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('from', {[DQ [VarSub 1][LIT_CHARS .bz2]]})]) (= scope= flags=0 words=[] bindings=[('dest', {[DQ [VarSub 2][LIT_CHARS .bz2]]})]) ) (List (= scope= flags=0 words=[] bindings=[('from', {[DQ [VarSub 1][LIT_CHARS .gz]]})]) (= scope= flags=0 words=[] bindings=[('dest', {[DQ [VarSub 2][LIT_CHARS .gz]]})]) ) (List (= scope= flags=0 words=[] bindings=[('from', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('dest', {[DQ [VarSub 2]]})]) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub dest transform_ops=[VS_UNARY_POUND {[LIT_SLASH /]}]]]} {[LIT_OTHER "="]} {[DQ [VarSub dest]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('dest', {[DQ [LIT_CHARS ./][VarSub dest]]})]) ) (= scope= flags=0 words=[] bindings=[('dest2', {[DQ [VarSub dest]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub dest2 transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]][LIT_CHARS /partial]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('dest2', {[DQ [VarSub dest2 transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]][LIT_CHARS /partial/][VarSub dest2 transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]]})]) ) (While (Com {[LIT_OTHER "["]} {[DQ [VarSub iters]]} {[LIT_CHARS -lt]} {[LIT_CHARS 10]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS info]} {[LIT_CHARS RETRIEVING]} {[DQ [LIT_CHARS "Retrieving %s"]]} {[DQ [VarSub displayname]]}) (If (Pipeline! (Com {[LIT_CHARS just_get]} {[DQ [VarSub from]]} {[DQ [VarSub dest2]]}) ) (Com {[LIT_CHARS continue]} {[LIT_CHARS 2]}) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub checksum]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS info]} {[LIT_CHARS VALIDATING]} {[DQ [LIT_CHARS "Validating %s"]]} {[DQ [VarSub displayname]]}) (If (Com {[LIT_CHARS verify_checksum]} {[DQ [VarSub dest2]]} {[DQ [VarSub checksum]]} {[DQ [VarSub siz]]}) (= scope= flags=0 words=[] bindings=[('checksum', {[DQ ]})]) ) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub checksum]]} {[LIT_OTHER "]"]}) (List (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub dest2]]} {[LIT_OTHER "="]} {[DQ [VarSub dest]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS mv]} {[DQ [VarSub dest2]]} {[DQ [VarSub dest]]}) ) (Case to_match={[DQ [VarSub typ]]}, pat_word_list=[[{[LIT_CHARS gz]}], [{[LIT_CHARS bz2]}]] (Com {[LIT_CHARS gunzip]} {[DQ [VarSub dest]]}) (Com {[LIT_CHARS bunzip2]} {[DQ [VarSub dest]]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (ElseTrue) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub dest2]]}) (Com {[LIT_CHARS warning]} {[LIT_CHARS RETRYING]} {[DQ [LIT_CHARS "Retrying failed download of %s"]]} {[DQ [VarSub from]]}) (= scope= flags=0 words=[] bindings=[('iters', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub iters]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]]})]) ) ) ) ) (Com {[LIT_CHARS warning]} {[LIT_CHARS CORRUPTFILE]} {[DQ [LIT_CHARS "%s was corrupt"]]} {[DQ [VarSub from]]}) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (FunctionDef just_get [] (List (= scope= flags=0 words=[] bindings=[('from', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('dest', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub dest transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "null:"]}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub from]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS NOTPREDL]} {[DQ [LIT_CHARS "%s was not pre-downloaded"]]} {[DQ [VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "null:"]}]]]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "http:"] [LIT_SLASH /] [LIT_SLASH /]}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub from]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "ftp:"] [LIT_SLASH /] [LIT_SLASH /]}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub from]]} {[LIT_OTHER "]"]}) ) (If (Com {[LIT_CHARS wgetprogress]} {[LIT_CHARS -O]} {[DQ [VarSub dest]]} {[DQ [VarSub from]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) (ElseTrue) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub dest]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "https:"] [LIT_SLASH /] [LIT_SLASH /]}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub from]]} {[LIT_OTHER "]"]}) (If (Com {[LIT_CHARS wgetprogress]} {[VarSub CHECKCERTIF]} {[VarSub CERTIFICATE]} {[VarSub PRIVATEKEY]} {[LIT_CHARS -O]} {[DQ [VarSub dest]]} {[DQ [VarSub from]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) (ElseTrue) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub dest]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "file:"]}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub from]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('base', {[DQ [VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "file:"]}]]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub base transform_ops=[VS_UNARY_POUND {[LIT_SLASH /] [LIT_SLASH /]}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub base]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('base', {[DQ [LIT_CHARS /][VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "file:"] [LIT_SLASH /] [LIT_SLASH /] [LIT_CHARS "*"] [LIT_SLASH /]}]]]})]) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub base]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS cp]} {[DQ [VarSub base]]} {[DQ [VarSub dest]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (ElseTrue) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub from transform_ops=[VS_UNARY_POUND {[LIT_CHARS "ssh:"]}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub from]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('ssh_dest', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub from]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]}) )]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub ssh_dest]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS scp]} {[DQ [VarSub ssh_dest]]} {[DQ [VarSub dest]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (ElseTrue) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (ElseTrue) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS UNKNOWNLOC]} {[DQ [LIT_CHARS "unknown location %s"]]} {[DQ [VarSub from]]}) ) ) ) (FunctionDef download [] (List (Com {[LIT_CHARS mk_download_dirs]}) (Com {[DQ [VarSub DOWNLOAD_DEBS]]} {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS sort]}) )]}) ) ) (FunctionDef download_indices [] (List (Com {[LIT_CHARS mk_download_dirs]}) (Com {[DQ [VarSub DOWNLOAD_INDICES]]} {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS sort]}) )]}) ) ) (FunctionDef debfor [] (Subshell (While (Com {[LIT_CHARS read]} {[LIT_CHARS pkg]} {[LIT_CHARS path]}) (For p [{[DQ [VarSub @]]}]) (List (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub p]]} {[LIT_OTHER "="]} {[DQ [VarSub pkg]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS continue]}) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub path]]}) ) ) ) ) ) (FunctionDef apt_dest [] (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS deb]}], [{[LIT_CHARS pkg]}], [{[LIT_CHARS rel]}]] (Pipeline (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS /var/cache/apt/archives/][VarSub 2][LIT_CHARS _][VarSub 3][LIT_CHARS _][VarSub 4][LIT_CHARS .deb]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) ) (List (= scope= flags=0 words=[] bindings=[('m', {[DQ [VarSub 5]]})]) (= scope= flags=0 words=[] bindings=[('m', {[DQ [LIT_CHARS debootstrap.invalid]]})]) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"]]} {[DQ [VarSub APTSTATE][LIT_CHARS /lists/]]}) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub m][LIT_CHARS _][VarSub 6]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) ) ) (List (= scope= flags=0 words=[] bindings=[('m', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('m', {[DQ [LIT_CHARS debootstrap.invalid]]})]) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"]]} {[DQ [VarSub APTSTATE][LIT_CHARS /lists/]]}) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub m][LIT_CHARS _][VarSub 4]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) ) ) ) ) (FunctionDef get_release_checksum [] (List (= scope= flags=0 words=[] bindings=[('reldest', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('path', {[DQ [VarSub 2]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub DEBOOTSTRAP_CHECKSUM_FIELD]]} {[LIT_OTHER "="]} {[LIT_CHARS MD5SUM]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('match', {[DQ [LIT_CHARS "^[Mm][Dd]5[Ss][Uu][Mm]"]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('match', {[DQ [LIT_CHARS "^[Ss][Hh][Aa]"][VarSub SHA_SIZE][LIT_CHARS ":"]]})]) ) (Pipeline (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS /][VarSub match][LIT_CHARS "/,/^[^ ]/p"]]} < (FilenameRedirectNode filename={[DQ [VarSub reldest]]} 0), > ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS a]} {[LIT_CHARS b]} {[LIT_CHARS c]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub c]]} {[LIT_OTHER "="]} {[DQ [VarSub path]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub a][LIT_CHARS " "][VarSub b]]}) ) ) (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef extract_release_components [] (List (= scope= flags=0 words=[] bindings=[('reldest', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('TMPCOMPONENTS', {[DQ [ComSub (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[SQ ]} {[DQ [VarSub reldest]]})]]})]) (For c [{[VarSub TMPCOMPONENTS]}]) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\t\tcase "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS c][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " in\n"][LIT_CHARS "\t\t "][VarSub USE_COMPONENTS][LIT_CHARS ")\n"][LIT_CHARS "\t\t\tCOMPONENTS="][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "COMPONENTS "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS c][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "\n"][LIT_CHARS "\t\t\t;;\n"][LIT_CHARS "\t\tesac\n"][LIT_CHARS "\t\t"]]}) ) (= scope= flags=0 words=[] bindings=[('COMPONENTS', {[DQ [ComSub (Com {[LIT_CHARS echo]} {[VarSub COMPONENTS]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub COMPONENTS]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS mv]} {[DQ [VarSub reldest]]} {[DQ [VarSub reldest][LIT_CHARS .malformed]]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS INVALIDREL]} {[DQ [LIT_CHARS "Invalid Release file, no valid components"]]}) ) ) ) ) (FunctionDef download_release_sig [] (List (= scope= flags=0 words=[] bindings=[('m1', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('reldest', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('relsigdest', {[DQ [VarSub 3]]})]) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub KEYRING]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub DISABLE_KEYRING]]} {[LIT_OTHER "]"]}) ) (List (Com {[LIT_CHARS progress]} {[LIT_CHARS 0]} {[LIT_CHARS 100]} {[LIT_CHARS DOWNRELSIG]} {[DQ [LIT_CHARS "Downloading Release file signature"]]}) (Com {[LIT_CHARS progress_next]} {[LIT_CHARS 50]}) (AndOr OP_OR_IF (Com {[LIT_CHARS get]} {[DQ [VarSub m1][LIT_CHARS /dists/][VarSub SUITE][LIT_CHARS /Release.gpg]]} {[DQ [VarSub relsigdest]]} {[LIT_CHARS nocache]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS NOGETRELSIG]} {[DQ [LIT_CHARS "Failed getting release signature file %s"]]} {[DQ [VarSub m1][LIT_CHARS /dists/][VarSub SUITE][LIT_CHARS /Release.gpg]]}) ) (Com {[LIT_CHARS progress]} {[LIT_CHARS 50]} {[LIT_CHARS 100]} {[LIT_CHARS DOWNRELSIG]} {[DQ [LIT_CHARS "Downloading Release file signature"]]}) (Com {[LIT_CHARS info]} {[LIT_CHARS RELEASESIG]} {[DQ [LIT_CHARS "Checking Release signature"]]}) (Pipeline (Subshell (AndOr OP_OR_IF (Com {[LIT_CHARS gpgv]} {[LIT_CHARS --status-fd]} {[LIT_CHARS 1]} {[LIT_CHARS --keyring]} {[DQ [VarSub KEYRING]]} {[LIT_CHARS --ignore-time-conflict]} {[DQ [VarSub relsigdest]]} {[DQ [VarSub reldest]]}) (Com {[LIT_CHARS true]}) ) ) (Com {[LIT_CHARS read_gpg_status]}) ) (Com {[LIT_CHARS progress]} {[LIT_CHARS 100]} {[LIT_CHARS 100]} {[LIT_CHARS DOWNRELSIG]} {[DQ [LIT_CHARS "Downloading Release file signature"]]}) ) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub DISABLE_KEYRING]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub KEYRING_WANTED]]} {[LIT_OTHER "]"]}) ) (Com {[LIT_CHARS warning]} {[LIT_CHARS KEYRING]} {[DQ [LIT_CHARS "Cannot check Release signature; keyring file not available %s"]]} {[DQ [VarSub KEYRING_WANTED]]}) ) ) ) (FunctionDef download_release_indices [] (List (= scope= flags=0 words=[] bindings=[('m1', {[DQ [VarSub MIRRORS transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]]})]) (= scope= flags=0 words=[] bindings=[('reldest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS rel]} {[DQ [VarSub SUITE]]} {[DQ [VarSub m1]]} {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /Release]]})]]})]) (= scope= flags=0 words=[{[LIT_CHARS relsigdest]}] bindings=[]) (Com {[LIT_CHARS progress]} {[LIT_CHARS 0]} {[LIT_CHARS 100]} {[LIT_CHARS DOWNREL]} {[DQ [LIT_CHARS "Downloading Release file"]]}) (Com {[LIT_CHARS progress_next]} {[LIT_CHARS 100]}) (AndOr OP_OR_IF (Com {[LIT_CHARS get]} {[DQ [VarSub m1][LIT_CHARS /dists/][VarSub SUITE][LIT_CHARS /Release]]} {[DQ [VarSub reldest]]} {[LIT_CHARS nocache]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS NOGETREL]} {[DQ [LIT_CHARS "Failed getting release file %s"]]} {[DQ [VarSub m1][LIT_CHARS /dists/][VarSub SUITE][LIT_CHARS /Release]]}) ) (= scope= flags=0 words=[] bindings=[('relsigdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS rel]} {[DQ [VarSub SUITE]]} {[DQ [VarSub m1]]} {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /Release.gpg]]})]]})]) (Com {[LIT_CHARS progress]} {[LIT_CHARS 100]} {[LIT_CHARS 100]} {[LIT_CHARS DOWNREL]} {[DQ [LIT_CHARS "Downloading Release file"]]}) (Com {[LIT_CHARS download_release_sig]} {[DQ [VarSub m1]]} {[DQ [VarSub reldest]]} {[DQ [VarSub relsigdest]]}) (Com {[LIT_CHARS extract_release_components]} {[VarSub reldest]}) (= scope= flags=0 words=[] bindings=[('totalpkgs', {[LIT_CHARS 0]})]) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('subpath', {[DQ [VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('bz2i', {[DQ [ComSub (Com {[LIT_CHARS get_release_checksum]} {[DQ [VarSub reldest]]} {[DQ [VarSub subpath][LIT_CHARS .bz2]]})]]})]) (= scope= flags=0 words=[] bindings=[('gzi', {[DQ [ComSub (Com {[LIT_CHARS get_release_checksum]} {[DQ [VarSub reldest]]} {[DQ [VarSub subpath][LIT_CHARS .gz]]})]]})]) (= scope= flags=0 words=[] bindings=[('normi', {[DQ [ComSub (Com {[LIT_CHARS get_release_checksum]} {[DQ [VarSub reldest]]} {[DQ [VarSub subpath]]})]]})]) (= scope= flags=0 words=[] bindings=[('i', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub normi]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('i', {[DQ [VarSub normi]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS in_path]} {[LIT_CHARS bunzip2]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub bz2i]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) ) (= scope= flags=0 words=[] bindings=[('i', {[DQ [VarSub bz2i]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS in_path]} {[LIT_CHARS gunzip]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub gzi]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) ) (= scope= flags=0 words=[] bindings=[('i', {[DQ [VarSub gzi]]})]) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub i]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('totalpkgs', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub totalpkgs]}} {A Atom NODE_ARITH_WORD {[VarSub i transform_ops=[VS_UNARY_POUND {[LIT_CHARS "* "]}]]}}}]]})]) (ElseTrue) (List (Com {[LIT_CHARS mv]} {[DQ [VarSub reldest]]} {[DQ [VarSub reldest][LIT_CHARS .malformed]]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS MISSINGRELENTRY]} {[DQ [LIT_CHARS "Invalid Release file, no entry for %s"]]} {[DQ [VarSub subpath]]}) ) ) ) ) (= scope= flags=0 words=[] bindings=[('donepkgs', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[{[LIT_CHARS pkgdest]}] bindings=[]) (Com {[LIT_CHARS progress]} {[LIT_CHARS 0]} {[VarSub totalpkgs]} {[LIT_CHARS DOWNPKGS]} {[DQ [LIT_CHARS "Downloading Packages files"]]}) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('subpath', {[DQ [VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub subpath]]})]) (= scope= flags=0 words=[] bindings=[('bz2i', {[DQ [ComSub (Com {[LIT_CHARS get_release_checksum]} {[DQ [VarSub reldest]]} {[DQ [VarSub subpath][LIT_CHARS .bz2]]})]]})]) (= scope= flags=0 words=[] bindings=[('gzi', {[DQ [ComSub (Com {[LIT_CHARS get_release_checksum]} {[DQ [VarSub reldest]]} {[DQ [VarSub subpath][LIT_CHARS .gz]]})]]})]) (= scope= flags=0 words=[] bindings=[('normi', {[DQ [ComSub (Com {[LIT_CHARS get_release_checksum]} {[DQ [VarSub reldest]]} {[DQ [VarSub subpath]]})]]})]) (= scope= flags=0 words=[] bindings=[('ext', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('i', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub normi]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('ext', {[DQ [VarSub ext][LIT_CHARS " "][VarSub normi][LIT_CHARS " ."]]})]) (= scope= flags=0 words=[] bindings=[('i', {[DQ [VarSub normi]]})]) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS in_path]} {[LIT_CHARS bunzip2]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub bz2i]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) ) (List (= scope= flags=0 words=[] bindings=[('ext', {[DQ [VarSub ext][LIT_CHARS " "][VarSub bz2i][LIT_CHARS " bz2"]]})]) (= scope= flags=0 words=[] bindings=[('i', {[DQ [VarSub i test_op=VS_TEST_COLON_HYPHEN {[VarSub bz2i]}]]})]) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS in_path]} {[LIT_CHARS gunzip]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub gzi]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) ) (List (= scope= flags=0 words=[] bindings=[('ext', {[DQ [VarSub ext][LIT_CHARS " "][VarSub gzi][LIT_CHARS " gz"]]})]) (= scope= flags=0 words=[] bindings=[('i', {[DQ [VarSub i test_op=VS_TEST_COLON_HYPHEN {[VarSub gzi]}]]})]) ) ) (Com {[LIT_CHARS progress_next]} {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub donepkgs]}} {A Atom NODE_ARITH_WORD {[VarSub i transform_ops=[VS_UNARY_POUND {[LIT_CHARS "* "]}]]}}}]]}) (For m [{[VarSub MIRRORS]}]) (List (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m]]} {[DQ [VarSub path]]})]]})]) (If (Com {[LIT_CHARS get]} {[DQ [VarSub m][LIT_CHARS /][VarSub path]]} {[DQ [VarSub pkgdest]]} {[VarSub ext]}) (Com {[LIT_CHARS break]}) ) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub pkgdest]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS COULDNTDL]} {[DQ [LIT_CHARS "Couldn't download %s"]]} {[DQ [VarSub path]]}) ) (= scope= flags=0 words=[] bindings=[('donepkgs', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub donepkgs]}} {A Atom NODE_ARITH_WORD {[VarSub i transform_ops=[VS_UNARY_POUND {[LIT_CHARS "* "]}]]}}}]]})]) (Com {[LIT_CHARS progress]} {[VarSub donepkgs]} {[VarSub totalpkgs]} {[LIT_CHARS DOWNPKGS]} {[DQ [LIT_CHARS "Downloading Packages files"]]}) ) ) ) ) (FunctionDef get_package_sizes [] (List (= scope= flags=0 words=[] bindings=[('m', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (Pipeline (Com {[VarSub PKGDETAILS]} {[LIT_CHARS PKGS]} {[DQ [VarSub m]]} {[DQ [VarSub pkgdest]]} {[DQ [VarSub @]]}) (Subshell (List (= scope= flags=0 words=[] bindings=[('newleft', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('totaldebs', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('countdebs', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS p]} {[LIT_CHARS details]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub details]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS -]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('newleft', {[DQ [VarSub newleft][LIT_CHARS " "][VarSub p]]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('size', {[DQ [VarSub details transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "* "]}]]]})]) (= scope= flags=0 words=[] bindings=[('totaldebs', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub totaldebs]}} {A Atom NODE_ARITH_WORD {[VarSub size]}}}]]})]) (= scope= flags=0 words=[] bindings=[('countdebs', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub countdebs]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]]})]) ) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub countdebs][LIT_CHARS " "][VarSub totaldebs][VarSub newleft]]}) ) ) ) ) ) (FunctionDef download_debs [] (List (= scope= flags=0 words=[] bindings=[('m', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Pipeline (Com {[VarSub PKGDETAILS]} {[LIT_CHARS PKGS]} {[DQ [VarSub m]]} {[DQ [VarSub pkgdest]]} {[DQ [VarSub @]]}) (Subshell (List (= scope= flags=0 words=[] bindings=[('leftover', {[DQ ]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS p]} {[LIT_CHARS ver]} {[LIT_CHARS arc]} {[LIT_CHARS mdup]} {[LIT_CHARS fil]} {[LIT_CHARS checksum]} {[LIT_CHARS size]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub ver]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS -]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('leftover', {[DQ [VarSub leftover][LIT_CHARS " "][VarSub p]]})]) (ElseTrue) (List (Com {[LIT_CHARS progress_next]} {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub dloaddebs]}} {A Atom NODE_ARITH_WORD {[VarSub size]}}}]]}) (= scope= flags=0 words=[] bindings=[('debdest', {[DQ [ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS deb]} {[DQ [VarSub p]]} {[DQ [VarSub ver]]} {[DQ [VarSub arc]]} {[DQ [VarSub m]]} {[DQ [VarSub fil]]})]]})]) (If (Com {[LIT_CHARS get]} {[DQ [VarSub m][LIT_CHARS /][VarSub fil]]} {[DQ [VarSub TARGET][LIT_CHARS /][VarSub debdest]]} {[DQ [VarSub checksum]]} {[DQ [VarSub size]]}) (List (= scope= flags=0 words=[] bindings=[('dloaddebs', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub dloaddebs]}} {A Atom NODE_ARITH_WORD {[VarSub size]}}}]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub p][LIT_CHARS " "][VarSub debdest]]} < (FilenameRedirectNode filename={[VarSub TARGET] [LIT_CHARS /debootstrap/debpaths]} >"> 1), > ) ) (ElseTrue) (List (Com {[LIT_CHARS warning]} {[LIT_CHARS COULDNTDL]} {[DQ [LIT_CHARS "Couldn't download package %s (ver %s arch %s)"]]} {[DQ [VarSub p]]} {[DQ [VarSub ver]]} {[DQ [VarSub arc]]}) (= scope= flags=0 words=[] bindings=[('leftover', {[DQ [VarSub leftover][LIT_CHARS " "][VarSub p]]})]) ) ) ) ) ) (Com {[LIT_CHARS echo]} {[VarSub leftover transform_ops=[VS_UNARY_POUND {[LIT_CHARS " "]}]]} < (DescriptorRedirectNode target={[LIT_CHARS 5]} &"> 1), > ) ) ) ) ) ) (FunctionDef download_release [] (List (= scope= flags=0 words=[] bindings=[('m1', {[DQ [VarSub MIRRORS transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]]})]) (= scope= flags=0 words=[] bindings=[('numdebs', {[DQ [VarSub #]]})]) (= scope= flags=0 words=[] bindings=[('countdebs', {[LIT_CHARS 0]})]) (Com {[LIT_CHARS progress]} {[VarSub countdebs]} {[VarSub numdebs]} {[LIT_CHARS SIZEDEBS]} {[DQ [LIT_CHARS "Finding package sizes"]]}) (= scope= flags=0 words=[] bindings=[('totaldebs', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('leftoverdebs', {[DQ [VarSub *]]})]) (For c [{[VarSub COMPONENTS]}]) (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub countdebs]]} {[LIT_CHARS -ge]} {[DQ [VarSub numdebs]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS break]}) ) (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m1]]} {[DQ [VarSub path]]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub pkgdest]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS continue]}) ) (Com {[LIT_CHARS info]} {[LIT_CHARS CHECKINGSIZES]} {[DQ [LIT_CHARS "Checking component %s on %s..."]]} {[DQ [VarSub c]]} {[DQ [VarSub m1]]}) (= scope= flags=0 words=[] bindings=[('leftoverdebs', {[DQ [ComSub (Com {[LIT_CHARS get_package_sizes]} {[DQ [VarSub m1]]} {[DQ [VarSub pkgdest]]} {[VarSub leftoverdebs]})]]})]) (= scope= flags=0 words=[] bindings=[('countdebs', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub countdebs]}} {A Atom NODE_ARITH_WORD {[VarSub leftoverdebs transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]}}}]})]) (= scope= flags=0 words=[] bindings=[('leftoverdebs', {[VarSub leftoverdebs transform_ops=[VS_UNARY_POUND {[LIT_CHARS "* "]}]]})]) (= scope= flags=0 words=[] bindings=[('totaldebs', {[VarSub leftoverdebs transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]})]) (= scope= flags=0 words=[] bindings=[('leftoverdebs', {[VarSub leftoverdebs transform_ops=[VS_UNARY_POUND {[LIT_CHARS "* "]}]]})]) (Com {[LIT_CHARS progress]} {[VarSub countdebs]} {[VarSub numdebs]} {[LIT_CHARS SIZEDEBS]} {[DQ [LIT_CHARS "Finding package sizes"]]}) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub countdebs]]} {[LIT_CHARS -ne]} {[DQ [VarSub numdebs]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS LEFTOVERDEBS]} {[DQ [LIT_CHARS "Couldn't find these debs: %s"]]} {[DQ [VarSub leftoverdebs]]}) ) (= scope= flags=0 words=[] bindings=[('dloaddebs', {[LIT_CHARS 0]})]) (Com {[LIT_CHARS progress]} {[VarSub dloaddebs]} {[VarSub totaldebs]} {[LIT_CHARS DOWNDEBS]} {[DQ [LIT_CHARS "Downloading packages"]]}) (Com {[LIT_OTHER ":"]} < (FilenameRedirectNode filename={[VarSub TARGET] [LIT_CHARS /debootstrap/debpaths]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('pkgs_to_get', {[DQ [VarSub *]]})]) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (For m [{[VarSub MIRRORS]}]) (List (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m]]} {[DQ [VarSub path]]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub pkgdest]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS continue]}) ) (= scope= flags=0 words=[] bindings=[('pkgs_to_get', {[DQ [ComSub (Com redirects=[(DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 5) (DescriptorRedirectNode target={[LIT_CHARS 6]} &"> 1)]{[LIT_CHARS download_debs]} {[DQ [VarSub m]]} {[DQ [VarSub pkgdest]]} {[VarSub pkgs_to_get]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub pkgs_to_get]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS break]}) ) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub pkgs_to_get]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS break]}) ) ) ) (Com {[LIT_CHARS progress]} {[VarSub dloaddebs]} {[VarSub totaldebs]} {[LIT_CHARS DOWNDEBS]} {[DQ [LIT_CHARS "Downloading packages"]]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub pkgs_to_get]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS COULDNTDLPKGS]} {[DQ [LIT_CHARS "Couldn't download packages: %s"]]} {[DQ [VarSub pkgs_to_get]]}) ) ) ) (FunctionDef download_main_indices [] (List (= scope= flags=0 words=[] bindings=[('m1', {[DQ [VarSub MIRRORS transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]]})]) (= scope= flags=0 words=[] bindings=[('comp', {[DQ [VarSub USE_COMPONENTS]]})]) (Com {[LIT_CHARS progress]} {[LIT_CHARS 0]} {[LIT_CHARS 100]} {[LIT_CHARS DOWNMAINPKGS]} {[DQ [LIT_CHARS "Downloading Packages file"]]}) (Com {[LIT_CHARS progress_next]} {[LIT_CHARS 100]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub comp]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('comp', {[LIT_CHARS main]})]) ) (= scope= flags=0 words=[] bindings=[('COMPONENTS', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub comp]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) )]]})]) (= scope= flags=1 words=[{[LIT_CHARS COMPONENTS]}] bindings=[]) (For m [{[VarSub MIRRORS]}]) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m]]} {[DQ [VarSub path]]})]]})]) (If (AndOr OP_AND_IF (Com {[LIT_CHARS in_path]} {[LIT_CHARS gunzip]}) (Com {[LIT_CHARS get]} {[DQ [VarSub m][LIT_CHARS /][VarSub path][LIT_CHARS .gz]]} {[DQ [VarSub pkgdest][LIT_CHARS .gz]]}) ) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub pkgdest]]}) (Com {[LIT_CHARS gunzip]} {[DQ [VarSub pkgdest][LIT_CHARS .gz]]}) ) (Com {[LIT_CHARS get]} {[DQ [VarSub m][LIT_CHARS /][VarSub path]]} {[DQ [VarSub pkgdest]]}) (Com {[LIT_CHARS true]}) ) ) ) ) (Com {[LIT_CHARS progress]} {[LIT_CHARS 100]} {[LIT_CHARS 100]} {[LIT_CHARS DOWNMAINPKGS]} {[DQ [LIT_CHARS "Downloading Packages file"]]}) ) ) (FunctionDef download_main [] (List (= scope= flags=0 words=[] bindings=[('m1', {[DQ [VarSub MIRRORS transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]]})]) (Com {[LIT_OTHER ":"]} < (FilenameRedirectNode filename={[VarSub TARGET] [LIT_CHARS /debootstrap/debpaths]} "> 1), > ) (For p [{[DQ [VarSub @]]}]) (List (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('details', {[DQ ]})]) (For m [{[VarSub MIRRORS]}]) (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m]]} {[DQ [VarSub path]]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub pkgdest]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS continue]}) ) (= scope= flags=0 words=[] bindings=[('details', {[DQ [ComSub (Com {[VarSub PKGDETAILS]} {[LIT_CHARS PKGS]} {[DQ [VarSub m]]} {[DQ [VarSub pkgdest]]} {[DQ [VarSub p]]})]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub details]]} {[LIT_OTHER "="]} {[DQ [VarSub p][LIT_CHARS " -"]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('details', {[DQ ]})]) (Com {[LIT_CHARS continue]}) ) ) (= scope= flags=0 words=[] bindings=[('size', {[DQ [VarSub details transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "* "]}]]]})]) (= scope= flags=0 words=[] bindings=[('details', {[DQ [VarSub details transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS " *"]}]]]})]) (= scope= flags=0 words=[] bindings=[('checksum', {[DQ [VarSub details transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "* "]}]]]})]) (= scope= flags=0 words=[] bindings=[('details', {[DQ [VarSub details transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS " *"]}]]]})]) (= scope= flags=0 words=[] bindings=[('debdest', {[DQ [ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS deb]} {[VarSub details]})]]})]) (If (Com {[LIT_CHARS get]} {[DQ [VarSub m][LIT_CHARS /][VarSub details transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "* "]}]]]} {[DQ [VarSub TARGET][LIT_CHARS /][VarSub debdest]]} {[DQ [VarSub checksum]]} {[DQ [VarSub size]]}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub p][LIT_CHARS " "][VarSub debdest]]} < (FilenameRedirectNode filename={[VarSub TARGET] [LIT_CHARS /debootstrap/debpaths]} >"> 1), > ) (= scope= flags=0 words=[] bindings=[('details', {[DQ [LIT_CHARS done]]})]) (Com {[LIT_CHARS break]}) ) ) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub details]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS break]}) ) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub details]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [LIT_CHARS done]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS COULDNTDL]} {[DQ [LIT_CHARS "Couldn't download %s"]]} {[DQ [VarSub p]]}) ) ) ) ) ) (FunctionDef get_debs [] (List (= scope= flags=0 words=[] bindings=[('field', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[{[LIT_CHARS m1]}, {[LIT_CHARS c]}] bindings=[]) (For m1 [{[VarSub MIRRORS]}]) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m1]]} {[DQ [VarSub path]]})]]})]) (Com {[LIT_CHARS echo]} {[ComSub (Pipeline (Com {[DQ [VarSub PKGDETAILS]]} {[LIT_CHARS FIELD]} {[DQ [VarSub field]]} {[DQ [VarSub m1]]} {[DQ [VarSub pkgdest]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]}) ) ) ) ) ) (= scope= flags=0 words=[] bindings=[('EXTRACTORS_SUPPORTED', {[DQ [LIT_CHARS "dpkg-deb ar"]]})]) (FunctionDef extract_dpkg_deb_field [] (List (= scope= flags=0 words=[] bindings=[('pkg', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('field', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS -f]} {[DQ [VarSub pkg]]} {[DQ [VarSub field]]}) ) ) (FunctionDef extract_dpkg_deb_data [] (List (= scope= flags=0 words=[] bindings=[('pkg', {[DQ [VarSub 1]]})]) (Pipeline (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS --fsys-tarfile]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS -xf]} {[LIT_CHARS -]}) ) ) ) (FunctionDef extract_ar_deb_field [] (List (= scope= flags=0 words=[] bindings=[('pkg', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('field', {[DQ [VarSub 2]]})]) (Pipeline (Com {[LIT_CHARS ar]} {[LIT_CHARS -p]} {[DQ [VarSub pkg]]} {[LIT_CHARS control.tar.gz]}) (Com {[LIT_CHARS zcat]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS -O]} {[LIT_CHARS -xf]} {[LIT_CHARS -]} {[LIT_CHARS control]} {[LIT_CHARS ./control]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -i]} {[DQ [LIT_CHARS "^"][VarSub field][LIT_CHARS ":"]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef extract_ar_deb_data [] (List (= scope= flags=0 words=[] bindings=[('pkg', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('tarball', {[ComSub (Pipeline (Com {[LIT_CHARS ar]} {[LIT_CHARS -t]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^data.tar.[bgx]z"]]}) )]})]) (Case to_match={[DQ [VarSub tarball]]}, pat_word_list=[[{[LIT_CHARS data.tar.gz]}], [{[LIT_CHARS data.tar.bz2]}], [{[LIT_CHARS data.tar.xz]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('cat_cmd', {[LIT_CHARS zcat]})]) (= scope= flags=0 words=[] bindings=[('cat_cmd', {[LIT_CHARS bzcat]})]) (= scope= flags=0 words=[] bindings=[('cat_cmd', {[LIT_CHARS xzcat]})]) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS UNKNOWNDATACOMP]} {[DQ [LIT_CHARS "Unknown compression type for %s in %s"]]} {[DQ [VarSub tarball]]} {[DQ [VarSub pkg]]}) ) (If (Com {[LIT_CHARS type]} {[VarSub cat_cmd]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Pipeline (Com {[LIT_CHARS ar]} {[LIT_CHARS -p]} {[DQ [VarSub pkg]]} {[DQ [VarSub tarball]]}) (Com {[VarSub cat_cmd]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS -xf]} {[LIT_CHARS -]}) ) (ElseTrue) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS UNPACKCMDUNVL]} {[DQ [LIT_CHARS "Extracting %s requires the %s command, which is not available"]]} {[DQ [VarSub pkg]]} {[DQ [VarSub cat_cmd]]}) ) ) ) (FunctionDef valid_extractor [] (List (= scope= flags=0 words=[] bindings=[('extractor', {[DQ [VarSub 1]]})]) (For E [{[VarSub EXTRACTORS_SUPPORTED]}]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub extractor]]} {[LIT_OTHER "="]} {[DQ [VarSub E]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (FunctionDef choose_extractor [] (List (= scope= flags=0 words=[{[LIT_CHARS extractor]}] bindings=[]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub EXTRACTOR_OVERRIDE]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('extractor', {[DQ [VarSub EXTRACTOR_OVERRIDE]]})]) (Com {[LIT_CHARS type]} {[LIT_CHARS dpkg-deb]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (= scope= flags=0 words=[] bindings=[('extractor', {[DQ [LIT_CHARS dpkg-deb]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('extractor', {[DQ [LIT_CHARS ar]]})]) ) (Com {[LIT_CHARS info]} {[LIT_CHARS CHOSENEXTRACTOR]} {[DQ [LIT_CHARS "Chosen extractor for .deb packages: %s"]]} {[DQ [VarSub extractor]]}) (Case to_match={[DQ [VarSub extractor]]}, pat_word_list=[[{[LIT_CHARS dpkg-deb]}], [{[LIT_CHARS ar]}]] (List (FunctionDef extract_deb_field [] (Com {[LIT_CHARS extract_dpkg_deb_field]} {[DQ [VarSub @]]}) ) (FunctionDef extract_deb_data [] (Com {[LIT_CHARS extract_dpkg_deb_data]} {[DQ [VarSub @]]}) ) ) (List (FunctionDef extract_deb_field [] (Com {[LIT_CHARS extract_ar_deb_field]} {[DQ [VarSub @]]}) ) (FunctionDef extract_deb_data [] (Com {[LIT_CHARS extract_ar_deb_data]} {[DQ [VarSub @]]}) ) ) ) ) ) (FunctionDef extract [] (Subshell (List (Com {[LIT_CHARS cd]} {[DQ [VarSub TARGET]]}) (= scope= flags=0 words=[{[LIT_CHARS cat_cmd]}] bindings=[('p', {[LIT_CHARS 0]})]) (For pkg [{[ComSub (Com {[LIT_CHARS debfor]} {[DQ [VarSub @]]})]}]) (List (= scope= flags=0 words=[] bindings=[('p', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub p]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]]})]) (Com {[LIT_CHARS progress]} {[DQ [VarSub p]]} {[DQ [VarSub #]]} {[LIT_CHARS EXTRACTPKGS]} {[DQ [LIT_CHARS "Extracting packages"]]}) (= scope= flags=0 words=[] bindings=[('packagename', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]]})]) (Com {[LIT_CHARS info]} {[LIT_CHARS EXTRACTING]} {[DQ [LIT_CHARS "Extracting %s..."]]} {[DQ [VarSub packagename]]}) (Com {[LIT_CHARS extract_deb_data]} {[DQ [LIT_CHARS ./][VarSub pkg]]}) ) ) ) ) ) (FunctionDef in_target_nofail [] (List (If (Pipeline! (Com {[VarSub CHROOT_CMD]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) (Com {[LIT_CHARS true]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (FunctionDef in_target_failmsg [] (List (= scope= flags=0 words=[] bindings=[('code', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('arg', {[DQ [VarSub 3]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (If (Pipeline! (Com {[VarSub CHROOT_CMD]} {[DQ [VarSub @]]}) ) (List (Com {[LIT_CHARS warning]} {[DQ [VarSub code]]} {[DQ [VarSub msg]]} {[DQ [VarSub arg]]}) (= scope= flags=0 words=[] bindings=[('msg', {[DQ [LIT_CHARS "See %s for details"]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub TARGET][LIT_CHARS /debootstrap/debootstrap.log]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('arg', {[DQ [VarSub TARGET][LIT_CHARS /debootstrap/debootstrap.log]]})]) (= scope= flags=0 words=[] bindings=[('pkg', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS grep]} {[SQ ]} {[DQ [VarSub TARGET][LIT_CHARS /debootstrap/debootstrap.log]]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[SQ ]} {[LIT_CHARS -f]} {[LIT_CHARS 4]}) )]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub pkg]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub msg][LIT_CHARS " (possibly the package "][VarSub pkg][LIT_CHARS " is at fault)"]]})]) ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('arg', {[DQ [LIT_CHARS "the log"]]})]) ) (Com {[LIT_CHARS warning]} {[DQ [VarSub code]]} {[DQ [VarSub msg]]} {[DQ [VarSub arg]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (FunctionDef in_target [] (Com {[LIT_CHARS in_target_failmsg]} {[LIT_CHARS IN_TARGET_FAIL]} {[DQ [LIT_CHARS "Failure trying to run: %s"]]} {[DQ [VarSub CHROOT_CMD][LIT_CHARS " "][VarSub *]]} {[DQ [VarSub @]]}) ) (FunctionDef conditional_cp [] (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub 2][LIT_CHARS /][VarSub 1]]} {[LIT_OTHER "]"]}) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -L]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) ) (Com {[LIT_CHARS cat]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub 2][LIT_CHARS /][VarSub 1]]} "> 1), > ) (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[DQ [VarSub 1]]} {[DQ [VarSub 2][LIT_CHARS /][VarSub 1]]}) ) ) ) (FunctionDef mv_invalid_to [] (List (= scope= flags=0 words=[] bindings=[('m', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('m', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub m transform_ops=[VS_UNARY_POUND {[LIT_CHARS "http:"] [LIT_SLASH /] [LIT_SLASH /]}]]]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]]})]) (Subshell (List (Com {[LIT_CHARS cd]} {[DQ [VarSub TARGET][LIT_CHARS /][VarSub APTSTATE][LIT_CHARS /lists]]}) (For a [{[LIT_CHARS debootstrap.invalid_] [LIT_OTHER "*"]}]) (Com {[LIT_CHARS mv]} {[DQ [VarSub a]]} {[DQ [VarSub m][LIT_CHARS _][VarSub a transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*_"]}]]]}) ) ) ) ) ) (FunctionDef setup_apt_sources [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub TARGET][LIT_CHARS /etc/apt]]}) (For m [{[DQ [VarSub @]]}]) (List (= scope= flags=0 words=[] bindings=[('cs', {[DQ ]})]) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m]]} {[DQ [VarSub path]]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub pkgdest]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('cs', {[DQ [VarSub cs][LIT_CHARS " "][VarSub c]]})]) ) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub cs]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "deb "][VarSub m][LIT_CHARS " "][VarSub SUITE][VarSub cs]]}) ) ) ) ) ) (FunctionDef setup_etc [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub TARGET][LIT_CHARS /etc]]}) (Com {[LIT_CHARS conditional_cp]} {[LIT_CHARS /etc/resolv.conf]} {[DQ [VarSub TARGET]]}) (Com {[LIT_CHARS conditional_cp]} {[LIT_CHARS /etc/hostname]} {[DQ [VarSub TARGET]]}) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub DLDEST]]} {[LIT_OTHER "="]} {[LIT_CHARS apt_dest]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub TARGET][LIT_CHARS /etc/apt/sources.list]]} {[LIT_OTHER "]"]}) ) (Com {[LIT_CHARS setup_apt_sources]} {[DQ [LIT_CHARS "http://debootstrap.invalid/"]]}) ) ) ) (= scope= flags=0 words=[] bindings=[('UMOUNT_DIRS', {[SQ ]})]) (FunctionDef umount_exit_function [] (For dir [{[VarSub UMOUNT_DIRS]}]) (AndOr OP_OR_IF (Subshell (List (Com {[LIT_CHARS cd]} {[LIT_CHARS /]}) (Com {[LIT_CHARS umount]} {[DQ [VarSub TARGET][LIT_CHARS /][VarSub dir transform_ops=[VS_UNARY_POUND {[LIT_SLASH /]}]]]}) ) ) (Com {[LIT_CHARS true]}) ) ) ) (FunctionDef umount_on_exit [] (If (Com {[LIT_OTHER "["]} {[DQ [VarSub UMOUNT_DIRS]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('UMOUNT_DIRS', {[DQ [VarSub UMOUNT_DIRS][LIT_CHARS " "][VarSub 1]]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('UMOUNT_DIRS', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS on_exit]} {[LIT_CHARS umount_exit_function]}) ) ) ) (FunctionDef clear_mtab [] (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [VarSub TARGET][LIT_CHARS /etc/mtab]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -h]} {[DQ [VarSub TARGET][LIT_CHARS /etc/mtab]]} {[LIT_OTHER "]"]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub TARGET][LIT_CHARS /etc/mtab]]}) ) ) (FunctionDef setup_proc [] (List (Case to_match={[DQ [VarSub HOST_OS]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS freebsd] [LIT_OTHER "*"]}], [{[LIT_CHARS hurd] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS umount_on_exit]} {[LIT_CHARS /dev]}) (Com {[LIT_CHARS umount_on_exit]} {[LIT_CHARS /proc]}) (AndOr OP_OR_IF (Com {[LIT_CHARS umount]} {[DQ [VarSub TARGET][LIT_CHARS /proc]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]}) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_OS]]} {[LIT_OTHER "="]} {[LIT_CHARS kfreebsd]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS in_target]} {[LIT_CHARS mount]} {[LIT_CHARS -t]} {[LIT_CHARS linprocfs]} {[LIT_CHARS proc]} {[LIT_CHARS /proc]}) (ElseTrue) (Com {[LIT_CHARS mount]} {[LIT_CHARS -t]} {[LIT_CHARS linprocfs]} {[LIT_CHARS proc]} {[VarSub TARGET] [LIT_CHARS /proc]}) ) ) (ElseTrue) (List (Com {[LIT_CHARS umount_on_exit]} {[LIT_CHARS /dev/pts]}) (Com {[LIT_CHARS umount_on_exit]} {[LIT_CHARS /dev/shm]}) (Com {[LIT_CHARS umount_on_exit]} {[LIT_CHARS /proc/bus/usb]}) (Com {[LIT_CHARS umount_on_exit]} {[LIT_CHARS /proc]}) (AndOr OP_OR_IF (Com {[LIT_CHARS umount]} {[DQ [VarSub TARGET][LIT_CHARS /proc]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]}) ) (Com {[LIT_CHARS in_target]} {[LIT_CHARS mount]} {[LIT_CHARS -t]} {[LIT_CHARS proc]} {[LIT_CHARS proc]} {[LIT_CHARS /proc]}) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub TARGET][LIT_CHARS /sys]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]} {[LIT_CHARS /proc/filesystems]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) (List (Com {[LIT_CHARS umount_on_exit]} {[LIT_CHARS /sys]}) (AndOr OP_OR_IF (Com {[LIT_CHARS umount]} {[DQ [VarSub TARGET][LIT_CHARS /sys]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]}) ) (Com {[LIT_CHARS in_target]} {[LIT_CHARS mount]} {[LIT_CHARS -t]} {[LIT_CHARS sysfs]} {[LIT_CHARS sysfs]} {[LIT_CHARS /sys]}) ) ) (Com {[LIT_CHARS on_exit]} {[LIT_CHARS clear_mtab]}) ) ) (Com {[LIT_CHARS umount_on_exit]} {[LIT_CHARS /lib/init/rw]}) ) ) (FunctionDef setup_proc_fakechroot [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub TARGET][LIT_CHARS /proc]]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[LIT_CHARS /proc]} {[DQ [VarSub TARGET]]}) ) ) (FunctionDef setup_devices [] (List (If (Com {[LIT_CHARS doing_variant]} {[LIT_CHARS fakechroot]}) (List (Com {[LIT_CHARS setup_devices_fakechroot]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (Case to_match={[DQ [VarSub HOST_OS]]}, pat_word_list=[[{[LIT_CHARS kfreebsd] [LIT_OTHER "*"]}], [{[LIT_CHARS freebsd]}], [{[LIT_CHARS hurd] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS in_target]} {[LIT_CHARS mount]} {[LIT_CHARS -t]} {[LIT_CHARS devfs]} {[LIT_CHARS devfs]} {[LIT_CHARS /dev]}) (Com {[LIT_CHARS mount]} {[LIT_CHARS -t]} {[LIT_CHARS devfs]} {[LIT_CHARS devfs]} {[VarSub TARGET] [LIT_CHARS /dev]}) (Com {[LIT_CHARS setup_devices_hurd]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub DEVICES_TARGZ]]} {[LIT_OTHER "]"]}) (Pipeline (Com {[LIT_CHARS zcat]} {[DQ [VarSub DEVICES_TARGZ]]}) (Subshell (List (Com {[LIT_CHARS cd]} {[DQ [VarSub TARGET]]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS -xf]} {[LIT_CHARS -]}) ) ) ) (ElseTrue) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[LIT_CHARS /dev/.devfsd]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS in_target]} {[LIT_CHARS mount]} {[LIT_CHARS -t]} {[LIT_CHARS devfs]} {[LIT_CHARS devfs]} {[LIT_CHARS /dev]}) (ElseTrue) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS NODEVTGZ]} {[DQ [LIT_CHARS "no %s. cannot create devices"]]} {[DQ [VarSub DEVICES_TARGZ]]}) ) ) ) ) ) (FunctionDef setup_devices_hurd [] (List (Com {[LIT_CHARS in_target]} {[LIT_CHARS /usr/lib/hurd/setup-translators]} {[LIT_CHARS -k]}) (Com {[LIT_CHARS settrans]} {[LIT_CHARS -a]} {[VarSub TARGET] [LIT_CHARS /dev]} {[LIT_CHARS /hurd/firmlink]} {[LIT_CHARS /dev]}) (Com {[LIT_CHARS settrans]} {[LIT_CHARS -a]} {[VarSub TARGET] [LIT_CHARS /servers]} {[LIT_CHARS /hurd/firmlink]} {[LIT_CHARS /servers]}) ) ) (FunctionDef setup_devices_fakechroot [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub TARGET][LIT_CHARS /dev]]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[LIT_CHARS /dev]} {[DQ [VarSub TARGET]]}) ) ) (FunctionDef setup_dselect_method [] (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS apt]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub TARGET][LIT_CHARS /var/lib/dpkg]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "apt apt"]]} < (FilenameRedirectNode filename={[DQ [VarSub TARGET][LIT_CHARS /var/lib/dpkg/cmethopt]]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS 644]} {[DQ [VarSub TARGET][LIT_CHARS /var/lib/dpkg/cmethopt]]}) ) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS UNKNOWNDSELECT]} {[DQ [LIT_CHARS "unknown dselect method"]]}) ) ) (If (Com {[LIT_CHARS in_path]} {[LIT_CHARS perl]}) (List (= scope= flags=0 words=[] bindings=[('PKGDETAILS', {[LIT_CHARS pkgdetails_perl]})]) (FunctionDef pkgdetails_field [] (Com {[LIT_CHARS perl]} {[LIT_CHARS -le]} {[SQ ) {\n"> ]} {[DQ [VarSub @]]}) ) (FunctionDef pkgdetails_perl [] (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS "WGET%"]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS perl]} {[LIT_CHARS -e]} {[SQ ]} {[DQ [VarSub @]]}) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS GETDEPS]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Pipeline (Com {[LIT_CHARS perl]} {[LIT_CHARS -e]} {[SQ ) {\n"> ]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [VarSub pkgdest]]} 0), > ) (Com {[LIT_CHARS sort]}) (Com {[LIT_CHARS uniq]}) ) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS PKGS]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('m', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('p', {[DQ [VarSub 3]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS pkgdetails_field]} {[LIT_CHARS 1]} {[LIT_CHARS Package] [LIT_OTHER ":"]} {[DQ [VarSub m]]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [VarSub p]]} 0), > ) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS FIELD]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('f', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('m', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('p', {[DQ [VarSub 4]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS pkgdetails_field]} {[LIT_CHARS 0]} {[DQ [VarSub f]]} {[DQ [VarSub m]]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [VarSub p]]} 0), > ) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS STANZAS]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS perl]} {[LIT_CHARS -e]} {[SQ ) {\n"> ]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [VarSub pkgdest]]} 0), > ) ) ) ) ) (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS /usr/lib/debootstrap/pkgdetails]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('PKGDETAILS', {[DQ [LIT_CHARS /usr/lib/debootstrap/pkgdetails]]})]) (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub DEBOOTSTRAP_DIR][LIT_CHARS /pkgdetails]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('PKGDETAILS', {[DQ [VarSub DEBOOTSTRAP_DIR][LIT_CHARS /pkgdetails]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('PKGDETAILS', {[DQ ]})]) ) (FunctionDef resolve_deps [] (List (= scope= flags=0 words=[] bindings=[('m1', {[DQ [VarSub MIRRORS transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]]})]) (= scope= flags=0 words=[] bindings=[('PKGS', {[DQ [VarSub *]]})]) (= scope= flags=0 words=[] bindings=[('ALLPKGS', {[DQ [VarSub PKGS]]})]) (= scope= flags=0 words=[] bindings=[('ALLPKGS2', {[DQ ]})]) (While (Com {[LIT_OTHER "["]} {[DQ [VarSub PKGS]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('NEWPKGS', {[DQ ]})]) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m1]]} {[DQ [VarSub path]]})]]})]) (= scope= flags=0 words=[] bindings=[('NEWPKGS', {[DQ [VarSub NEWPKGS][LIT_CHARS " "][ComSub (Com {[DQ [VarSub PKGDETAILS]]} {[LIT_CHARS GETDEPS]} {[DQ [VarSub pkgdest]]} {[VarSub PKGS]})]]})]) ) ) (= scope= flags=0 words=[] bindings=[('PKGS', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub PKGS][LIT_CHARS " "][VarSub NEWPKGS]]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS sort]}) (Com {[LIT_CHARS uniq]}) )]})]) (= scope= flags=0 words=[] bindings=[('REALPKGS', {[DQ ]})]) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m1]]} {[DQ [VarSub path]]})]]})]) (= scope= flags=0 words=[] bindings=[('REALPKGS', {[DQ [VarSub REALPKGS][LIT_CHARS " "][ComSub (Pipeline (Com {[DQ [VarSub PKGDETAILS]]} {[LIT_CHARS PKGS]} {[LIT_CHARS REAL]} {[DQ [VarSub pkgdest]]} {[VarSub PKGS]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[SQ ]}) )]]})]) ) ) (= scope= flags=0 words=[] bindings=[('PKGS', {[DQ [VarSub REALPKGS]]})]) (= scope= flags=0 words=[] bindings=[('ALLPKGS2', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub PKGS][LIT_CHARS " "][VarSub ALLPKGS]]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS sort]}) (Com {[LIT_CHARS uniq]}) )]})]) (= scope= flags=0 words=[] bindings=[('PKGS', {[ComSub (Com {[LIT_CHARS without]} {[DQ [VarSub ALLPKGS2]]} {[DQ [VarSub ALLPKGS]]})]})]) (= scope= flags=0 words=[] bindings=[('ALLPKGS', {[DQ [VarSub ALLPKGS2]]})]) ) ) (Com {[LIT_CHARS echo]} {[VarSub ALLPKGS]}) ) ) (FunctionDef setup_available [] (List (= scope= flags=0 words=[] bindings=[('m1', {[DQ [VarSub MIRRORS transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]]})]) (For c [{[VarSub COMPONENTS]}]) (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [LIT_CHARS dists/][VarSub SUITE][LIT_CHARS /][VarSub c][LIT_CHARS /binary-][VarSub ARCH][LIT_CHARS /Packages]]})]) (= scope= flags=0 words=[] bindings=[('pkgdest', {[DQ [VarSub TARGET][LIT_CHARS /][ComSub (Com {[VarSub DLDEST]} {[LIT_CHARS pkg]} {[DQ [VarSub SUITE]]} {[DQ [VarSub c]]} {[DQ [VarSub ARCH]]} {[DQ [VarSub m1]]} {[DQ [VarSub path]]})]]})]) (Com {[DQ [VarSub PKGDETAILS]]} {[LIT_CHARS STANZAS]} {[DQ [VarSub pkgdest]]} {[DQ [VarSub @]]}) ) ) (Pipeline (For pkg do_arg_iter) (Com {[LIT_CHARS echo]} {[DQ [VarSub pkg][LIT_CHARS " install"]]}) ) (Com {[LIT_CHARS in_target]} {[LIT_CHARS dpkg]} {[LIT_CHARS --set-selections]}) ) ) ) (FunctionDef get_next_predep [] (List (= scope= flags=0 words=[] bindings=[('stanza', {[DQ [ComSub (Com {[LIT_CHARS in_target_nofail]} {[LIT_CHARS dpkg]} {[LIT_CHARS --predep-package]})]]})]) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub stanza]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub stanza]]}) (Com {[LIT_CHARS grep]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) ) ) ) (FunctionDef check_sane_mount [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub 1]]}) (Case to_match={[DQ [VarSub HOST_OS]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS freebsd] [LIT_OTHER "*"]}, {[LIT_CHARS hurd] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (List (AndOr OP_OR_IF (Com {[LIT_CHARS mknod]} {[DQ [VarSub 1][LIT_CHARS /test-dev-null]]} {[LIT_CHARS c]} {[LIT_CHARS 1]} {[LIT_CHARS 3]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) (If (Pipeline! (Com {[LIT_CHARS echo]} {[LIT_CHARS test]} < (FilenameRedirectNode filename={[DQ [VarSub 1][LIT_CHARS /test-dev-null]]} "> 1), > ) ) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub 1][LIT_CHARS /test-dev-null]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub 1][LIT_CHARS /test-dev-null]]}) ) ) (= scope= flags=0 words=[] bindings=[('SH', {[LIT_CHARS /bin/sh]})]) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -x]} {[VarSub SH]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('SH', {[ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS sh]})]})]) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub 1][LIT_CHARS /test-exec]]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#! "][VarSub SH][LIT_CHARS "\n"][LIT_CHARS ":\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[DQ [VarSub 1][LIT_CHARS /test-exec]]}) (If (Pipeline! (Com {[DQ [VarSub 1][LIT_CHARS /test-exec]]}) ) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub 1][LIT_CHARS /test-exec]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub 1][LIT_CHARS /test-exec]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (FunctionDef read_gpg_status [] (List (= scope= flags=0 words=[] bindings=[('badsig', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('unkkey', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('validsig', {[SQ ]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS prefix]} {[LIT_CHARS keyword]} {[LIT_CHARS keyid]} {[LIT_CHARS rest]}) (List (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub prefix]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS continue]}) ) (Case to_match={[VarSub keyword]}, pat_word_list=[[{[LIT_CHARS BADSIG]}], [{[LIT_CHARS NO_PUBKEY]}], [{[LIT_CHARS VALIDSIG]}]] (= scope= flags=0 words=[] bindings=[('badsig', {[DQ [VarSub keyid]]})]) (= scope= flags=0 words=[] bindings=[('unkkey', {[DQ [VarSub keyid]]})]) (= scope= flags=0 words=[] bindings=[('validsig', {[DQ [VarSub keyid]]})]) ) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub validsig]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS info]} {[LIT_CHARS VALIDRELSIG]} {[DQ [LIT_CHARS "Valid Release signature (key id %s)"]]} {[DQ [VarSub validsig]]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub badsig]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS BADRELSIG]} {[DQ [LIT_CHARS "Invalid Release signature (key id %s)"]]} {[DQ [VarSub badsig]]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub unkkey]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS UNKNOWNRELSIG]} {[DQ [LIT_CHARS "Release signed by unknown key (key id %s)"]]} {[DQ [VarSub unkkey]]}) (ElseTrue) (Com {[LIT_CHARS error]} {[LIT_CHARS 1]} {[LIT_CHARS SIGCHECK]} {[DQ [LIT_CHARS "Error executing gpgv to check Release signature"]]}) ) ) ) (FunctionDef without [] (List (Pipeline (Subshell (List (Pipeline (Com {[LIT_CHARS echo]} {[VarSub 1]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS sort]}) (Com {[LIT_CHARS uniq]}) ) (Pipeline (Com {[LIT_CHARS echo]} {[VarSub 2]} {[VarSub 2]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) ) ) ) (Com {[LIT_CHARS sort]}) (Com {[LIT_CHARS uniq]} {[LIT_CHARS -u]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) ) (Com {[LIT_CHARS echo]}) ) ) (FunctionDef repeatn [] (List (= scope= flags=0 words=[] bindings=[('n', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (While (Com {[LIT_OTHER "["]} {[DQ [VarSub n]]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (If (Com {[DQ [VarSub @]]}) (Com {[LIT_CHARS break]}) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('n', {[DQ [ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub n]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]]})]) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]}) ) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub n]]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (= scope= flags=0 words=[] bindings=[('N_EXIT_THINGS', {[LIT_CHARS 0]})]) (FunctionDef exit_function [] (List (= scope= flags=0 words=[] bindings=[('n', {[LIT_CHARS 0]})]) (While (Com {[LIT_OTHER "["]} {[DQ [VarSub n]]} {[LIT_CHARS -lt]} {[DQ [VarSub N_EXIT_THINGS]]} {[LIT_OTHER "]"]}) (List (Subshell (AndOr OP_OR_IF (Com {[LIT_CHARS eval]} {[ComSub (Com {[LIT_CHARS eval]} {[LIT_CHARS echo]} {[\ LIT_ESCAPED_CHAR "\\$"] [LIT_LBRACE "{"] [LIT_CHARS EXIT_THING_] [VarSub n] [LIT_RBRACE "}"]})]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]}) ) ) (= scope= flags=0 words=[] bindings=[('n', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub n]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]]})]) ) ) (= scope= flags=0 words=[] bindings=[('N_EXIT_THINGS', {[LIT_CHARS 0]})]) ) ) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS exit_function]]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "exit 129"]]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "error 130 INTERRUPTED "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "Interrupt caught ... exiting"][\ LIT_ESCAPED_CHAR "\\\""]]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "exit 131"]]} {[LIT_CHARS 3]}) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "exit 143"]]} {[LIT_CHARS 15]}) (FunctionDef on_exit [] (List (Com {[LIT_CHARS eval]} {[ComSub (Com {[LIT_CHARS echo]} {[LIT_CHARS EXIT_THING_] [VarSub N_EXIT_THINGS] [LIT_OTHER "="] [\ LIT_ESCAPED_CHAR "\\\""] [VarSub 1] [\ LIT_ESCAPED_CHAR "\\\""]})]}) (= scope= flags=0 words=[] bindings=[('N_EXIT_THINGS', {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub N_EXIT_THINGS]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]]})]) ) ) (FunctionDef install_fakechroot_tools [] (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub VARIANT]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS fakechroot]]} {[LIT_OTHER "]"]}) (= scope= flags=1 words=[] bindings=[('PATH', {[LIT_CHARS /usr/sbin] [LIT_OTHER ":"] [LIT_CHARS /sbin] [LIT_OTHER ":"] [VarSub PATH]})]) ) (Com {[LIT_CHARS mv]} {[DQ [VarSub TARGET][LIT_CHARS /sbin/ldconfig]]} {[DQ [VarSub TARGET][LIT_CHARS /sbin/ldconfig.REAL]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "echo\n"][LIT_CHARS "echo "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "Warning: Fake ldconfig called, doing nothing"][\ LIT_ESCAPED_CHAR "\\\""]]} < (FilenameRedirectNode filename={[DQ [VarSub TARGET][LIT_CHARS /sbin/ldconfig]]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS 755]} {[DQ [VarSub TARGET][LIT_CHARS /sbin/ldconfig]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "/sbin/ldconfig\n"][LIT_CHARS "/sbin/ldconfig.REAL\n"][LIT_CHARS fakechroot]]} < (FilenameRedirectNode filename={[DQ [VarSub TARGET][LIT_CHARS /var/lib/dpkg/diversions]]} >"> 1), > ) (Com {[LIT_CHARS mv]} {[DQ [VarSub TARGET][LIT_CHARS /usr/bin/ldd]]} {[DQ [VarSub TARGET][LIT_CHARS /usr/bin/ldd.REAL]]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='END' do_expansion=False body_word={[LIT_CHARS "#!/usr/bin/perl\n"] [LIT_CHARS "\n"] [LIT_CHARS "# fakeldd\n"] [LIT_CHARS "#\n"] [LIT_CHARS "# Replacement for ldd with usage of objdump\n"] [LIT_CHARS "#\n"] [LIT_CHARS "# (c) 2003-2005 Piotr Roszatycki , BSD\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "my %libs = ();\n"] [LIT_CHARS "\n"] [LIT_CHARS "my $status = 0;\n"] [LIT_CHARS "my $dynamic = 0;\n"] [LIT_CHARS "my $biarch = 0;\n"] [LIT_CHARS "\n"] [LIT_CHARS "my $ldlinuxsodir = \"/lib\";\n"] [LIT_CHARS "my @ld_library_path = qw(/usr/lib /lib);\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "sub ldso($) {\n"] [LIT_CHARS "\tmy ($lib) = @_;\n"] [LIT_CHARS "\tmy @files = ();\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tif ($lib =~ /^\\//) {\n"] [LIT_CHARS "\t $libs{$lib} = $lib;\n"] [LIT_CHARS "\t push @files, $lib;\n"] [LIT_CHARS "\t} else {\n"] [LIT_CHARS "\t foreach my $ld_path (@ld_library_path) {\n"] [LIT_CHARS "\t\tnext unless -f \"$ld_path/$lib\";\n"] [LIT_CHARS "\t\tmy $badformat = 0;\n"] [LIT_CHARS "\t\topen OBJDUMP, \"objdump -p $ld_path/$lib 2>/dev/null |\";\n"] [LIT_CHARS "\t \twhile (my $line = ) {\n"] [LIT_CHARS "\t\t if ($line =~ /file format (\\S*)$/) {\n"] [LIT_CHARS "\t\t\t\t$badformat = 1 unless $format eq $1;\n"] [LIT_CHARS "\t\t\t\tlast;\n"] [LIT_CHARS "\t\t }\n"] [LIT_CHARS "\t\t}\n"] [LIT_CHARS "\t\tclose OBJDUMP;\n"] [LIT_CHARS "\t\tnext if $badformat;\n"] [LIT_CHARS "\t\t$libs{$lib} = \"$ld_path/$lib\";\n"] [LIT_CHARS "\t\tpush @files, \"$ld_path/$lib\";\n"] [LIT_CHARS "\t }\n"] [LIT_CHARS "\t objdump(@files);\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "}\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "sub objdump(@) {\n"] [LIT_CHARS "\tmy (@files) = @_;\n"] [LIT_CHARS "\tmy @libs = ();\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tforeach my $file (@files) {\n"] [LIT_CHARS "\t open OBJDUMP, \"objdump -p $file 2>/dev/null |\";\n"] [LIT_CHARS "\t while (my $line = ) {\n"] [LIT_CHARS "\t\t$line =~ s/^\\s+//;\n"] [LIT_CHARS "\t\tmy @f = split (/\\s+/, $line);\n"] [LIT_CHARS "\t\tif ($line =~ /file format (\\S*)$/) {\n"] [LIT_CHARS "\t\t if (not $format) {\n"] [LIT_CHARS "\t\t\t$format = $1;\n"] [LIT_CHARS "\t\t\tif ($unamearch eq \"x86_64\" and $format eq \"elf32-i386\") {\n"] [LIT_CHARS "\t\t\t my $link = readlink \"/lib/ld-linux.so.2\";\n"] [LIT_CHARS "\t\t\t if ($link =~ /^\\/emul\\/ia32-linux\\//) {\n"] [LIT_CHARS "\t\t\t\t$ld_library_path[-2] = \"/emul/ia32-linux/usr/lib\";\n"] [LIT_CHARS "\t\t\t\t$ld_library_path[-1] = \"/emul/ia32-linux/lib\";\n"] [LIT_CHARS "\t\t\t }\n"] [LIT_CHARS "\t\t\t} elsif ($unamearch =~ /^(sparc|sparc64)$/ and $format eq \"elf64-sparc\") {\n"] [LIT_CHARS "\t\t\t $ldlinuxsodir = \"/lib64\";\n"] [LIT_CHARS "\t\t\t $ld_library_path[-2] = \"/usr/lib64\";\n"] [LIT_CHARS "\t\t\t $ld_library_path[-1] = \"/lib64\";\n"] [LIT_CHARS "\t\t\t}\n"] [LIT_CHARS "\t\t } else {\n"] [LIT_CHARS "\t\t\tnext unless $format eq $1;\n"] [LIT_CHARS "\t\t }\n"] [LIT_CHARS "\t\t}\n"] [LIT_CHARS "\t\tif (not $dynamic and $f[0] eq \"Dynamic\") {\n"] [LIT_CHARS "\t\t $dynamic = 1;\n"] [LIT_CHARS "\t\t}\n"] [LIT_CHARS "\t\tnext unless $f[0] eq \"NEEDED\";\n"] [LIT_CHARS "\t\tif ($f[1] =~ /^ld-linux(\\.|-)/) {\n"] [LIT_CHARS "\t\t $f[1] = \"$ldlinuxsodir/\" . $f[1];\n"] [LIT_CHARS "\t\t}\n"] [LIT_CHARS "\t\tif (not defined $libs{$f[1]}) {\n"] [LIT_CHARS "\t\t $libs{$f[1]} = undef;\n"] [LIT_CHARS "\t\t push @libs, $f[1];\n"] [LIT_CHARS "\t\t}\n"] [LIT_CHARS "\t }\n"] [LIT_CHARS "\t close OBJDUMP;\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tforeach my $lib (@libs) {\n"] [LIT_CHARS "\t ldso($lib);\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "}\n"] [LIT_CHARS "\n"] [LIT_CHARS "\n"] [LIT_CHARS "if ($#ARGV < 0) {\n"] [LIT_CHARS "\tprint STDERR \"fakeldd: missing file arguments\\n\";\n"] [LIT_CHARS "\texit 1;\n"] [LIT_CHARS "}\n"] [LIT_CHARS "\n"] [LIT_CHARS "while ($ARGV[0] =~ /^-/) {\n"] [LIT_CHARS "\tmy $arg = $ARGV[0];\n"] [LIT_CHARS "\tshift @ARGV;\n"] [LIT_CHARS "\tlast if $arg eq \"--\";\n"] [LIT_CHARS "}\n"] [LIT_CHARS "\n"] [LIT_CHARS "open LD_SO_CONF, \"/etc/ld.so.conf\";\n"] [LIT_CHARS "while ($line = ) {\n"] [LIT_CHARS "\tchomp $line;\n"] [LIT_CHARS "\tunshift @ld_library_path, $line;\n"] [LIT_CHARS "}\n"] [LIT_CHARS "close LD_SO_CONF;\n"] [LIT_CHARS "\n"] [LIT_CHARS "unshift @ld_library_path, split(/:/, $ENV{LD_LIBRARY_PATH});\n"] [LIT_CHARS "\n"] [LIT_CHARS "$unamearch = `/bin/uname -m`;\n"] [LIT_CHARS "chomp $unamearch;\n"] [LIT_CHARS "\n"] [LIT_CHARS "foreach my $file (@ARGV) {\n"] [LIT_CHARS "\tmy $address;\n"] [LIT_CHARS "\t%libs = ();\n"] [LIT_CHARS "\t$dynamic = 0;\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tif ($#ARGV > 0) {\n"] [LIT_CHARS "\t\tprint \"$file:\\n\";\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tif (not -f $file) {\n"] [LIT_CHARS "\t\tprint STDERR \"ldd: $file: No such file or directory\\n\";\n"] [LIT_CHARS "\t\t$status = 1;\n"] [LIT_CHARS "\t\tnext;\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tobjdump($file);\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tif ($dynamic == 0) {\n"] [LIT_CHARS "\t\tprint \"\\tnot a dynamic executable\\n\";\n"] [LIT_CHARS "\t\t$status = 1;\n"] [LIT_CHARS "\t} elsif (scalar %libs eq \"0\") {\n"] [LIT_CHARS "\t\tprint \"\\tstatically linked\\n\";\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tif ($format =~ /^elf64-/) {\n"] [LIT_CHARS "\t\t$address = \"0x0000000000000000\";\n"] [LIT_CHARS "\t} else {\n"] [LIT_CHARS "\t\t$address = \"0x00000000\";\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "\n"] [LIT_CHARS "\tforeach $lib (keys %libs) {\n"] [LIT_CHARS "\t\tif ($libs{$lib}) {\n"] [LIT_CHARS "\t\t\tprintf \"\\t%s => %s (%s)\\n\", $lib, $libs{$lib}, $address;\n"] [LIT_CHARS "\t\t} else {\n"] [LIT_CHARS "\t\t\tprintf \"\\t%s => not found\\n\", $lib;\n"] [LIT_CHARS "\t\t}\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "}\n"] [LIT_CHARS "\n"] [LIT_CHARS "exit $status;\n"]} 0), (FilenameRedirectNode filename={[DQ [VarSub TARGET][LIT_CHARS /usr/bin/ldd]]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS 755]} {[DQ [VarSub TARGET][LIT_CHARS /usr/bin/ldd]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "/usr/bin/ldd\n"][LIT_CHARS "/usr/bin/ldd.REAL\n"][LIT_CHARS fakechroot]]} < (FilenameRedirectNode filename={[DQ [VarSub TARGET][LIT_CHARS /var/lib/dpkg/diversions]]} >"> 1), > ) ) ) )