(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<Id.KW_Bang '!'>} {<-e>} {<'src/google/protobuf/stubs/common.h'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<__EOF__>} here_end_span_id: 58 stdin_parts: [ < 'Could not find source code. Make sure you are running this script from the\n' > <'root of the distribution tree.\n'> ] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [32 43] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<Id.KW_Bang '!'>} {<-e>} {<'src/Makefile'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<__EOF__>} here_end_span_id: 93 stdin_parts: [ <'Could not find src/Makefile. You must run ./configure (and perhaps\n'> <'./autogen.sh) first.\n'> ] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [67 78] ) ] ) (C {<cd>} {<src>}) (C {<declare>} {<-a>} {<Id.Lit_VarLike 'RUNTIME_PROTO_FILES='> (sh_array_literal left: <Id.Op_LParen _> words: [ {<'google/protobuf/any.proto'>} {<'google/protobuf/api.proto'>} {<'google/protobuf/descriptor.proto'>} {<'google/protobuf/duration.proto'>} {<'google/protobuf/empty.proto'>} {<'google/protobuf/field_mask.proto'>} {<'google/protobuf/source_context.proto'>} {<'google/protobuf/struct.proto'>} {<'google/protobuf/timestamp.proto'>} {<'google/protobuf/type.proto'>} {<'google/protobuf/wrappers.proto'>} ] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CORE_PROTO_IS_CORRECT) op: assign_op.Equal rhs: {<0>} spids: [159] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROCESS_ROUND) op: assign_op.Equal rhs: {<1>} spids: [162] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TMP) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<mktemp>} {<-d>}))} spids: [165] ) ] ) (C {<echo>} {(DQ <'Updating descriptor protos...'>)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$CORE_PROTO_IS_CORRECT')} {<-ne>} {<1>} {<Id.Lit_RBracket ']'>} ) ] ) body: (command.DoGroup children: [ (C {<echo>} {(DQ <'Round '> ($ Id.VSub_DollarName '$PROCESS_ROUND'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CORE_PROTO_IS_CORRECT) op: assign_op.Equal rhs: {<1>} spids: [201] ) ] ) (C {<make>} {($ Id.VSub_At '$@')} {<protoc>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Failed to build protoc.'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [213 224] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<'./protoc'>} {<--cpp_out> <Id.Lit_Equals '='> <Id.Lit_VarLike 'dllexport_decl='> <LIBPROTOBUF_EXPORT> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$TMP') } { (braced_var_sub token: <Id.VSub_Name RUNTIME_PROTO_FILES> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) (C {<'./protoc'>} {<--cpp_out> <Id.Lit_Equals '='> <Id.Lit_VarLike 'dllexport_decl='> <LIBPROTOC_EXPORT> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$TMP') } {<'google/protobuf/compiler/plugin.proto'>} ) ] ) (command.ForEach iter_name: PROTO_FILE iter_words: [ { (braced_var_sub token: <Id.VSub_Name RUNTIME_PROTO_FILES> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASE_NAME) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name PROTO_FILE> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) ) } spids: [293] ) ] ) (command.Simple words: [ {<diff>} {(${ Id.VSub_Name BASE_NAME) <.pb.h>} {($ Id.VSub_DollarName '$TMP') <'/'> (${ Id.VSub_Name BASE_NAME) <.pb.h>} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CORE_PROTO_IS_CORRECT) op: assign_op.Equal rhs: {<0>} spids: [335] ) ] ) ] spids: [321 332] ) ] ) (command.Simple words: [ {<diff>} {(${ Id.VSub_Name BASE_NAME) <.pb.cc>} {($ Id.VSub_DollarName '$TMP') <'/'> (${ Id.VSub_Name BASE_NAME) <.pb.cc>} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CORE_PROTO_IS_CORRECT) op: assign_op.Equal rhs: {<0>} spids: [375] ) ] ) ] spids: [361 372] ) ] ) ] ) ) (command.Simple words: [ {<diff>} {<'google/protobuf/compiler/plugin.pb.h'>} {($ Id.VSub_DollarName '$TMP') <'/google/protobuf/compiler/plugin.pb.h'>} ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CORE_PROTO_IS_CORRECT) op: assign_op.Equal rhs: {<0>} spids: [412] ) ] ) ] spids: [398 409] ) ] ) (command.Simple words: [ {<diff>} {<'google/protobuf/compiler/plugin.pb.cc'>} {($ Id.VSub_DollarName '$TMP') <'/google/protobuf/compiler/plugin.pb.cc'>} ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CORE_PROTO_IS_CORRECT) op: assign_op.Equal rhs: {<0>} spids: [445] ) ] ) ] spids: [431 442] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$CORE_PROTO_IS_CORRECT')} {<-ne>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_name: PROTO_FILE iter_words: [ { (braced_var_sub token: <Id.VSub_Name RUNTIME_PROTO_FILES> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASE_NAME) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name PROTO_FILE> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) ) } spids: [494] ) ] ) (C {<mv>} {($ Id.VSub_DollarName '$TMP') <'/'> (${ Id.VSub_Name BASE_NAME) <.pb.h>} {(${ Id.VSub_Name BASE_NAME) <.pb.h>} ) (C {<mv>} {($ Id.VSub_DollarName '$TMP') <'/'> (${ Id.VSub_Name BASE_NAME) <.pb.cc>} {(${ Id.VSub_Name BASE_NAME) <.pb.cc>} ) ] ) ) (C {<mv>} {($ Id.VSub_DollarName '$TMP') <'/google/protobuf/compiler/plugin.pb.'> <Id.Lit_Star '*'> } {<'google/protobuf/compiler/'>} ) ] spids: [461 474] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROCESS_ROUND) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: <Id.Lit_ArithVarLike PROCESS_ROUND> right: {<Id.Lit_Digits 1>} ) ) } spids: [549] ) ] ) ] ) ) (C {<cd>} {<..>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-x>} {<'objectivec/generate_well_known_types.sh'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Generating messages for objc.'>)}) (C {<'objectivec/generate_well_known_types.sh'>} {($ Id.VSub_At '$@')}) ] spids: [566 575] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-x>} {<'csharp/generate_protos.sh'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Generating messages for C#.'>)}) (C {<'csharp/generate_protos.sh'>} {($ Id.VSub_At '$@')}) ] spids: [592 601] ) ] ) ] )