(command.CommandList children: [ (command.ShFunction name: noversion body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOGRUS) op: assign_op.Equal rhs: { (SQ < 's/-*\\(\\([0-9\\.]\\)*\\([_-]rc\\)*\\(-pre\\)*\\([0-9][a-zA-Z]\\)*\\)*\\(\\.tar\\(\\..z2*\\)*\\)$' > ) } spids: [131] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_RBracket ']'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOGRUS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$LOGRUS') <'//'>)} spids: [149] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOGRUS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$LOGRUS') <'/'> ($ Id.VSub_Number '$2') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ) <'6/'> ) } spids: [157] ) ] ) ] ) (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<sed>} {<-e>} {(DQ ($ Id.VSub_DollarName '$LOGRUS'))}) ] negated: F ) ] ) ) (command.ShFunction name: gather_patches body: (BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [ {<ls>} {(DQ ($ Id.VSub_DollarName '$PATCHDIR') <'/'> (${ Id.VSub_Name PACKAGE)) <-> <Id.Lit_Star '*'> <.patch> } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<sort>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<i>})]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName '$i'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<echo>} {(DQ ($ Id.VSub_DollarName '$i'))})] spids: [227 240] ) ] ) ] ) ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$MY_PATCH_DIR'))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name MY_PATCH_DIR) <'/'> (${ Id.VSub_Name PACKAGE))} {<Id.Lit_RBracket ']'>} ) ] ) ] ) action: [ (command.ForEach iter_name: i iter_words: [ {(DQ (${ Id.VSub_Name MY_PATCH_DIR) <'/'> (${ Id.VSub_Name PACKAGE) <'/'>) <Id.Lit_Star '*'> <.patch> } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName '$i'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<echo>} {(DQ ($ Id.VSub_DollarName '$i'))})] spids: [320 333] ) ] ) ] ) ) ] spids: [261 294] ) ] ) ] ) ) (command.ShFunction name: patch_package body: (BraceGroup children: [ (command.Pipeline children: [ (C {<gather_patches>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<i>})]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName '$i'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} {(DQ <'Applying '> ($ Id.VSub_DollarName '$i'))}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<cd>} { (DQ (${ Id.VSub_Name SRCTREE) <'/'> (${ Id.VSub_Name PACKAGE) ) } ) (C {<patch>} {<-p1>} {<-i>} {(DQ ($ Id.VSub_DollarName '$i'))}) (command.Simple words: [{<sha1file>} {(DQ ($ Id.VSub_DollarName '$i'))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$SHA1FILE'))} ) ] do_fork: T ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$ALLOW_PATCH_FAILURE'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<dienow>})] spids: [447 460] ) ] ) ] ) ] spids: [378 391] ) ] ) ] ) ) ] negated: F ) ] ) ) (command.ShFunction name: find_package_tarball body: (BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [ {<ls>} {<-tc>} {(DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_Number '$1') <->) <Id.Lit_Star '*'> <.tar> <Id.Lit_Star '*'> } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<i>})]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<noversion>} { (DQ (braced_var_sub token: <Id.VSub_Name i> suffix_op: (suffix_op.PatSub pat: {<Id.Lit_Other '*'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\/'> ) } replace: {} replace_mode: Id.Undefined_Tok ) ) ) } ) ) ) } {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$i'))}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [534 564] ) ] ) ] ) ) ] negated: F ) ] ) ) (command.ShFunction name: package_cache body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SNAPFROM) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_Number '$1'))} spids: [592] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<is_in_list>} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_DollarName '$IGNORE_REPOS'))} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName '$SNAPFROM'))} {<Id.Lit_RBracket ']'>} ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SNAPFROM) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$SRCTREE') <'/'> ($ Id.VSub_Number '$1'))} spids: [629] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName '$SNAPFROM'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ ($ Id.VSub_Number '$1') <' not found. Did you run download.sh?'>)} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (C {<dienow>}) ] spids: [638 653] ) ] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$SNAPFROM'))}) ] ) ) (command.ShFunction name: extract_package body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [(C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$SRCTREE'))}) (C {<dienow>})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [719] ) ] ) (C {<announce>} {(DQ ($ Id.VSub_DollarName '$PACKAGE'))}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Pipeline children: [ (C {<is_in_list>} {(DQ <PACKAGE>)} {(DQ ($ Id.VSub_DollarName '$IGNORE_REPOS'))}) ] negated: T ) (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$PACKAGE'))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILENAME) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<find_package_tarball>} {(DQ ($ Id.VSub_DollarName '$PACKAGE'))}) ) ) } spids: [773] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DECOMPRESS) op: assign_op.Equal rhs: {(DQ )} spids: [785] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FILENAME'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} { (DQ (braced_var_sub token: <Id.VSub_Name FILENAME> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\.'>) <tar> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\.'> ) <bz2> } replace: {} replace_mode: Id.Lit_Percent ) ) ) } {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DECOMPRESS) op: assign_op.Equal rhs: {(DQ <j>)} spids: [816] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FILENAME'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} { (DQ (braced_var_sub token: <Id.VSub_Name FILENAME> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\.'>) <tar> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\.'> ) <gz> } replace: {} replace_mode: Id.Lit_Percent ) ) ) } {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DECOMPRESS) op: assign_op.Equal rhs: {(DQ <z>)} spids: [848] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHA1NAME) op: assign_op.Equal rhs: {(DQ <sha1-for-source.txt>)} spids: [864] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHA1FILE) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$SRCTREE') <'/'> ($ Id.VSub_DollarName '$PACKAGE') <'/'> ($ Id.VSub_DollarName '$SHA1NAME') ) } spids: [870] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$FILENAME'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} { (DQ ($ Id.VSub_DollarName '$SRCTREE') <'/'> ($ Id.VSub_DollarName '$PACKAGE') ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ <'No tarball for '> ($ Id.VSub_DollarName '$PACKAGE'))} ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (C {<dienow>}) ] spids: [896 913] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SHA1FILE'))} {<Id.Lit_RBracket ']'>} ) (C {<patch_package>}) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [880 893] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHA1TAR) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sha1file>} {(DQ ($ Id.VSub_DollarName '$FILENAME'))}) ) ) } spids: [973] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHALIST) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<cat>} {(DQ ($ Id.VSub_DollarName '$SHA1FILE'))}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [985] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$SHALIST'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ForEach iter_name: i iter_words: [ {(DQ ($ Id.VSub_DollarName '$SHA1TAR'))} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sha1file>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gather_patches>}) ) } ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$SHALIST'))} ) (C {<grep>} {(DQ ($ Id.VSub_DollarName '$i'))}) ] negated: F ) ) ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHALIST) op: assign_op.Equal rhs: {<missing>} spids: [1073] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [1043 1070] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHALIST) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$SHALIST'))}) (C {<sed>} {(DQ <'s/'> ($ Id.VSub_DollarName '$i') <'//'>)} ) ] negated: F ) ) ) } spids: [1087] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$SHALIST'))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [999 1014] ) ] ) (C {<echo>} {<-n>} {(DQ <'Extracting \''> ($ Id.VSub_DollarName '$PACKAGE') <'\''>)}) (command.Subshell child: (command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UNIQUE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<'/proc/self'>}) ) } spids: [1157] ) ] ) (C {<trap>} {(SQ <'rm -rf "$BUILD/temp-'>) ($ Id.VSub_DollarName '$UNIQUE') (SQ <'"'>)} {<EXIT>} ) (command.Simple words: [ {<rm>} {<-rf>} { (DQ ($ Id.VSub_DollarName '$SRCTREE') <'/'> ($ Id.VSub_DollarName '$PACKAGE')) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<mkdir>} {<-p>} { (DQ ($ Id.VSub_DollarName '$BUILD') <'/temp-'> ($ Id.VSub_DollarName '$UNIQUE') ) } {(DQ ($ Id.VSub_DollarName '$SRCTREE'))} ) (C {<dienow>}) ] ) (command.Pipeline children: [ (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<tar>} {<-xv> (${ Id.VSub_Name DECOMPRESS)} {<-f>} {(DQ ($ Id.VSub_DollarName '$FILENAME'))} {<-C>} {(DQ ($ Id.VSub_DollarName '$BUILD') <'/temp-'> ($ Id.VSub_DollarName '$UNIQUE'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARDIR) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} { (DQ ($ Id.VSub_DollarName '$BUILD') <'/temp-'> ($ Id.VSub_DollarName '$UNIQUE') ) <'/'> <Id.Lit_Star '*'> } ) ) ) } spids: [1246] ) ] ) (C {<touch>} { (DQ ($ Id.VSub_DollarName '$TARDIR') <'/'> ($ Id.VSub_DollarName '$SHA1NAME') ) } ) ] ) ] ) (C {<dotprogress>}) ] negated: F ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-e>} { (DQ ($ Id.VSub_DollarName '$BUILD') <'/temp-'> ($ Id.VSub_DollarName '$UNIQUE') ) <'/'> <Id.Lit_Star '*'> <'/'> (DQ ($ Id.VSub_DollarName '$SHA1NAME')) } {<Id.Lit_RBracket ']'>} ) (C {<mv>} { (DQ ($ Id.VSub_DollarName '$BUILD') <'/temp-'> ($ Id.VSub_DollarName '$UNIQUE') <'/'> ) <Id.Lit_Star '*'> } {(DQ ($ Id.VSub_DollarName '$SRCTREE') <'/'> ($ Id.VSub_DollarName '$PACKAGE'))} ) (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$SHA1TAR'))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$SHA1FILE'))} ) ] do_fork: T ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}) (C {<dienow>}) ] ) (C {<patch_package>}) ] ) ) (command.ShFunction name: confirm_checksum body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SUM) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<sha1file>} { (DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$FILENAME') ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) ) } spids: [1375] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DPipe Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<x> (DQ ($ Id.VSub_DollarName '$SUM'))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {<x> (DQ ($ Id.VSub_DollarName '$SHA1'))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$SHA1'))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-f>} { (DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$FILENAME') ) } {<Id.Lit_RBracket ']'>} ) ] ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$SHA1'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ <'No SHA1 for '> ($ Id.VSub_DollarName '$FILENAME') <' ('> ($ Id.VSub_DollarName '$SUM') <')'> ) } ) ] spids: [1441 1454] ) ] else_action: [ (C {<echo>} {(DQ <'Confirmed '> ($ Id.VSub_DollarName '$FILENAME'))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$EXTRACT_ALL'))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (C {<extract_package>} {(DQ ($ Id.VSub_DollarName '$BASENAME'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '$?')} ) ] spids: [1392 1438] ) ] ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$FILENAME'))} ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShFunction name: download_from body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<confirm_checksum>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<wget>} {<-t>} {<2>} {<-T>} {<20>} {<-O>} {(DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$FILENAME'))} {(DQ ($ Id.VSub_Number '$1'))} ) (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (C {<rm>} {<-f>} { (DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$FILENAME') ) } ) terminator: <Id.Op_Semi _> ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) ) ] ) (C {<touch>} {<-c>} {(DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$FILENAME'))} ) (C {<confirm_checksum>}) ] ) ) (command.ShFunction name: download body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILENAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$URL'))}) (C {<sed>} {(SQ <'s .*/ '>)}) ] negated: F ) ) } spids: [1668] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$RENAME'))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILENAME) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$FILENAME'))}) (C {<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName '$RENAME'))}) ] negated: F ) ) ) } spids: [1700] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<sha1sum>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] do_fork: T ) ) ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'Error: please install sha1sum'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [1723 1742] ) ] ) (C {<echo>} {<-ne>} {(DQ <'checking '> ($ Id.VSub_DollarName '$FILENAME') <Id.Lit_BadBackslash '\\'> <r>)} ) (command.Simple words: [ {<touch>} {<-c>} {(DQ ($ Id.VSub_DollarName '$SRCDIR')) <'/'> (DQ ($ Id.VSub_DollarName '$FILENAME'))} ] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASENAME) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<noversion>} {(DQ ($ Id.VSub_DollarName '$FILENAME'))}) ) ) } spids: [1803] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Pipeline children: [ (C {<is_in_list>} {(DQ ($ Id.VSub_DollarName '$BASENAME'))} {(DQ ($ Id.VSub_DollarName '$IGNORE_REPOS'))} ) ] negated: T ) (C {<Id.Lit_LBracket '['>} {<-d>} { (DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$BASENAME') ) } {<Id.Lit_RBracket ']'>} ) ] ) ] ) action: [ (C {<echo>} { (DQ <'Using '> ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$BASENAME') ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$EXTRACT_ALL'))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {<force>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<rm>} {<-rf>} { (DQ ($ Id.VSub_DollarName '$SRCTREE') <'/'> ($ Id.VSub_DollarName '$BASENAME') ) } ) (C {<cp>} {<-a>} { (DQ ($ Id.VSub_DollarName '$SRCDIR') <'/'> ($ Id.VSub_DollarName '$BASENAME') ) } {(DQ ($ Id.VSub_DollarName '$SRCTREE') <'/'> ($ Id.VSub_DollarName '$BASENAME'))} ) (C {<dienow>}) ] ) ] spids: [1857 1873] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [1815 1844] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$PREFERRED_MIRROR'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<download_from>} { (DQ ($ Id.VSub_DollarName '$PREFERRED_MIRROR') <'/'> ($ Id.VSub_DollarName '$FILENAME') ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [1928 1943] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<download_from>} {(DQ ($ Id.VSub_DollarName '$URL'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_DollarName '$MIRROR_LIST')}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<download_from>} {(DQ ($ Id.VSub_DollarName '$i') <'/'> ($ Id.VSub_DollarName '$FILENAME'))} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] ) ) (C {<echo>} {(DQ <'Could not download '> ($ Id.VSub_DollarName '$FILENAME'))}) (C {<echo>} {<-en>} {(DQ <Id.Lit_BadBackslash '\\'> <'e[0m'>)}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:START_TIME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}) ) } spids: [2052] ) ] ) (command.ShFunction name: cleanup_oldfiles body: (BraceGroup children: [ (C {<wait>}) (command.ForEach iter_name: i iter_words: [{(DQ (${ Id.VSub_Name SRCDIR)) <'/'> <Id.Lit_Star '*'>}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName '$i'))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>} {<-r>} {(DQ ($ Id.VSub_DollarName '$i'))} ) ) ) } {<-lt>} {(DQ (${ Id.VSub_Name START_TIME))} {<Id.Lit_RBracket ']'>} ) ] ) ] ) action: [ (C {<echo>} {<Removing>} {<old>} {<file>} {(DQ ($ Id.VSub_DollarName '$i'))}) (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$i'))}) ] spids: [2098 2141] ) ] ) ] ) ) ] ) ) ] )