(command.CommandList children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<Id.KW_Bang '!'>} {<-e>} {<'src/google/protobuf/stubs/common.h'>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] 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_tok: <Id.Undefined_Tok ''> 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 keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [32 43] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<Id.KW_Bang '!'>} {<-e>} {<'src/Makefile'>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] 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_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'Could not find src/Makefile. You must run ./configure (and perhaps\n'> <'./autogen.sh) first.\n'> ] ) ) ] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [67 78] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok:<cd> more_env:[] words:[{<cd>} {<src>}] redirects:[] do_fork:T) (command.Simple blame_tok: <declare> more_env: [] words: [ {<declare>} {<-a>} {<Id.Lit_VarLike 'RUNTIME_PROTO_FILES='> (ShArrayLiteral 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'>} ] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> name: CORE_PROTO_IS_CORRECT ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PROCESS_ROUND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PROCESS_ROUND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROCESS_ROUND='> name:PROCESS_ROUND) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TMP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TMP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMP='> name:TMP) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <mktemp> more_env: [] words: [{<mktemp>} {<-d>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Updating descriptor protos...'>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName CORE_PROTO_IS_CORRECT)} {<-ne>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Round '> ($ Id.VSub_DollarName PROCESS_ROUND))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> name: CORE_PROTO_IS_CORRECT ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <make> more_env: [] words: [{<make>} {($ Id.VSub_At '@')} {<protoc>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Failed to build protoc.'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [213 224] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <'./protoc'> more_env: [] words: [ {<'./protoc'>} {<--cpp_out> <Id.Lit_Equals '='> <Id.Lit_VarLike 'dllexport_decl='> <LIBPROTOBUF_EXPORT> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName TMP) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name RUNTIME_PROTO_FILES> var_name: RUNTIME_PROTO_FILES bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <'./protoc'> more_env: [] words: [ {<'./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'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [PROTO_FILE] iterable: (for_iter.Words words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name RUNTIME_PROTO_FILES> var_name: RUNTIME_PROTO_FILES bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'BASE_NAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BASE_NAME='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BASE_NAME='> name:BASE_NAME) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PROTO_FILE> var_name: PROTO_FILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <diff> more_env: [] 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 if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> name: CORE_PROTO_IS_CORRECT ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [321 332] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <diff> more_env: [] 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 if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> name: CORE_PROTO_IS_CORRECT ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [361 372] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <diff> more_env: [] 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 if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> name: CORE_PROTO_IS_CORRECT ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [398 409] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <diff> more_env: [] 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 if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CORE_PROTO_IS_CORRECT='> name: CORE_PROTO_IS_CORRECT ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [431 442] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName CORE_PROTO_IS_CORRECT)} {<-ne>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [PROTO_FILE] iterable: (for_iter.Words words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name RUNTIME_PROTO_FILES> var_name: RUNTIME_PROTO_FILES bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'BASE_NAME='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BASE_NAME='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BASE_NAME='> name: BASE_NAME ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PROTO_FILE> var_name: PROTO_FILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName TMP) <'/'> (${ Id.VSub_Name BASE_NAME) <.pb.h>} {(${ Id.VSub_Name BASE_NAME) <.pb.h>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName TMP) <'/'> (${ Id.VSub_Name BASE_NAME) <.pb.cc>} {(${ Id.VSub_Name BASE_NAME) <.pb.cc>} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName TMP) <'/google/protobuf/compiler/plugin.pb.'> <Id.Lit_Star '*'> } {<'google/protobuf/compiler/'>} ] redirects: [] do_fork: T ) ] spids: [461 474] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PROCESS_ROUND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PROCESS_ROUND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROCESS_ROUND='> name:PROCESS_ROUND) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike PROCESS_ROUND) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok:<cd> more_env:[] words:[{<cd>} {<..>}] redirects:[] do_fork:T) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-x>} {<'objectivec/generate_well_known_types.sh'>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Generating messages for objc.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'objectivec/generate_well_known_types.sh'> more_env: [] words: [{<'objectivec/generate_well_known_types.sh'>} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) ] spids: [566 575] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-x>} {<'csharp/generate_protos.sh'>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Generating messages for C#.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'csharp/generate_protos.sh'> more_env: [] words: [{<'csharp/generate_protos.sh'>} {($ Id.VSub_At '@')}] redirects: [] do_fork: T ) ] spids: [592 601] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] )