(command.CommandList children: [ (C {(unalias)} {(-a)}) (C {(unset)} {(BASH_COMPAT)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/isolated-functions.sh))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:40) arg_word: {(1)} ) ] ) (command.ShFunction name: __check_bash_version body: (command.BraceGroup children: [ (C {(local)} {(maj)} {(min)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(___eapi_bash_3_2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:79) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:maj) op: assign_op.Equal rhs: {(3)} spids: [84] ) (assign_pair lhs: (sh_lhs_expr.Name name:min) op: assign_op.Equal rhs: {(2)} spids: [87] ) ] ) ] spids: [75 81] ) (if_arm cond: [ (command.Sentence child: (C {(___eapi_bash_4_2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:95) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:maj) op: assign_op.Equal rhs: {(4)} spids: [100] ) (assign_pair lhs: (sh_lhs_expr.Name name:min) op: assign_op.Equal rhs: {(2)} spids: [103] ) ] ) ] spids: [91 97] ) ] else_action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:110) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_lt left: { (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_VERSINFO span_id:126) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) ) } right: {(${ Id.VSub_Name maj)} ) ) (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_eq left: { (braced_var_sub token: (Token id: Id.VSub_Name val: BASH_VERSINFO span_id: 146 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) ) } right: {(${ Id.VSub_Name maj)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_lt left: { (braced_var_sub token: (Token id: Id.VSub_Name val: BASH_VERSINFO span_id: 161 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } right: {(${ Id.VSub_Name min)} ) ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:175) ) ] action: [ (C {(die)} { (DQ ('>=bash-') (${ Id.VSub_Name maj) (.) (${ Id.VSub_Name min) (' is required')) } ) ] spids: [121 177] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASH_COMPAT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name maj) (.) (${ Id.VSub_Name min))} spids: [211] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_bash_3_2)}) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_gt left: { (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_VERSINFO span_id:261) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) ) } right: {(3)} ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:273) ) ] action: [(C {(shopt)} {(-s)} {(compat32)})] spids: [252 275] ) ] ) ] ) ) (C {(__check_bash_version)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(depend)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:304) ) ] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/phase-functions.sh))}) (C {(die)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/save-ebuild-env.sh))}) (C {(die)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/phase-helpers.sh))}) (C {(die)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/bashrc-functions.sh))}) (C {(die)}) ] ) ] spids: [292 306] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.Equal rhs: { (DQ ('diropts docompress exeopts get_KV insopts\n') ('\t\tKV_major KV_micro KV_minor KV_to_int\n') ('\t\tlibopts register_die_hook register_success_hook\n') ('\t\t__strip_duplicate_slashes\n') ('\t\tuse useq usev use_with use_enable') ) } spids: [379] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_has_usex)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' usex'))} spids: [393] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_has_in_iuse)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' in_iuse'))} spids: [403] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_has_get_libdir)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' get_libdir'))} spids: [413] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' best_version has_version portageq'))} spids: [427] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_has_master_repositories)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' master_repositories'))} spids: [437] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_has_repository_path)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' repository_path'))} spids: [447] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_has_available_eclasses)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' available_eclasses'))} spids: [457] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_has_eclass_path)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' eclass_path'))} spids: [467] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(___eapi_has_license_path)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:funcs) op: assign_op.PlusEqual rhs: {(DQ (' license_path'))} spids: [477] ) ] ) ] ) (command.ForEach iter_name: x iter_words: [{(${ Id.VSub_Name funcs)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(eval)} { (DQ (${ Id.VSub_Name x) ('() { die ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:505) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:506)) ('{FUNCNAME}() calls are not allowed in global scope') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:508)) ('; }') ) } ) ] ) ) (C {(unset)} {(funcs)} {(x)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_PORTAGE_ORIG_PATH) op: assign_op.Equal rhs: {(${ Id.VSub_Name PATH)} spids: [532] ) ] ) (C {(export)} {(Id.Lit_VarLike 'PATH=') (/dev/null)}) (command.ShFunction name: command_not_found_handle body: (command.BraceGroup children: [ (C {(die)} { (DQ ('External commands disallowed while sourcing ebuild: ') (${ Id.VSub_Star '*')) } ) ] ) ) ] ) (C {(unset)} {(BASH_ENV)}) (C {(export)} {(Id.Lit_VarLike 'PORTAGE_BZIP2_COMMAND=') (braced_var_sub token: (Token id:Id.VSub_Name val:PORTAGE_BZIP2_COMMAND span_id:596) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(bzip2)}) ) } ) (command.ShFunction name: __qa_source body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'shopts=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:626) command_list: (command.CommandList children:[(C {(shopt)})]) ) } {(Id.Lit_VarLike 'OLDIFS=') (DQ ($ Id.VSub_DollarName '$IFS'))} ) (C {(local)} {(retval)}) (C {(source)} {(DQ ($ Id.VSub_At '$@'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:retval) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [648] ) ] ) (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (e)}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$shopts')} right: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:664) command_list: (command.CommandList children:[(C {(shopt)})]) ) } ) ) (C {(eqawarn)} { (DQ ( "QA Notice: Global shell options changed and were not restored while sourcing '" ) ($ Id.VSub_Star '$*') ("'") ) } ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName '$IFS'))} right: {(DQ ($ Id.VSub_DollarName '$OLDIFS'))} ) ) (C {(eqawarn)} { (DQ ("QA Notice: Global IFS changed and was not restored while sourcing '") ($ Id.VSub_Star '$*') ("'") ) } ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:708) arg_word: {($ Id.VSub_DollarName '$retval')} ) ] ) ) (command.ShFunction name: __qa_call body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'shopts=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:725) command_list: (command.CommandList children:[(C {(shopt)})]) ) } {(Id.Lit_VarLike 'OLDIFS=') (DQ ($ Id.VSub_DollarName '$IFS'))} ) (C {(local)} {(retval)}) (C {(DQ ($ Id.VSub_At '$@'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:retval) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [745] ) ] ) (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (e)}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$shopts')} right: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:761) command_list: (command.CommandList children:[(C {(shopt)})]) ) } ) ) (C {(eqawarn)} { (DQ ( "QA Notice: Global shell options changed and were not restored while calling '" ) ($ Id.VSub_Star '$*') ("'") ) } ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName '$IFS'))} right: {(DQ ($ Id.VSub_DollarName '$OLDIFS'))} ) ) (C {(eqawarn)} { (DQ ("QA Notice: Global IFS changed and was not restored while calling '") ($ Id.VSub_Star '$*') ("'") ) } ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:805) arg_word: {($ Id.VSub_DollarName '$retval')} ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EBUILD_SH_ARGS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Star '$*'))} spids: [812] ) ] ) (C {(shift)} {($ Id.VSub_Pound '$#')}) (C {(unset)} {(GZIP)} {(BZIP)} {(BZIP2)} {(CDPATH)} {(GREP_OPTIONS)} {(GREP_COLOR)} {(GLOBIGNORE)}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$PORTAGE_QUIET')} right: {(DQ )} ) ) (C {(export)} {(PORTAGE_QUIET)}) ] ) (command.ShFunction name: __sb_append_var body: (command.BraceGroup children: [ (command.Sentence child: (C {(local)} {(Id.Lit_VarLike '_v=') ($ Id.VSub_Number '$1')}) terminator: (Token id:Id.Op_Semi val:';' span_id:876) ) (C {(shift)}) (C {(local)} {(Id.Lit_VarLike 'var=') (DQ (SANDBOX_) (${ Id.VSub_Name _v))}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_Number '$1')}) right: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_Number '$2')}) ) ) (C {(die)} { (DQ ('Usage: add') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:912) command_list: (command.CommandList children: [ (command.Simple words: [{(tr)} {(DQ ('[:upper:]'))} {(DQ ('[:lower:]'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_TLess val:'<<<' span_id:926) fd: -1 arg_word: {(DQ (${ Id.VSub_Name _v))} ) ] more_env: [(env_pair name:LC_ALL val:{(C)} spids:[913])] ) ] ) ) (' <colon-delimited list of paths>') ) } ) ] ) (C {(export)} {(${ Id.VSub_Name var) (Id.Lit_Equals '=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:var span_id:947) prefix_op: (Id.VSub_Bang) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: { (braced_var_sub token: (Token id:Id.VSub_Name val:var span_id:951) prefix_op: (Id.VSub_Bang) ) (':') } ) ) ($ Id.VSub_Number '$1') ) } ) ] ) ) (command.ShFunction name: addread body: (command.BraceGroup children: [ (command.Sentence child: (C {(__sb_append_var)} {(READ)} {(DQ ($ Id.VSub_At '$@'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:983) ) ] ) ) (command.ShFunction name: addwrite body: (command.BraceGroup children: [ (command.Sentence child: (C {(__sb_append_var)} {(WRITE)} {(DQ ($ Id.VSub_At '$@'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1001) ) ] ) ) (command.ShFunction name: adddeny body: (command.BraceGroup children: [ (command.Sentence child: (C {(__sb_append_var)} {(DENY)} {(DQ ($ Id.VSub_At '$@'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1019) ) ] ) ) (command.ShFunction name: addpredict body: (command.BraceGroup children: [ (command.Sentence child: (C {(__sb_append_var)} {(PREDICT)} {(DQ ($ Id.VSub_At '$@'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1037) ) ] ) ) (C {(addwrite)} {(DQ (${ Id.VSub_Name PORTAGE_TMPDIR))}) (C {(addread)} {(DQ ('/:') (${ Id.VSub_Name PORTAGE_TMPDIR))}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{(${ Id.VSub_Name PORTAGE_GPG_DIR)}) ) (C {(addpredict)} {(DQ (${ Id.VSub_Name PORTAGE_GPG_DIR))}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_w child:{($ Id.VSub_DollarName '$T')}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1093) ) ] action: [ (C {(export)} {(Id.Lit_VarLike 'TEMP=') ($ Id.VSub_DollarName '$T')}) (C {(export)} {(Id.Lit_VarLike 'TMP=') ($ Id.VSub_DollarName '$T')}) (C {(export)} {(Id.Lit_VarLike 'TMPDIR=') ($ Id.VSub_DollarName '$T')}) ] spids: [1083 1095] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$SANDBOX_ON')} right: {(1)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1127) ) ] action: [ (command.ForEach iter_name: x iter_words: [{(TEMP)} {(TMP)} {(TMPDIR)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (braced_var_sub token: (Token id:Id.VSub_Name val:x span_id:1155) prefix_op: (Id.VSub_Bang) ) } ) ) (C {(addwrite)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:x span_id:1167) prefix_op: (Id.VSub_Bang) ) ) } ) ] ) ] ) ) (C {(unset)} {(x)}) ] spids: [1115 1129] ) ] ) (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (0)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{(${ Id.VSub_Name HOME)}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1211) ) ] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [(C {(cd)} {(DQ (${ Id.VSub_Name HOME))}) (C {(die)})] ) ] spids: [1200 1213] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(cd)} {(DQ (${ Id.VSub_Name PORTAGE_PYM_PATH))}) (C {(die)} {(DQ ("PORTAGE_PYM_PATH does not exist: '") (${ Id.VSub_Name PORTAGE_PYM_PATH) ("'"))} ) ] ) ] ) (C {(umask)} {(022)}) (command.ShFunction name: debug-print body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(depend)} ) right: (bool_expr.LogicalOr left: (bool_expr.LogicalNot child: (bool_expr.Unary op_id:Id.BoolUnary_d child:{(${ Id.VSub_Name T)}) ) right: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(${ Id.VSub_Pound '#')} right: {(0)} ) ) ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1343) arg_word: {(0)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name ECLASS_DEBUG_OUTPUT)} right: {(on)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1362) ) ] action: [ (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'debug: %s\\n' span_id:1370))} {(DQ (${ Id.VSub_At '@'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1379) fd: -1 arg_word: {(2)} ) ] ) ] spids: [1349 1364] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(${ Id.VSub_Name ECLASS_DEBUG_OUTPUT)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1394) ) ] action: [ (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'debug: %s\\n' span_id:1402))} {(DQ (${ Id.VSub_At '@'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1411) fd: -1 arg_word: {(DQ (${ Id.VSub_Name ECLASS_DEBUG_OUTPUT))} ) ] ) ] spids: [1383 1396] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_w child: {($ Id.VSub_DollarName '$T')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1434) ) ] action: [ (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:1446))} {(DQ (${ Id.VSub_At '@'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1455) fd: -1 arg_word: {(DQ (${ Id.VSub_Name T) (/eclass-debug.log))} ) ] ) (C {(chgrp)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:PORTAGE_GRPNAME span_id:1473) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(portage)} ) ) ) } {(DQ (${ Id.VSub_Name T) (/eclass-debug.log))} ) (C {(chmod)} {(g) (Id.Lit_Other '+') (w)} {(DQ (${ Id.VSub_Name T) (/eclass-debug.log))} ) ] spids: [1424 1436] ) ] ) ] ) ) (command.ShFunction name: debug-print-function body: (command.BraceGroup children: [ (C {(debug-print)} { (DQ (${ Id.VSub_Number 1) (': entering function, parameters: ') (braced_var_sub token: (Token id:Id.VSub_Star val:'*' span_id:1525) suffix_op: (suffix_op.Slice begin:(arith_expr.ArithWord w:{(Id.Lit_Digits 2)})) ) ) } ) ] ) ) (command.ShFunction name: debug-print-section body: (command.BraceGroup children: [(C {(debug-print)} {(DQ ('now in section ') (${ Id.VSub_Star '*'))})] ) ) (C {(declare)} {(-ix)} {(Id.Lit_VarLike 'ECLASS_DEPTH=') (0)}) (command.ShFunction name: inherit body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ECLASS_DEPTH) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$ECLASS_DEPTH')}) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [1570] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.Op_Great left: {(${ Id.VSub_Name ECLASS_DEPTH)} right: {(1)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1594) ) ] action: [ (C {(debug-print)} { (DQ ('*** Multiple Inheritence (Level: ') (${ Id.VSub_Name ECLASS_DEPTH) (')')) } ) ] spids: [1581 1596] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$ECLASS')} ) right: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (braced_var_sub token: (Token id: Id.VSub_Name val: __export_funcs_var span_id: 1628 ) prefix_op: (Id.VSub_Bang) ) } ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1633) ) ] action: [ (command.Pipeline children: [ (C {(echo)} {(DQ ('QA Notice: EXPORT_FUNCTIONS is called before inherit in'))} { (DQ ($ Id.VSub_DollarName '$ECLASS') ('.eclass. For compatibility with <=portage-2.1.6.7,') ) } {(DQ ('only call EXPORT_FUNCTIONS after inherit(s).'))} ) (C {(fmt)} {(-w)} {(75)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:1669) cond: [ (command.Sentence child: (C {(read)} {(-r)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1675) ) ] body: (command.DoGroup children: [ (command.Sentence child: (C {(eqawarn)} {(DQ ($ Id.VSub_DollarName '$REPLY'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1685) ) ] ) ) ] negated: F ) ] spids: [1614 1635] ) ] ) (C {(local)} {(repo_location)}) (C {(local)} {(location)}) (C {(local)} {(potential_location)}) (C {(local)} {(x)}) (C {(local)} {(Id.Lit_VarLike 'PECLASS=') ($ Id.VSub_DollarName '$ECLASS')}) (C {(local)} {(Id.Lit_VarLike 'prev_export_funcs_var=') ($ Id.VSub_DollarName '$__export_funcs_var')} ) (C {(local)} {(B_IUSE)}) (C {(local)} {(B_REQUIRED_USE)}) (C {(local)} {(B_DEPEND)}) (C {(local)} {(B_RDEPEND)}) (C {(local)} {(B_PDEPEND)}) (C {(local)} {(B_HDEPEND)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:1762) cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1771) ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:location) op: assign_op.Equal rhs: {(DQ )} spids: [1776] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:potential_location) op: assign_op.Equal rhs: {(DQ )} spids: [1781] ) ] ) (C {(export)} {(Id.Lit_VarLike 'ECLASS=') (DQ ($ Id.VSub_Number '$1'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__export_funcs_var) op: assign_op.Equal rhs: {(__export_functions_) ($ Id.VSub_DollarName '$ECLASS_DEPTH')} spids: [1795] ) ] ) (C {(unset)} {($ Id.VSub_DollarName '$__export_funcs_var')}) (command.If arms: [ (if_arm cond: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(${ Id.VSub_Name EBUILD_PHASE)} right: {(depend)} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(${ Id.VSub_Name EBUILD_PHASE)} right: {(nofetch)} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(${ Id.VSub_Name EBUILD_PHASE)} right: {(Id.Lit_Other '*') (rm)} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(${ Id.VSub_Name EMERGE_FROM)} right: {(DQ (binary))} ) right: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(${ Id.VSub_Name _IN_INSTALL_QA_CHECK)} ) ) ) ) ) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {(has)} {($ Id.VSub_DollarName '$ECLASS')} {($ Id.VSub_DollarName '$INHERITED')} {($ Id.VSub_DollarName '$__INHERITED_QA_CACHE')} ) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:1905) ) ] action: [ (C {(eqawarn)} { (DQ ("QA Notice: ECLASS '") ($ Id.VSub_DollarName '$ECLASS') ("' inherited illegally in ") ($ Id.VSub_DollarName '$CATEGORY') (/) ($ Id.VSub_DollarName '$PF') (' ') ($ Id.VSub_DollarName '$EBUILD_PHASE') ) } ) ] spids: [1893 1907] ) ] ) ] spids: [1806 1866] ) ] ) (command.ForEach iter_name: repo_location iter_words: [ { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: PORTAGE_ECLASS_LOCATIONS span_id: 1939 ) 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:potential_location) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name repo_location) (/eclass/) (${ Id.VSub_Number 1) (.eclass) ) } spids: [1950] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {(${ Id.VSub_Name potential_location)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1974) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:location) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name potential_location))} spids: [1979] ) ] ) (C {(debug-print)} {(DQ (' eclass exists: ') (${ Id.VSub_Name location))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:1997) ) ] spids: [1963 1976] ) ] ) ] ) ) (C {(debug-print)} { (DQ ('inherit: ') ($ Id.VSub_Number '$1') (' -> ') ($ Id.VSub_DollarName '$location') ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(${ Id.VSub_Name location)} ) ) (C {(die)} {(DQ (${ Id.VSub_Number 1) ('.eclass could not be found by inherit()'))} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(${ Id.VSub_Name _IN_INSTALL_QA_CHECK)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2054) ) ] action: [ (C {(Id.KW_Set set)} {(-f)}) (C {(unset)} {(B_IUSE)} {(B_REQUIRED_USE)} {(B_DEPEND)} {(B_RDEPEND)} {(B_PDEPEND)} {(B_HDEPEND)} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:IUSE span_id:2101) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:B_IUSE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name IUSE))} spids: [2115] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:REQUIRED_USE span_id:2127) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:B_REQUIRED_USE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name REQUIRED_USE))} spids: [2141] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:DEPEND span_id:2153) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:B_DEPEND) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name DEPEND))} spids: [2167] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:RDEPEND span_id:2179) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:B_RDEPEND) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RDEPEND))} spids: [2193] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:PDEPEND span_id:2205) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:B_PDEPEND) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PDEPEND))} spids: [2219] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:HDEPEND span_id:2231) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:B_HDEPEND) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name HDEPEND))} spids: [2245] ) ] ) ] ) (C {(unset)} {(IUSE)} {(REQUIRED_USE)} {(DEPEND)} {(RDEPEND)} {(PDEPEND)} {(HDEPEND)} ) (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (f)}) ] spids: [2043 2056] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(__qa_source)} {(DQ ($ Id.VSub_DollarName '$location'))}) (C {(die)} { (DQ ('died sourcing ') ($ Id.VSub_DollarName '$location') (' in inherit()')) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(${ Id.VSub_Name _IN_INSTALL_QA_CHECK)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2312) ) ] action: [ (C {(Id.KW_Set set)} {(-f)}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:IUSE span_id:2339) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:E_IUSE) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:E_IUSE span_id:2356) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name IUSE) ) } spids: [2353] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:REQUIRED_USE span_id:2370) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:E_REQUIRED_USE) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: E_REQUIRED_USE span_id: 2387 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name REQUIRED_USE) ) } spids: [2384] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:DEPEND span_id:2401) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:E_DEPEND) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: E_DEPEND span_id: 2418 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name DEPEND) ) } spids: [2415] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:RDEPEND span_id:2432) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:E_RDEPEND) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: E_RDEPEND span_id: 2449 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name RDEPEND) ) } spids: [2446] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:PDEPEND span_id:2463) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:E_PDEPEND) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: E_PDEPEND span_id: 2480 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name PDEPEND) ) } spids: [2477] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:HDEPEND span_id:2494) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:E_HDEPEND) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: E_HDEPEND span_id: 2511 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name HDEPEND) ) } spids: [2508] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_IUSE span_id:2526) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IUSE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name B_IUSE))} spids: [2540] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_IUSE span_id:2552) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (C {(unset)} {(IUSE)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: B_REQUIRED_USE span_id: 2577 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REQUIRED_USE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name B_REQUIRED_USE))} spids: [2591] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: B_REQUIRED_USE span_id: 2603 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (C {(unset)} {(REQUIRED_USE)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_DEPEND span_id:2627) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEPEND) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name B_DEPEND))} spids: [2641] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_DEPEND span_id:2653) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (C {(unset)} {(DEPEND)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_RDEPEND span_id:2677) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RDEPEND) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name B_RDEPEND))} spids: [2691] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_RDEPEND span_id:2703) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (C {(unset)} {(RDEPEND)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_PDEPEND span_id:2727) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PDEPEND) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name B_PDEPEND))} spids: [2741] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_PDEPEND span_id:2753) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (C {(unset)} {(PDEPEND)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_HDEPEND span_id:2777) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HDEPEND) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name B_HDEPEND))} spids: [2791] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:B_HDEPEND span_id:2803) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(set)} ) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (C {(unset)} {(HDEPEND)}) ] ) (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (f)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (braced_var_sub token: (Token id: Id.VSub_Name val: __export_funcs_var span_id: 2842 ) prefix_op: (Id.VSub_Bang) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2847) ) ] action: [ (command.ForEach iter_name: x iter_words: [ { (braced_var_sub token: (Token id: Id.VSub_Name val: __export_funcs_var span_id: 2860 ) prefix_op: (Id.VSub_Bang) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(debug-print)} { (DQ ('EXPORT_FUNCTIONS: ') ($ Id.VSub_DollarName '$x') (' -> ') (${ Id.VSub_Name ECLASS) (_) ($ Id.VSub_DollarName '$x') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {(declare)} {(-F)} { (DQ (${ Id.VSub_Name ECLASS) (_) ($ Id.VSub_DollarName '$x') ) } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '>' span_id: 2894 ) fd: -1 arg_word: {(/dev/null)} ) ] ) (C {(die)} { (DQ ('EXPORT_FUNCTIONS: ') (${ Id.VSub_Name ECLASS) (_) ($ Id.VSub_DollarName '$x') (' is not defined') ) } ) ] ) (command.Simple words: [ {(eval)} { (DQ ($ Id.VSub_DollarName '$x') ('() { ') (${ Id.VSub_Name ECLASS) (_) ($ Id.VSub_DollarName '$x') (' ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 2925 ) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:2926)) ('@') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 2928 ) ) (' ; }') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2932) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) ) ] spids: [2834 2849] ) ] ) (C {(unset)} {($ Id.VSub_DollarName '$__export_funcs_var')}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(has)} {($ Id.VSub_Number '$1')} {($ Id.VSub_DollarName '$INHERITED')} ) (C {(export)} {(Id.Lit_VarLike 'INHERITED=') (DQ ($ Id.VSub_DollarName '$INHERITED') (' ') ($ Id.VSub_Number '$1') ) } ) ] ) ] spids: [2301 2314] ) ] ) (C {(shift)}) ] ) ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Arith_DMinus child: (sh_lhs_expr.Name name:ECLASS_DEPTH) ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: (arith_expr.VarRef token: (Token id:Id.Lit_ArithVarLike val:ECLASS_DEPTH span_id:2991) ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3000) ) ] action: [ (C {(export)} {(Id.Lit_VarLike 'ECLASS=') ($ Id.VSub_DollarName '$PECLASS')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__export_funcs_var) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$prev_export_funcs_var')} spids: [3011] ) ] ) ] spids: [2987 3002] ) ] else_action: [(C {(unset)} {(ECLASS)} {(__export_funcs_var)})] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3028) arg_word: {(0)} ) ] ) ) (command.ShFunction name: EXPORT_FUNCTIONS body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$ECLASS'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3065) ) ] action: [(C {(die)} {(DQ ('EXPORT_FUNCTIONS without a defined ECLASS'))})] spids: [3054 3067] ) ] ) (C {(eval)} {($ Id.VSub_DollarName '$__export_funcs_var') (Id.Lit_Other '+') (Id.Lit_Equals '=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3085) ) } {($ Id.VSub_Star '$*') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3088) ) } ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PORTAGE_BASHRCS_SOURCED) op: assign_op.Equal rhs: {(0)} spids: [3093] ) ] ) (command.ShFunction name: __source_all_bashrcs body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$PORTAGE_BASHRCS_SOURCED')} right: {(1)} ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3149) arg_word: {(0)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PORTAGE_BASHRCS_SOURCED) op: assign_op.Equal rhs: {(1)} spids: [3154] ) ] ) (C {(local)} {(x)}) (C {(local)} {(Id.Lit_VarLike 'OCC=') (DQ (${ Id.VSub_Name CC))} {(Id.Lit_VarLike 'OCXX=') (DQ (${ Id.VSub_Name CXX))} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(depend)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3194) ) ] action: [ (C {(save_IFS)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: { (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:3207) tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:3208)] ) } spids: [3206] ) ] ) (C {(local)} {(Id.Lit_VarLike 'bashenv_files=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:3215) words: [{($ Id.VSub_DollarName '$PORTAGE_BASHRC_FILES')}] ) } ) (C {(restore_IFS)}) (command.ForEach iter_name: x iter_words: [ { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:bashenv_files span_id:3231) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [(C {(__try_source)} {(DQ (${ Id.VSub_Name x))})] ) ) ] spids: [3182 3196] ) ] ) (C {(__try_source)} {(--no-qa)} {(DQ (${ Id.VSub_Name PORTAGE_BASHRC))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(depend)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3291) ) ] action: [ (C {(__source_env_files)} {(--no-qa)} {(DQ (${ Id.VSub_Name PM_EBUILD_HOOK_DIR))}) ] spids: [3279 3293] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} {(DQ (${ Id.VSub_Name OCC))} {(Id.Lit_RBracket ']')} ) (C {(export)} {(Id.Lit_VarLike 'CC=') (DQ (${ Id.VSub_Name OCC))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} {(DQ (${ Id.VSub_Name OCXX))} {(Id.Lit_RBracket ']')} ) (C {(export)} {(Id.Lit_VarLike 'CXX=') (DQ (${ Id.VSub_Name OCXX))}) ] ) ] ) ) (command.ShFunction name: __source_env_files body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'argument=') (sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:3393)) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(--no-qa)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3408) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:argument) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:3414) words: [{(--no-qa)}] ) } spids: [3413] ) ] ) (C {(shift)}) ] spids: [3397 3410] ) ] ) (command.ForEach iter_name: x iter_words: [ (word.BracedTree parts: [ (DQ (${ Id.VSub_Number 1)) (/) (${ Id.VSub_Name CATEGORY) (/) (word_part.BracedTuple words: [ {(${ Id.VSub_Name PN)} {(${ Id.VSub_Name PN) (Id.Lit_Other ':') (braced_var_sub token: (Token id:Id.VSub_Name val:SLOT span_id:3453) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) } {(${ Id.VSub_Name P)} {(${ Id.VSub_Name PF)} ] ) ] ) ] do_arg_iter: F body: (command.DoGroup children: [ (C {(__try_source)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:argument span_id:3476) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } {(DQ (${ Id.VSub_Name x))} ) ] ) ) ] ) ) (command.ShFunction name: __try_source body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'qa=') (true)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(--no-qa)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3537) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:qa) op: assign_op.Equal rhs: {(false)} spids: [3542] ) ] ) (C {(shift)}) ] spids: [3526 3539] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_Number '$1')} ) right: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_Number '$1')} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3567) ) ] action: [ (C {(local)} {(Id.Lit_VarLike 'debug_on=') (false)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$PORTAGE_DEBUG'))} right: {(DQ (1))} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub token: (Token id:Id.VSub_Hyphen val:- span_id:3600) suffix_op: (suffix_op.PatSub pat: {(x)} replace: (word.Empty) replace_mode: Id.Undefined_Tok ) ) ) } right: {(DQ ($ Id.VSub_Hyphen '$-'))} ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:3614) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:debug_on) op: assign_op.Equal rhs: {(true)} spids: [3619] ) ] ) ] spids: [3578 3616] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$debug_on')}) (C {(Id.KW_Set set)} {(-x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{(${ Id.VSub_Name qa)}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3656) ) ] action: [(C {(source)} {(DQ (${ Id.VSub_Number 1))})] spids: [3647 3658] ) ] else_action: [(C {(__qa_source)} {(DQ (${ Id.VSub_Number 1))})] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$debug_on')}) (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (x)}) ] ) ] spids: [3552 3569] ) ] ) ] ) ) (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (DQ (1))}) (C {(export)} {(Id.Lit_VarLike 'S=') (${ Id.VSub_Name WORKDIR) (/) (${ Id.VSub_Name P)}) (C {(shopt)} {(-u)} {(extglob)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name EBUILD_PHASE)} right: {(depend)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3752) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:QA_INTERCEPTORS) op: assign_op.Equal rhs: { (DQ ('awk bash cc egrep equery fgrep g++\n') ('\t\tgawk gcc grep javac java-config nawk perl\n') ('\t\tpkg-config python python-config sed') ) } spids: [3757] ) ] ) ] spids: [3738 3754] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name EBUILD_PHASE)} right: {(clean) (Id.Lit_Other '*')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3779) ) ] action: [(C {(unset)} {(QA_INTERCEPTORS)})] spids: [3764 3781] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:QA_INTERCEPTORS) op: assign_op.Equal rhs: {(DQ ('autoconf automake aclocal libtoolize'))} spids: [3791] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(${ Id.VSub_Name QA_INTERCEPTORS)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3813) ) ] action: [ (command.ForEach iter_name: BIN iter_words: [{(${ Id.VSub_Name QA_INTERCEPTORS)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BIN_PATH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3833) command_list: (command.CommandList children: [(C {(type)} {(-Pf)} {(${ Id.VSub_Name BIN)})] ) ) } spids: [3832] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_QMark '$?'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (0))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3860) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BODY) op: assign_op.Equal rhs: { (DQ ('echo ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3868) ) ('*** missing command: ') (${ Id.VSub_Name BIN) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3873) ) (' >&2; return 127') ) } spids: [3865] ) ] ) ] spids: [3844 3862] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BODY) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name BIN_PATH) (' ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3887) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3888)) ('@') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3890) ) ('; return ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3892)) ('?') ) } spids: [3881] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name EBUILD_PHASE)} right: {(depend)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3914) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FUNC_SRC) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name BIN) ('() {\n') ('\t\t\t\tif [ ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3926) ) ('ECLASS_DEPTH -gt 0 ]; then\n') ('\t\t\t\t\teqawarn ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3929) ) ("QA Notice: '") (${ Id.VSub_Name BIN) ("' called in global scope: eclass ") (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3935) ) ('{ECLASS}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:3937)) ('\n') ('\t\t\t\telse\n') ('\t\t\t\t\teqawarn ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3941) ) ("QA Notice: '") (${ Id.VSub_Name BIN) ("' called in global scope: ") (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3947) ) ('{CATEGORY}/') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3949)) ('{PF}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:3951)) ('\n') ('\t\t\t\tfi\n') ('\t\t\t') (${ Id.VSub_Name BODY) ('\n') ('\t\t\t}') ) } spids: [3919] ) ] ) ] spids: [3900 3916] ) (if_arm cond: [ (command.Sentence child: (C {(has)} {(${ Id.VSub_Name BIN)} {(autoconf)} {(automake)} {(aclocal)} {(libtoolize)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3979) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FUNC_SRC) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name BIN) ('() {\n') ('\t\t\t\tif ! has ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3991) ) ('{FUNCNAME[1]} eautoreconf eaclocal _elibtoolize ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\\\' span_id: 3993 ) ) ('\n') ('\t\t\t\t\teautoheader eautoconf eautomake autotools_run_tool ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\\\' span_id: 3996 ) ) ('\n') ('\t\t\t\t\tautotools_check_macro autotools_get_subdirs ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\\\' span_id: 3999 ) ) ('\n') ('\t\t\t\t\tautotools_get_auxdir ; then\n') ('\t\t\t\t\teqawarn ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:4003) ) ("QA Notice: '") (${ Id.VSub_Name BIN) ("' called by ") (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4009) ) ('{FUNCNAME[1]}: ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4011) ) ('{CATEGORY}/') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:4013)) ('{PF}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:4015)) ('\n') ('\t\t\t\t\teqawarn ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:4018)) ("Use autotools.eclass instead of calling '") (${ Id.VSub_Name BIN) ("' directly.") (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:4024) ) ('\n') ('\t\t\t\tfi\n') ('\t\t\t') (${ Id.VSub_Name BODY) ('\n') ('\t\t\t}') ) } spids: [3984] ) ] ) ] spids: [3963 3981] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FUNC_SRC) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name BIN) ('() {\n') ('\t\t\t\teqawarn ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:4046) ) ("QA Notice: '") (${ Id.VSub_Name BIN) ("' called by ") (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4052) ) ('{FUNCNAME[1]}: ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4054) ) ('{CATEGORY}/') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:4056)) ('{PF}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:4058)) ('\n') ('\t\t\t') (${ Id.VSub_Name BODY) ('\n') ('\t\t\t}') ) } spids: [4039] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(eval)} {(DQ ($ Id.VSub_DollarName '$FUNC_SRC'))}) (command.Simple words: [ {(echo)} {(DQ ('error creating QA interceptor ') (${ Id.VSub_Name BIN))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:4089) fd: -1 arg_word: {(2)} ) ] ) ] ) ] ) ) (C {(unset)} {(BIN_PATH)} {(BIN)} {(BODY)} {(FUNC_SRC)}) ] spids: [3801 3815] ) ] ) (C {(export)} {(Id.Lit_VarLike 'EBUILD_MASTER_PID=') (braced_var_sub token: (Token id:Id.VSub_Name val:BASHPID span_id:4116) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4118) command_list: (command.CommandList children:[(C {(__bashpid)})]) ) } ) ) } ) (C {(trap)} {(SQ (Token id:Id.Lit_Chars val:'exit 1' span_id:4126))} {(SIGTERM)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Pipeline children: [ (C {(has)} {(DQ ($ Id.VSub_DollarName '$EBUILD_PHASE'))} {(clean)} {(cleanrm)} {(depend)} ) ] negated: T ) (command.Pipeline children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$EMERGE_FROM')} right: {(ebuild)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(setup)} ) ) ) ] negated: T ) (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name T)) (/environment)} {(Id.Lit_RBracket ']')} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:4189) ) ] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(__preprocess_ebuild_env)}) (C {(die)} {(DQ ('error processing environment'))}) ] ) (command.ForEach iter_name: x iter_words: [{(SANDBOX_DENY)} {(SANDBOX_READ)} {(SANDBOX_PREDICT)} {(SANDBOX_WRITE)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(export)} {(PORTAGE_) (${ Id.VSub_Name x) (Id.Lit_Equals '=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:x span_id:4256) prefix_op: (Id.VSub_Bang) ) ) } ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PORTAGE_SANDBOX_ON) op: assign_op.Equal rhs: {(${ Id.VSub_Name SANDBOX_ON)} spids: [4264] ) ] ) (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (1)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(DQ (${ Id.VSub_Name T)) (/environment)}) (C {(die)} {(DQ ('error sourcing environment'))}) ] ) (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (0)}) (command.ForEach iter_name: x iter_words: [{(SANDBOX_DENY)} {(SANDBOX_PREDICT)} {(SANDBOX_READ)} {(SANDBOX_WRITE)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:y) op: assign_op.Equal rhs: {(DQ (PORTAGE_) (${ Id.VSub_Name x))} spids: [4337] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:x span_id:4355) prefix_op: (Id.VSub_Bang) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4361) ) ] action: [ (C {(export)} {(${ Id.VSub_Name x) (Id.Lit_Equals '=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:y span_id:4375) prefix_op: (Id.VSub_Bang) ) ) } ) ] spids: [4346 4363] ) (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:y span_id:4389) prefix_op: (Id.VSub_Bang) ) ) } {(Id.Lit_RBracket ']')} ) (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:y span_id:4402) prefix_op: (Id.VSub_Bang) ) ) } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:x span_id:4412) prefix_op: (Id.VSub_Bang) ) ) } {(Id.Lit_RBracket ']')} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:4418) ) ] action: [ (C {(export)} {(${ Id.VSub_Name x) (Id.Lit_Equals '=') (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4434) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(printf)} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: y span_id: 4440 ) prefix_op: (Id.VSub_Bang) ) (':') (braced_var_sub token:(Token id:Id.VSub_Name val:x span_id:4445) prefix_op:(Id.VSub_Bang)) ) } ) (C {(tr)} {(DQ (':'))} {(DQ (Id.Lit_Other '\\') (0))}) (C {(sort)} {(-z)} {(-u)}) (C {(tr)} {(DQ (Id.Lit_Other '\\') (0))} {(DQ (':'))}) ] negated: F ) ] ) ) ) } ) ] spids: [4380 4420] ) ] ) (C {(export)} {(${ Id.VSub_Name x) (Id.Lit_Equals '=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:x span_id:4500) prefix_op: (Id.VSub_Bang) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{(':')}) ) ) } ) (C {(unset)} {(PORTAGE_) (${ Id.VSub_Name x)}) ] ) ) (C {(unset)} {(x)} {(y)}) (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (${ Id.VSub_Name PORTAGE_SANDBOX_ON)}) (C {(unset)} {(PORTAGE_SANDBOX_ON)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName '$EAPI')}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EAPI) op: assign_op.Equal rhs: {(0)} spids: [4548] ) ] ) ] ) ] spids: [4132 4191] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(___eapi_enables_globstar)}) terminator: (Token id:Id.Op_Semi val:';' span_id:4557) ) ] action: [(C {(shopt)} {(-s)} {(globstar)})] spids: [4554 4559] ) ] ) (C {(eval)} {(DQ ('PORTAGE_ECLASS_LOCATIONS=(') (${ Id.VSub_Name PORTAGE_ECLASS_LOCATIONS) (')'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {(has)} {(DQ ($ Id.VSub_DollarName '$EBUILD_PHASE'))} {(clean)} {(cleanrm)}) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:4605) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(setup)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$EMERGE_FROM')} right: {(ebuild)} ) ) ) (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(depend)} ) right: (bool_expr.LogicalOr left: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName '$T') (/environment)} ) ) right: (bool_expr.LogicalOr left: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName '$PORTAGE_BUILDDIR') (/.ebuild_changed) } ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ (' ') (${ Id.VSub_Name FEATURES) (' '))} right: {(Id.Lit_Other '*') (DQ (' noauto ')) (Id.Lit_Other '*') } ) ) ) ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:4682) ) ] action: [ (C {(__source_all_bashrcs)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__INHERITED_QA_CACHE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$INHERITED')} spids: [4715] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(___eapi_enables_failglob_in_global_scope)}) terminator: (Token id:Id.Op_Semi val:';' span_id:4735) ) ] action: [(C {(shopt)} {(-s)} {(failglob)})] spids: [4732 4737] ) ] ) (C {(unset)} {(EAPI)} {(DEPEND)} {(RDEPEND)} {(PDEPEND)} {(HDEPEND)} {(INHERITED)} {(IUSE)} {(REQUIRED_USE)} {(ECLASS)} {(E_IUSE)} {(E_REQUIRED_USE)} {(E_DEPEND)} {(E_RDEPEND)} {(E_PDEPEND)} {(E_HDEPEND)} {(PROVIDES_EXCLUDE)} {(REQUIRES_EXCLUDE)} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$PORTAGE_DEBUG')} right: {(1)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub token: (Token id:Id.VSub_Hyphen val:- span_id:4822) suffix_op: (suffix_op.PatSub pat: {(x)} replace: {} replace_mode: Id.Undefined_Tok ) ) } right: {($ Id.VSub_Hyphen '$-')} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:4834) ) ] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(DQ ($ Id.VSub_DollarName '$EBUILD'))}) (C {(die)} {(DQ ('error sourcing ebuild'))}) ] ) ] spids: [4809 4836] ) ] else_action: [ (C {(Id.KW_Set set)} {(-x)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(source)} {(DQ ($ Id.VSub_DollarName '$EBUILD'))}) (C {(die)} {(DQ ('error sourcing ebuild'))}) ] ) (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (x)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(___eapi_enables_failglob_in_global_scope)}) terminator: (Token id:Id.Op_Semi val:';' span_id:4890) ) ] action: [(C {(shopt)} {(-u)} {(failglob)})] spids: [4887 4892] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ (${ Id.VSub_Name EBUILD_PHASE))} right: {(DQ (depend))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:4924) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESTRICT) op: assign_op.Equal rhs: {(${ Id.VSub_Name PORTAGE_RESTRICT)} spids: [4929] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_e child: {($ Id.VSub_DollarName '$PORTAGE_BUILDDIR') (/.ebuild_changed) } ) ) (C {(rm)} {(DQ ($ Id.VSub_DollarName '$PORTAGE_BUILDDIR') (/.ebuild_changed))} ) ] ) ] spids: [4906 4926] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:EAPI span_id:4964) suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{(set)}) ) ) } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EAPI) op: assign_op.Equal rhs: {(0)} spids: [4978] ) ] ) ] ) (C {(export)} {(EAPI)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(___eapi_has_RDEPEND_DEPEND_fallback)}) terminator: (Token id:Id.Op_Semi val:';' span_id:4996) ) ] action: [ (C {(export)} {(Id.Lit_VarLike 'RDEPEND=') (braced_var_sub token: (Token id:Id.VSub_Name val:RDEPEND span_id:5005) suffix_op: (suffix_op.Unary op_id: Id.VTest_Hyphen arg_word: {(${ Id.VSub_Name DEPEND)} ) ) } ) (C {(debug-print)} {(DQ ('RDEPEND: not set... Setting to: ') (${ Id.VSub_Name DEPEND))} ) ] spids: [4993 4998] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IUSE) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:IUSE span_id:5034) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name E_IUSE) ) } spids: [5031] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEPEND) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:DEPEND span_id:5047) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name E_DEPEND) ) } spids: [5044] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RDEPEND) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:RDEPEND span_id:5060) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name E_RDEPEND) ) } spids: [5057] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PDEPEND) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:PDEPEND span_id:5073) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name E_PDEPEND) ) } spids: [5070] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HDEPEND) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:HDEPEND span_id:5086) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name E_HDEPEND) ) } spids: [5083] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REQUIRED_USE) op: assign_op.PlusEqual rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:REQUIRED_USE span_id:5099) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) (${ Id.VSub_Name E_REQUIRED_USE) ) } spids: [5096] ) ] ) (C {(unset)} {(ECLASS)} {(E_IUSE)} {(E_REQUIRED_USE)} {(E_DEPEND)} {(E_RDEPEND)} {(E_PDEPEND)} {(E_HDEPEND)} {(__INHERITED_QA_CACHE)} ) (command.Case to_match: {(${ Id.VSub_Name EAPI)} arms: [ (case_arm pat_list: [{(0)} {(1)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_valid_phases) op: assign_op.Equal rhs: { (DQ ('src_compile pkg_config pkg_info src_install\n') ( '\t\t\t\t\tpkg_nofetch pkg_postinst pkg_postrm pkg_preinst pkg_prerm\n' ) ('\t\t\t\t\tpkg_setup src_test src_unpack') ) } spids: [5152] ) ] ) ] spids: [5146 5149 5160 -1] ) (case_arm pat_list: [{(2)} {(3)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_valid_phases) op: assign_op.Equal rhs: { (DQ ('src_compile pkg_config src_configure pkg_info\n') ( '\t\t\t\t\tsrc_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst\n' ) ('\t\t\t\t\tsrc_prepare pkg_prerm pkg_setup src_test src_unpack') ) } spids: [5169] ) ] ) ] spids: [5163 5166 5177 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_valid_phases) op: assign_op.Equal rhs: { (DQ ('src_compile pkg_config src_configure pkg_info\n') ( '\t\t\t\t\tsrc_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst\n' ) ('\t\t\t\t\tsrc_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack') ) } spids: [5184] ) ] ) ] spids: [5180 5181 5192 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEFINED_PHASES) op: assign_op.Equal rhs: (word.Empty) spids: [5199] ) ] ) (command.ForEach iter_name: _f iter_words: [{($ Id.VSub_DollarName '$_valid_phases')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(declare)} {(-F)} {($ Id.VSub_DollarName '$_f')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:5223) fd: -1 arg_word: {(/dev/null)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:5226) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_f) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:_f span_id:5233) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(pkg_)} ) ) } spids: [5231] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEFINED_PHASES) op: assign_op.PlusEqual rhs: { (DQ (' ') (braced_var_sub token: (Token id:Id.VSub_Name val:_f span_id:5243) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(src_)} ) ) ) } spids: [5239] ) ] ) ] spids: [5215 5228] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DEFINED_PHASES')} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEFINED_PHASES) op: assign_op.Equal rhs: {(-)} spids: [5266] ) ] ) ] ) (C {(unset)} {(_f)} {(_valid_phases)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(depend)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:5291) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(has)} {(distcc)} {($ Id.VSub_DollarName '$FEATURES')}) terminator: (Token id:Id.Op_Semi val:';' span_id:5305) ) ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$DISTCC_LOG')} ) ) (C {(addwrite)} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: DISTCC_LOG span_id: 5324 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) ) } ) ] ) ] spids: [5297 5307] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(has)} {(ccache)} {($ Id.VSub_DollarName '$FEATURES')}) terminator: (Token id:Id.Op_Semi val:';' span_id:5344) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$CCACHE_DIR')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:5360) ) ] action: [ (C {(addread)} {(DQ ($ Id.VSub_DollarName '$CCACHE_DIR'))}) (C {(addwrite)} {(DQ ($ Id.VSub_DollarName '$CCACHE_DIR'))}) ] spids: [5350 5362] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$CCACHE_SIZE')} ) ) (command.Simple words: [ {(ccache)} {(-M)} {($ Id.VSub_DollarName '$CCACHE_SIZE')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_AndGreat val:'&>' span_id:5399) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) ] spids: [5336 5346] ) ] ) ] spids: [5279 5293] ) ] ) ] spids: [4610 4684] ) ] ) ] spids: [4591 4607] ) ] ) (command.ForEach iter_name: x iter_words: [{(${ Id.VSub_Name USE_EXPAND)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:x span_id:5438) prefix_op: (Id.VSub_Bang) ) ) } {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ ('*'))} {(Id.Lit_RBracket ']')} ) (C {(unset)} {(${ Id.VSub_Name x)}) ] ) ] ) ) (C {(unset)} {(x)}) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(has)} {(nostrip)} {(${ Id.VSub_Name FEATURES)} {(${ Id.VSub_Name RESTRICT)}) (C {(has)} {(strip)} {(${ Id.VSub_Name RESTRICT)}) ] ) ] action: [(C {(export)} {(Id.Lit_VarLike 'DEBUGBUILD=') (1)})] spids: [5466 5490] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName '$EBUILD_PHASE')} right: {(depend)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:5513) ) ] action: [ (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (DQ (0))}) (C {(Id.KW_Set set)} {(-f)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name dbkey))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5546) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:dbkey span_id:5561) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5569) ) ] action: [ (C {(install)} {(-d)} {(-g)} {(${ Id.VSub_Name PORTAGE_GID)} {(-m2775)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:dbkey span_id:5588) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) ) } ) ] spids: [5551 5571] ) ] ) (C {(umask)} {(002)}) ] spids: [5532 5548] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:auxdbkeys) op: assign_op.Equal rhs: { (DQ ('DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE\n') ( '\t\tDESCRIPTION KEYWORDS INHERITED IUSE REQUIRED_USE PDEPEND PROVIDE EAPI\n' ) ('\t\tPROPERTIES DEFINED_PHASES HDEPEND UNUSED_04\n') ('\t\tUNUSED_03 UNUSED_02 UNUSED_01') ) } spids: [5612] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children:[(C {(___eapi_has_HDEPEND)})] negated:T) terminator: (Token id:Id.Op_Semi val:';' span_id:5627) ) ] action: [(C {(unset)} {(HDEPEND)})] spids: [5622 5629] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name dbkey))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5659) ) ] action: [ (command.Simple redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:5664) fd: -1 arg_word: {(DQ (${ Id.VSub_Name dbkey))} ) ] ) (command.ForEach iter_name: f iter_words: [{(${ Id.VSub_Name auxdbkeys)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {(echo)} { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 5690 ) command_list: (command.CommandList children: [ (C {(echo)} { (braced_var_sub token: (Token id:Id.VSub_Name val:f span_id:5695) prefix_op: (Id.VSub_Bang) ) } ) ] ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:5699) fd: -1 arg_word: {(DQ (${ Id.VSub_Name dbkey))} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:5709) arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ] ) ) ] spids: [5645 5661] ) ] else_action: [ (command.ForEach iter_name: f iter_words: [{(${ Id.VSub_Name auxdbkeys)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(eval)} { (DQ ('echo ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:5739) ) ('(echo ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:5741)) ('{!f}) 1>&') (${ Id.VSub_Name PORTAGE_PIPE_FD) ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:5750) arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ] ) ) (C {(eval)} {(DQ ('exec ') (${ Id.VSub_Name PORTAGE_PIPE_FD) ('>&-'))}) ] ) (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (f)}) ] spids: [5501 5515] ) ] else_action: [ (C {(declare)} {(-r)} {($ Id.VSub_DollarName '$PORTAGE_READONLY_METADATA')} {($ Id.VSub_DollarName '$PORTAGE_READONLY_VARS')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(___eapi_has_prefix_variables)}) terminator: (Token id:Id.Op_Semi val:';' span_id:5800) ) ] action: [(C {(declare)} {(-r)} {(ED)} {(EPREFIX)} {(EROOT)})] spids: [5797 5802] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name EBUILD_PHASE)} right: {(test)} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name EBUILD_FORCE_TEST)} right: {(1)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(test)} right: {(${ Id.VSub_Name PORTAGE_IUSE)} ) ) ) ) (command.Pipeline children: [(C {(has)} {(test)} {(${ Id.VSub_Name USE)})] negated: T ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:5875) ) ] action: [(C {(export)} {(Id.Lit_VarLike 'USE=') (DQ (${ Id.VSub_Name USE) (' test'))})] spids: [5828 5877] ) ] ) (C {(declare)} {(-r)} {(USE)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$EBUILD_SH_ARGS')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:5912) ) ] action: [ (command.Subshell command_list: (command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(${ Id.VSub_Name PORTAGE_PIPE_FD)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:5940) ) ] action: [ (C {(eval)} {(DQ ('exec ') (${ Id.VSub_Name PORTAGE_PIPE_FD) ('>&-'))}) (C {(unset)} {(PORTAGE_PIPE_FD)}) ] spids: [5928 5942] ) ] ) (C {(__ebuild_main)} {(${ Id.VSub_Name EBUILD_SH_ARGS)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:5971) arg_word: {(0)} ) ] ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:5979) arg_word: {($ Id.VSub_QMark '$?')} ) ] spids: [5902 5914] ) ] ) ] ) (C {(true)}) ] )