(CommandList children: [ (FuncDef name: clean_up body: (BraceGroup children: [(C {(rm)} {(-f)} {($ VSub_Name '$TMP_FILE')}) (C {(exit)})] spids: [68] ) spids: [64 67] ) (C {(trap)} {(clean_up)} {(HUP)} {(INT)} {(TERM)}) (FuncDef name: usage body: (BraceGroup children: [ (C {(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' [OPTIONS] [CONFIG [...]]'))}) (C {(echo)} {(DQ (' -h display this help text'))}) (C {(echo)} {(DQ (' -m only merge the fragments, do not execute the make command'))}) (C {(echo)} {(DQ (' -n use allnoconfig instead of alldefconfig'))}) (C {(echo)} {(DQ (' -r list redundant entries when merging fragments'))}) (C {(echo)} { (DQ (' -O dir to put generated output files. Consider setting ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('KCONFIG_CONFIG instead.') ) } ) ] spids: [97] ) spids: [93 96] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RUNMAKE) op:Equal rhs:{(true)} spids:[148])] spids: [148] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ALLTARGET) op:Equal rhs:{(alldefconfig)} spids:[151])] spids: [151] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WARNREDUN) op:Equal rhs:{(false)} spids:[154])] spids: [154] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OUTPUT) op:Equal rhs:{(.)} spids:[157])] spids: [157] ) (While cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Case to_match: {($ VSub_Number '$1')} arms: [ (case_arm pat_list: [{(DQ (-n))}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ALLTARGET) op: Equal rhs: {(allnoconfig)} spids: [182] ) ] spids: [182] ) (C {(shift)}) (ControlFlow token:<ControlFlow_Continue continue>) ] spids: [177 179 192 16777215] ) (case_arm pat_list: [{(DQ (-m))}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RUNMAKE) op: Equal rhs: {(false)} spids: [201] ) ] spids: [201] ) (C {(shift)}) (ControlFlow token:<ControlFlow_Continue continue>) ] spids: [196 198 211 16777215] ) (case_arm pat_list: [{(DQ (-h))}] action: [(C {(usage)}) (C {(exit)})] spids: [215 217 226 16777215] ) (case_arm pat_list: [{(DQ (-r))}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WARNREDUN) op: Equal rhs: {(true)} spids: [235] ) ] spids: [235] ) (C {(shift)}) (ControlFlow token:<ControlFlow_Continue continue>) ] spids: [230 232 245 16777215] ) (case_arm pat_list: [{(DQ (-O))}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-d)} {($ VSub_Number '$2')} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTPUT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Number '$2')}) (C {(sed)} {(SQ <'s/\\/*$//'>)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [268 280] ) } spids: [267] ) ] spids: [267] ) ] spids: [16777215 264] ) ] else_action: [ (SimpleCommand words: [ {(echo)} {(DQ ('output directory ') ($ VSub_Number '$2') (' does not exist'))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[294])] ) (C {(exit)} {(1)}) ] spids: [283 303] ) (C {(shift)} {(2)}) (ControlFlow token:<ControlFlow_Continue continue>) ] spids: [249 251 314 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [317 318 324 16777215] ) ] spids: [169 173 327] ) ] spids: [166 329] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-lt)} {(1)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(usage)}) (C {(exit)})] spids: [16777215 348] ) ] spids: [16777215 356] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$KCONFIG_CONFIG'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$OUTPUT'))} {(KW_Bang '!') (Lit_Other '=')} {(.)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:KCONFIG_CONFIG) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(readlink)} {(-m)} {(--)} {(DQ ($ VSub_Name '$OUTPUT') (/.config))} ) ] ) left_token: <Left_CommandSub '$('> spids: [395 406] ) } spids: [394] ) ] spids: [394] ) ] spids: [16777215 391] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:KCONFIG_CONFIG) op: Equal rhs: {(.config)} spids: [412] ) ] spids: [412] ) ] spids: [409 416] ) ] spids: [16777215 372] ) ] spids: [16777215 418] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INITFILE) op: Equal rhs: {($ VSub_Number '$1')} spids: [421] ) ] spids: [421] ) (Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {(DQ ($ VSub_Name '$INITFILE'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} {(DQ ("The base file '") ($ VSub_Name '$INITFILE') ("' does not exist. Exit."))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[454])] ) (C {(exit)} {(1)}) ] spids: [16777215 443] ) ] spids: [16777215 462] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MERGE_LIST) op: Equal rhs: {($ VSub_Star '$*')} spids: [465] ) ] spids: [465] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SED_CONFIG_EXP) op: Equal rhs: { (DQ ('s/^') (Lit_Other '\\') ('(# ') (Lit_Other '\\') (')') (Lit_Other '\\') ('{0,1') (Lit_Other '\\') ('}') (Lit_Other '\\') ('(CONFIG_[a-zA-Z0-9_]*') (Lit_Other '\\') (')[= ].*/') (Lit_Other '\\') (2/p) ) } spids: [468] ) ] spids: [468] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TMP_FILE) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(mktemp)} {(./.tmp.config.XXXXXXXXXX)})]) left_token: <Left_CommandSub '$('> spids: [488 492] ) } spids: [487] ) ] spids: [487] ) (C {(echo)} {(DQ ('Using ') ($ VSub_Name '$INITFILE') (' as base'))}) (SimpleCommand words: [{(cat)} {($ VSub_Name '$INITFILE')}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TMP_FILE')} spids: [507] ) ] ) (ForEach iter_name: MERGE_FILE iter_words: [{($ VSub_Name '$MERGE_LIST')}] do_arg_iter: False body: (DoGroup children: [ (C {(echo)} {(DQ ('Merging ') ($ VSub_Name '$MERGE_FILE'))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {(DQ ($ VSub_Name '$MERGE_FILE'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("The merge file '") ($ VSub_Name '$MERGE_FILE') ("' does not exist. Exit.") ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[562])] ) (C {(exit)} {(1)}) ] spids: [16777215 551] ) ] spids: [16777215 571] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CFG_LIST) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(sed)} {(-n)} {(DQ ($ VSub_Name '$SED_CONFIG_EXP'))} {($ VSub_Name '$MERGE_FILE')} ) ] ) left_token: <Left_CommandSub '$('> spids: [575 585] ) } spids: [574] ) ] spids: [574] ) (ForEach iter_name: CFG iter_words: [{($ VSub_Name '$CFG_LIST')}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (C {(grep)} {(-q)} {(-w)} {($ VSub_Name '$CFG')} {($ VSub_Name '$TMP_FILE')}) (ControlFlow token:<ControlFlow_Continue continue>) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PREV_VAL) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(grep)} {(-w)} {($ VSub_Name '$CFG')} {($ VSub_Name '$TMP_FILE')} ) ] ) left_token: <Left_CommandSub '$('> spids: [618 626] ) } spids: [617] ) ] spids: [617] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NEW_VAL) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(grep)} {(-w)} {($ VSub_Name '$CFG')} {($ VSub_Name '$MERGE_FILE')} ) ] ) left_token: <Left_CommandSub '$('> spids: [630 638] ) } spids: [629] ) ] spids: [629] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (x) ($ VSub_Name '$PREV_VAL'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (x) ($ VSub_Name '$NEW_VAL'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(Value)} {(of)} {($ VSub_Name '$CFG')} {(is)} {(redefined)} {(by)} {(fragment)} {($ VSub_Name '$MERGE_FILE') (Lit_Other ':')} ) (C {(echo)} {(Previous)} {(value) (Lit_Other ':')} {($ VSub_Name '$PREV_VAL')} ) (C {(echo)} {(New)} {(value) (Lit_Other ':')} {($ VSub_Name '$NEW_VAL')}) (C {(echo)}) ] spids: [16777215 662] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$WARNREDUN'))} {(Lit_Other '=')} {(DQ (true))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(Value)} {(of)} {($ VSub_Name '$CFG')} {(is)} {(redundant)} {(by)} {(fragment)} {($ VSub_Name '$MERGE_FILE') (Lit_Other ':')} ) ] spids: [708 725] ) ] spids: [16777215 748] ) (C {(sed)} {(-i)} {(DQ (/) ($ VSub_Name '$CFG') ('[ =]/d'))} {($ VSub_Name '$TMP_FILE')} ) ] spids: [599 764] ) spids: [594 597] ) (SimpleCommand words: [{(cat)} {($ VSub_Name '$MERGE_FILE')}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TMP_FILE')} spids: [771] ) ] ) ] spids: [525 775] ) spids: [520 523] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$RUNMAKE'))} {(Lit_Other '=')} {(DQ (false))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(cp)} {(-T)} {(--)} {(DQ ($ VSub_Name '$TMP_FILE'))} {(DQ ($ VSub_Name '$KCONFIG_CONFIG'))}) (C {(echo)} {(DQ ('#'))}) (C {(echo)} { (DQ ('# merged configuration written to ') ($ VSub_Name '$KCONFIG_CONFIG') (' (needs make)') ) } ) (C {(echo)} {(DQ ('#'))}) (C {(clean_up)}) (C {(exit)}) ] spids: [16777215 795] ) ] spids: [16777215 841] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OUTPUT_ARG) op:Equal rhs:{(DQ )} spids:[850])] spids: [850] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$OUTPUT'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (.))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTPUT_ARG) op: Equal rhs: {(DQ ('O=') ($ VSub_Name '$OUTPUT'))} spids: [876] ) ] spids: [876] ) ] spids: [16777215 873] ) ] spids: [16777215 882] ) (C {(make)} {(Lit_VarLike 'KCONFIG_ALLCONFIG=') ($ VSub_Name '$TMP_FILE')} {($ VSub_Name '$OUTPUT_ARG')} {($ VSub_Name '$ALLTARGET')} ) (ForEach iter_name: CFG iter_words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(sed)} {(-n)} {(DQ ($ VSub_Name '$SED_CONFIG_EXP'))} {($ VSub_Name '$TMP_FILE')}) ] ) left_token: <Left_CommandSub '$('> spids: [915 925] ) } ] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REQUESTED_VAL) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(grep)} {(-w)} {(-e)} {(DQ ($ VSub_Name '$CFG'))} {($ VSub_Name '$TMP_FILE')} ) ] ) left_token: <Left_CommandSub '$('> spids: [933 945] ) } spids: [932] ) ] spids: [932] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ACTUAL_VAL) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(grep)} {(-w)} {(-e)} {(DQ ($ VSub_Name '$CFG'))} {(DQ ($ VSub_Name '$KCONFIG_CONFIG'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [949 963] ) } spids: [948] ) ] spids: [948] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (x) ($ VSub_Name '$REQUESTED_VAL'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (x) ($ VSub_Name '$ACTUAL_VAL'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Value requested for ') ($ VSub_Name '$CFG') (' not in final .config'))} ) (C {(echo)} {(DQ ('Requested value: ') ($ VSub_Name '$REQUESTED_VAL'))}) (C {(echo)} {(DQ ('Actual value: ') ($ VSub_Name '$ACTUAL_VAL'))}) (C {(echo)} {(DQ )}) ] spids: [16777215 987] ) ] spids: [16777215 1021] ) ] spids: [928 1023] ) spids: [914 926] ) (C {(clean_up)}) ] )