(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {(/bin) (Lit_Other ':') (/usr/bin) (Lit_Other ':') (/usr/sbin)} spids: [35] ) ] spids: [35] ) (FuncDef name: display_usage body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VERSION_NUMBER) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(grep)} {(DQ ('[') (Lit_Other '$') (']FreeBSD:'))} {($ VSub_Number '$0')} ) (C {(cut)} {(-d)} {(SQ <' '>)} {(-f)} {(4)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [52 76] ) } spids: [51] ) ] spids: [51] ) (C {(echo)} { (DQ (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)}) spids: [82 87] ) (' version ') (${ VSub_Name VERSION_NUMBER) ) } ) (C {(echo)} { (DQ ('Usage: ') (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)}) spids: [99 104] ) (' [-m /path] [-t /path] [-A arch] [-F <make args>] [-D /path]') ) } ) (C {(echo)} {(DQ ('Options:'))}) (C {(echo)} {(DQ (' -m /path/directory Specify location of source to do the make in'))}) (C {(echo)} {(DQ (' -t /path/directory Specify temp root directory'))}) (C {(echo)} {(DQ (' -A architecture Alternative architecture name to pass to make'))}) (C {(echo)} {(DQ (' -F <arguments for make> Specify what to put on the make command line'))} ) (C {(echo)} {(SQ <' -D /path/directory Specify the destination directory to install files to'>)} ) (C {(echo)} {(SQ )}) ] spids: [48] ) spids: [43 47] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEMPROOT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(mktemp)} {(-d)} {(-t)} {(temproot)}] more_env: [(env_pair name:TMPDIR val:{(/var/tmp)} spids:[167])] ) ] ) left_token: <Left_Backtick '`'> spids: [166 177] ) } spids: [165] ) ] spids: [165] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MTREEDB) op: Equal rhs: { (BracedVarSub token: <VSub_Name MTREEDB> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(Lit_Slash /) (var) (Lit_Slash /) (db)} ) spids: [187 194] ) } spids: [186] ) ] spids: [186] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MTREEFILE) op: Equal rhs: {(DQ (${ VSub_Name MTREEDB) (/mergemaster.mtree))} spids: [196] ) ] spids: [196] ) (While cond: [ (Sentence child: (C {(getopts)} {(DQ ('m:t:A:F:D:h'))} {(COMMAND_LINE_ARGUMENT)}) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Case to_match: {(DQ (${ VSub_Name COMMAND_LINE_ARGUMENT))} arms: [ (case_arm pat_list: [{(m)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SOURCEDIR) op: Equal rhs: {(${ VSub_Name OPTARG)} spids: [241] ) ] spids: [241] ) ] spids: [237 238 247 16777215] ) (case_arm pat_list: [{(t)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEMPROOT) op: Equal rhs: {(${ VSub_Name OPTARG)} spids: [254] ) ] spids: [254] ) ] spids: [250 251 260 16777215] ) (case_arm pat_list: [{(A)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ARCHSTRING) op: Equal rhs: {(SQ <'TARGET_ARCH='>) (${ VSub_Name OPTARG)} spids: [267] ) ] spids: [267] ) ] spids: [263 264 276 16777215] ) (case_arm pat_list: [{(F)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MM_MAKE_ARGS) op: Equal rhs: {(DQ (${ VSub_Name OPTARG))} spids: [283] ) ] spids: [283] ) ] spids: [279 280 291 16777215] ) (case_arm pat_list: [{(D)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DESTDIR) op: Equal rhs: {(${ VSub_Name OPTARG)} spids: [298] ) ] spids: [298] ) ] spids: [294 295 304 16777215] ) (case_arm pat_list: [{(h)}] action: [ (C {(display_usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [307 308 319 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(echo)} {(SQ )}) (C {(display_usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [322 323 340 16777215] ) ] spids: [226 234 343] ) ] spids: [223 345] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SOURCEDIR) op: Equal rhs: { (BracedVarSub token: <VSub_Name SOURCEDIR> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(Lit_Slash /) (usr) (Lit_Slash /) (src)} ) spids: [355 362] ) } spids: [354] ) ] spids: [354] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(${ VSub_Name SOURCEDIR) (/Makefile.inc1)} {(-a)} {(-f)} {(${ VSub_Name SOURCEDIR) (/../Makefile.inc1)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ (' *** The source directory you specified (') (${ VSub_Name SOURCEDIR) (')'))} ) (C {(echo)} {(DQ (' will be reset to ') (${ VSub_Name SOURCEDIR) (/..))}) (C {(echo)} {(SQ )}) (C {(sleep)} {(3)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SOURCEDIR) op: Equal rhs: {(${ VSub_Name SOURCEDIR) (/..)} spids: [427] ) ] spids: [427] ) ] spids: [16777215 391] ) ] spids: [16777215 433] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:objp) op: Equal rhs: {(${ VSub_Name MAKEOBJDIRPREFIX)} spids: [439] ) ] spids: [439] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name objp))} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:objp) op:Equal rhs:{(/usr/obj)} spids:[458])] spids: [458] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:legacydir) op: Equal rhs: {(${ VSub_Name objp) (${ VSub_Name SOURCEDIR) (/tmp/legacy)} spids: [461] ) ] spids: [461] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:legacypath) op: Equal rhs: {(${ VSub_Name legacydir) (/usr/sbin) (Lit_Other ':') (${ VSub_Name legacydir) (/usr/bin) (Lit_Other ':') (${ VSub_Name legacydir) (/bin) } spids: [470] ) ] spids: [470] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MM_MAKE_ARGS) op: Equal rhs: { (DQ (${ VSub_Name MM_MAKE_ARGS) (' PATH=') (${ VSub_Name legacypath) (':') (${ VSub_Name PATH) ) } spids: [486] ) ] spids: [486] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MM_MAKE) op: Equal rhs: { (DQ ('make ') (${ VSub_Name ARCHSTRING) (' ') (${ VSub_Name MM_MAKE_ARGS) (' -m ') (${ VSub_Name SOURCEDIR) (/share/mk) ) } spids: [501] ) ] spids: [501] ) (FuncDef name: delete_temproot body: (BraceGroup children: [ (SimpleCommand words: [{(rm)} {(-rf)} {(DQ (${ VSub_Name TEMPROOT))}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[537])] ) (SimpleCommand words: [{(chflags)} {(-R)} {(0)} {(DQ (${ VSub_Name TEMPROOT))}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[553])] ) (AndOr ops: [Op_DPipe] children: [ (C {(rm)} {(-rf)} {(DQ (${ VSub_Name TEMPROOT))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] spids: [524] ) spids: [519 523] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name TEMPROOT))} {(Lit_Other ']')}) (C {(delete_temproot)}) ] ) (C {(echo)} {(DQ ('*** Creating the temporary root environment in ') (${ VSub_Name TEMPROOT))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name TEMPROOT))}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ (' *** ') (${ VSub_Name TEMPROOT) (' ready for use'))})] spids: [16777215 616] ) ] spids: [16777215 629] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {(DQ (${ VSub_Name TEMPROOT))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' *** FATAL ERROR: Cannot create ') (${ VSub_Name TEMPROOT))}) (C {(echo)} {(SQ )}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 649] ) ] spids: [16777215 678] ) (C {(echo)} {(DQ (' *** Creating and populating directory structure in ') (${ VSub_Name TEMPROOT))}) (C {(echo)} {(SQ )}) (AndOr ops: [Op_DPipe] children: [ (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [ (C {(cd)} {(${ VSub_Name SOURCEDIR)}) (BraceGroup children: [ (Sentence child: (C {(echo)} {(DQ ('*** Cannot cd to ') (${ VSub_Name SOURCEDIR))}) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [706] ) ] ) (Case to_match: {(DQ (${ VSub_Name DESTDIR))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[16777215 739 741 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(${ VSub_Name MM_MAKE)} {(Lit_VarLike 'DESTDIR=') (${ VSub_Name DESTDIR)} {(distrib-dirs)} ) ] spids: [744 745 760 16777215] ) ] spids: [726 734 763] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:od) op: Equal rhs: {(${ VSub_Name TEMPROOT) (/usr/obj)} spids: [766] ) ] spids: [766] ) (Sentence child: (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(${ VSub_Name MM_MAKE)} {(Lit_VarLike 'DESTDIR=') (${ VSub_Name TEMPROOT)} {(distrib-dirs)} ) (SimpleCommand words: [{(${ VSub_Name MM_MAKE)} {(_obj)} {(Lit_VarLike 'SUBDIR_OVERRIDE=') (etc)}] more_env: [ (env_pair name: MAKEOBJDIRPREFIX val: {($ VSub_Name '$od')} spids: [787] ) ] ) (SimpleCommand words: [ {(${ VSub_Name MM_MAKE)} {(everything)} {(Lit_VarLike 'SUBDIR_OVERRIDE=') (etc)} ] more_env: [ (env_pair name: MAKEOBJDIRPREFIX val: {($ VSub_Name '$od')} spids: [802] ) ] ) (SimpleCommand words: [ {(${ VSub_Name MM_MAKE)} {(Lit_VarLike 'DESTDIR=') (${ VSub_Name TEMPROOT)} {(distribution)} ] more_env: [ (env_pair name: MAKEOBJDIRPREFIX val: {($ VSub_Name '$od')} spids: [817] ) ] ) ] ) terminator: <Op_Semi ';'> ) ] spids: [696] ) (BraceGroup children: [ (Sentence child:(C {(echo)} {(SQ )}) terminator:<Op_Semi ';'>) (Sentence child: (C {(echo)} { (DQ (" *** FATAL ERROR: Cannot 'cd' to ") (${ VSub_Name SOURCEDIR) (' and install files to') ) } ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(echo)} {(DQ (' the temproot environment'))}) terminator: <Op_Semi ';'> ) (Sentence child:(C {(echo)} {(SQ )}) terminator:<Op_Semi ';'>) (Sentence child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [836] ) ] ) (C {(rm)} {(-f)} {(${ VSub_Name TEMPROOT) (/etc/) (Lit_Other '*') (.db)} {(${ VSub_Name TEMPROOT) (/etc/passwd)} ) (SimpleCommand words: [{(find)} {(${ VSub_Name TEMPROOT) (/usr/obj)} {(-type)} {(f)} {(-delete)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[924])] ) (SimpleCommand words: [{(find)} {(${ VSub_Name TEMPROOT) (/usr)} {(-type)} {(l)} {(-delete)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[947])] ) (SimpleCommand words: [{(find)} {(${ VSub_Name TEMPROOT)} {(-type)} {(f)} {(-size)} {(0)} {(-delete)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[966])] ) (SimpleCommand words: [{(find)} {(-d)} {(${ VSub_Name TEMPROOT)} {(-type)} {(d)} {(-empty)} {(-delete)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[985])] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MTREENEW) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(mktemp)} {(-t)} {(mergemaster.mtree)})]) left_token: <Left_Backtick '`'> spids: [993 999] ) } spids: [992] ) ] spids: [992] ) (SimpleCommand words: [ {(mtree)} {(-nci)} {(-p)} {(${ VSub_Name TEMPROOT)} {(-k)} {(size) (Lit_Comma ',') (md5digest)} ] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(${ VSub_Name MTREENEW)} spids:[1017]) (Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1023]) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-s)} {(DQ (${ VSub_Name MTREENEW))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('*** Saving mtree database for future upgrades'))}) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-e)} {(DQ (${ VSub_Name DESTDIR) (${ VSub_Name MTREEFILE))}) (C {(unlink)} {(${ VSub_Name DESTDIR) (${ VSub_Name MTREEFILE)}) ] ) (C {(mv)} {(${ VSub_Name MTREENEW)} {(${ VSub_Name DESTDIR) (${ VSub_Name MTREEFILE)}) ] spids: [16777215 1042] ) ] spids: [16777215 1090] ) (C {(delete_temproot)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] )