(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:APR_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:APR_VERSION span_id:97) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (1.4.6))}) ) } spids: [95] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:APU_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:APU_VERSION span_id:106) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (1.5.1))}) ) } spids: [104] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SERF_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:SERF_VERSION span_id:115) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (1.3.8))}) ) } spids: [113] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ZLIB_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:ZLIB_VERSION span_id:124) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (1.2.8))}) ) } spids: [122] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SQLITE_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:SQLITE_VERSION span_id:133) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (3.7.15.1))}) ) } spids: [131] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GMOCK_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:GMOCK_VERSION span_id:142) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (1.6.0))}) ) } spids: [140] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:HTTPD_VERSION span_id:151) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (2.4.10))}) ) } spids: [149] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:APR_ICONV_VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:APR_ICONV_VERSION span_id:160) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ (1.2.1))}) ) } spids: [158] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:APR) op: assign_op.Equal rhs: {(apr-) (${ Id.VSub_Name APR_VERSION)} spids: [168] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:APR_UTIL) op: assign_op.Equal rhs: {(apr-util-) (${ Id.VSub_Name APU_VERSION)} spids: [174] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SERF) op: assign_op.Equal rhs: {(serf-) (${ Id.VSub_Name SERF_VERSION)} spids: [180] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ZLIB) op: assign_op.Equal rhs: {(zlib-) (${ Id.VSub_Name ZLIB_VERSION)} spids: [186] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SQLITE_VERSION_LIST) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:193) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$SQLITE_VERSION')}) (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/\\./ /g' span_id:209))}) ] negated: F ) ] ) ) } spids: [192] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SQLITE) op: assign_op.Equal rhs: {(sqlite-amalgamation-) (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:215) command_list: (command.CommandList children: [ (C {(printf)} {(Id.Lit_Other '%') (d) (Id.Lit_Other '%') (02d) (Id.Lit_Other '%') (02d) (Id.Lit_Other '%') (02d) } {($ Id.VSub_DollarName '$SQLITE_VERSION_LIST')} ) ] ) ) } spids: [213] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GMOCK) op: assign_op.Equal rhs: {(gmock-) (${ Id.VSub_Name GMOCK_VERSION)} spids: [232] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GMOCK_URL) op: assign_op.Equal rhs: {(https) (Id.Lit_Other ':') (//googlemock.googlecode.com/files/)} spids: [238] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD) op: assign_op.Equal rhs: {(httpd-) (${ Id.VSub_Name HTTPD_VERSION)} spids: [244] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:APR_ICONV) op: assign_op.Equal rhs: {(apr-iconv-) (${ Id.VSub_Name APR_ICONV_VERSION)} spids: [250] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASEDIR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:258) command_list: (command.CommandList children:[(C {(pwd)})]) ) } spids: [257] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$BASEDIR') (/temp)} spids: [264] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTP_FETCH) op: assign_op.Equal rhs: (word.Empty) spids: [269] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$HTTP_FETCH'))} {(Id.Lit_RBracket ']')} ) (command.Simple words: [{(type)} {(wget)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:287) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:290) fd: 2 arg_word: {(1)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTP_FETCH) op: assign_op.Equal rhs: {(DQ ('wget -q -nc'))} spids: [295] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$HTTP_FETCH'))} {(Id.Lit_RBracket ']')} ) (command.Simple words: [{(type)} {(curl)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:316) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:319) fd: 2 arg_word: {(1)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTP_FETCH) op: assign_op.Equal rhs: {(DQ ('curl -sOL'))} spids: [324] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$HTTP_FETCH'))} {(Id.Lit_RBracket ']')} ) (command.Simple words: [{(type)} {(fetch)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:345) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:348) fd: 2 arg_word: {(1)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTP_FETCH) op: assign_op.Equal rhs: {(DQ ('fetch -q'))} spids: [353] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:APACHE_MIRROR) op: assign_op.Equal rhs: {(http) (Id.Lit_Other ':') (//archive.apache.org/dist)} spids: [365] ) ] ) (command.ShFunction name: usage body: (command.BraceGroup children: [ (C {(echo)} {(DQ ('Usage: ') ($ Id.VSub_Number '$0'))}) (C {(echo)} { (DQ ('Usage: ') ($ Id.VSub_Number '$0') (' [ apr | serf | zlib | sqlite | gmock ] ...')) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:398) arg_word: {($ Id.VSub_Number '$1')} ) ] ) ) (command.ShFunction name: get_apr body: (command.BraceGroup children: [ (C {(cd)} {($ Id.VSub_DollarName '$TEMPDIR')}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/apr)}) (C {($ Id.VSub_DollarName '$HTTP_FETCH')} {($ Id.VSub_DollarName '$APACHE_MIRROR') (/apr/) ($ Id.VSub_DollarName '$APR') (.tar.bz2) } ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/apr-util)}) (C {($ Id.VSub_DollarName '$HTTP_FETCH')} {($ Id.VSub_DollarName '$APACHE_MIRROR') (/apr/) ($ Id.VSub_DollarName '$APR_UTIL') (.tar.bz2) } ) ] ) (C {(cd)} {($ Id.VSub_DollarName '$BASEDIR')}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/apr)}) (command.Pipeline children: [ (C {(bzip2)} {(-dc)} {($ Id.VSub_DollarName '$TEMPDIR') (/) ($ Id.VSub_DollarName '$APR') (.tar.bz2)} ) (C {(tar)} {(-xf)} {(-)}) ] negated: F ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/apr-util)}) (command.Pipeline children: [ (C {(bzip2)} {(-dc)} {($ Id.VSub_DollarName '$TEMPDIR') (/) ($ Id.VSub_DollarName '$APR_UTIL') (.tar.bz2) } ) (C {(tar)} {(-xf)} {(-)}) ] negated: F ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/apr)}) (C {(mv)} {($ Id.VSub_DollarName '$APR')} {(apr)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/apr-util)}) (C {(mv)} {($ Id.VSub_DollarName '$APR_UTIL')} {(apr-util)}) ] ) ] ) ) (command.ShFunction name: get_serf body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/serf)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:565) ) ] ) (C {(cd)} {($ Id.VSub_DollarName '$TEMPDIR')}) (C {($ Id.VSub_DollarName '$HTTP_FETCH')} {(https) (Id.Lit_Other ':') (//archive.apache.org/dist/serf/) ($ Id.VSub_DollarName '$SERF') (.tar.bz2) } ) (C {(cd)} {($ Id.VSub_DollarName '$BASEDIR')}) (command.Pipeline children: [ (C {(bzip2)} {(-dc)} {($ Id.VSub_DollarName '$TEMPDIR') (/) ($ Id.VSub_DollarName '$SERF') (.tar.bz2)} ) (C {(tar)} {(-xf)} {(-)}) ] negated: F ) (C {(mv)} {($ Id.VSub_DollarName '$SERF')} {(serf)}) ] ) ) (command.ShFunction name: get_zlib body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/zlib)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:633) ) ] ) (C {(cd)} {($ Id.VSub_DollarName '$TEMPDIR')}) (C {($ Id.VSub_DollarName '$HTTP_FETCH')} {(http) (Id.Lit_Other ':') (//sourceforge.net/projects/libpng/files/zlib/) ($ Id.VSub_DollarName '$ZLIB_VERSION') (/) ($ Id.VSub_DollarName '$ZLIB') (.tar.gz) } ) (C {(cd)} {($ Id.VSub_DollarName '$BASEDIR')}) (command.Pipeline children: [ (C {(gzip)} {(-dc)} {($ Id.VSub_DollarName '$TEMPDIR') (/) ($ Id.VSub_DollarName '$ZLIB') (.tar.gz)} ) (C {(tar)} {(-xf)} {(-)}) ] negated: F ) (C {(mv)} {($ Id.VSub_DollarName '$ZLIB')} {(zlib)}) ] ) ) (command.ShFunction name: get_sqlite body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/sqlite-amalgamation)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:703) ) ] ) (C {(cd)} {($ Id.VSub_DollarName '$TEMPDIR')}) (C {($ Id.VSub_DollarName '$HTTP_FETCH')} {(http) (Id.Lit_Other ':') (//www.sqlite.org/) ($ Id.VSub_DollarName '$SQLITE') (.zip)} ) (C {(cd)} {($ Id.VSub_DollarName '$BASEDIR')}) (C {(unzip)} {(-q)} {($ Id.VSub_DollarName '$TEMPDIR') (/) ($ Id.VSub_DollarName '$SQLITE') (.zip)} ) (C {(mv)} {($ Id.VSub_DollarName '$SQLITE')} {(sqlite-amalgamation)}) ] ) ) (command.ShFunction name: get_gmock body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-d)} {($ Id.VSub_DollarName '$BASEDIR') (/gmock-fused)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:764) ) ] ) (C {(cd)} {($ Id.VSub_DollarName '$TEMPDIR')}) (C {($ Id.VSub_DollarName '$HTTP_FETCH')} {(${ Id.VSub_Name GMOCK_URL) (/) (${ Id.VSub_Name GMOCK) (.zip)} ) (C {(cd)} {($ Id.VSub_DollarName '$BASEDIR')}) (C {(unzip)} {(-q)} {($ Id.VSub_DollarName '$TEMPDIR') (/) ($ Id.VSub_DollarName '$GMOCK') (.zip)} ) (C {(mv)} {($ Id.VSub_DollarName '$GMOCK') (/fused-src)} {(gmock-fused)}) (C {(rm)} {(-fr)} {($ Id.VSub_DollarName '$GMOCK')}) ] ) ) (command.ShFunction name: get_deps body: (command.BraceGroup children: [ (C {(mkdir)} {(-p)} {($ Id.VSub_DollarName '$TEMPDIR')}) (command.ForEach iter_name: i iter_words: [{(zlib)} {(serf)} {(sqlite-amalgamation)} {(apr)} {(apr-util)} {(gmock-fused)}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-d)} {($ Id.VSub_DollarName '$i')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:868) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ("Local directory '") ($ Id.VSub_DollarName '$i') ("' already exists; the downloaded copy won't be used") ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:881) fd: -1 arg_word: {(2)} ) ] ) ] spids: [859 870] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-gt)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:903) ) ] action: [ (command.ForEach iter_name: target iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$target'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (deps))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:938) ) ] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(get_) ($ Id.VSub_DollarName '$target')}) (C {(usage)}) ] ) ] spids: [922 940] ) ] else_action: [(C {(usage)})] ) ] ) ) ] spids: [892 905] ) ] else_action: [ (C {(get_apr)}) (C {(get_serf)}) (C {(get_zlib)}) (C {(get_sqlite)}) (C {(echo)}) (C {(echo)} {(DQ ('If you require mod_dav_svn, the recommended version of httpd is:'))}) (C {(echo)} { (DQ (' ') ($ Id.VSub_DollarName '$APACHE_MIRROR') (/httpd/) ($ Id.VSub_DollarName '$HTTPD') (.tar.bz2) ) } ) (C {(echo)}) (C {(echo)} {(DQ ('If you require apr-iconv, its recommended version is:'))}) (C {(echo)} { (DQ (' ') ($ Id.VSub_DollarName '$APACHE_MIRROR') (/apr/) ($ Id.VSub_DollarName '$APR_ICONV') (.tar.bz2) ) } ) ] ) (C {(rm)} {(-rf)} {($ Id.VSub_DollarName '$TEMPDIR')}) ] ) ) (C {(get_deps)} {(DQ ($ Id.VSub_At '$@'))}) ] )