(command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<nounset>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<pipefail>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<errexit>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {<'benchmarks/common.sh'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {<'build/common.sh'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [{<readonly>} {<Id.Lit_VarLike 'BASE_DIR='> <'_tmp/ovm-build'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [ {<readonly>} {<Id.Lit_VarLike 'TAR_DIR='> ($ Id.VSub_DollarName PWD) <'/_deps/ovm-build'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [ {<readonly>} {<Id.Lit_VarLike 'OIL_VERSION='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <head> more_env: [] words: [{<head>} {<-n>} {<1>} {<oil-version.txt>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [ {<readonly>} {<-a>} {<Id.Lit_VarLike 'TAR_SUBDIRS='> (ShArrayLiteral left: <Id.Op_LParen _> words: [{<bash-4.4>} {<dash-0.5.9.1>}] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.ShFunction name_tok: <tarballs> name: tarballs body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<'bash-4.4.tar.gz\n'> <'dash-0.5.9.1.tar.gz\n'> <'mksh-R56c.tgz\n'>] ) ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <download> name: download body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName TAR_DIR)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <tarballs> more_env: [] words: [{<tarballs>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {<-n>} {<1>} {<-I>} {<Id.Lit_LBrace '{'> <Id.Lit_RBrace '}'>} {<--verbose>} {<-->} {<wget>} {<--directory>} {($ Id.VSub_DollarName TAR_DIR)} {(SQ <'https://www.oilshell.org/blob/ovm-build/{}'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <extract-other> name: extract-other body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.TimeBlock keyword: <Id.KW_Time time> pipeline: (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName TAR_DIR) <'/'> <Id.Lit_Star '*'> <gz>}] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <tar> more_env: [] words: [ {<tar>} {<-x>} {<--directory>} {($ Id.VSub_DollarName TAR_DIR)} {<--file>} {($ Id.VSub_DollarName f)} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <extract-oil> name: extract-oil body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-r>} {<-f>} {<-v>} {($ Id.VSub_DollarName TAR_DIR) <'/oil-'> <Id.Lit_Star '*'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tar> more_env: [] words: [ {<tar>} {<-x>} {<--directory>} {($ Id.VSub_DollarName TAR_DIR)} {<--file>} {<'_release/oil.tar'>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <sizes-tsv> name: sizes-tsv body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals host_label> <Id.Char_OneChar '\\t'> <Id.Char_Literals num_bytes> <Id.Char_OneChar '\\t'> <Id.Char_Literals path> ] right: <Id.Right_SingleQuote '\''> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'host='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <hostname> more_env: [] words: [{<hostname>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {(DQ ($ Id.VSub_At '@'))} {<-maxdepth>} {<0>} {<-printf>} { (DQ ($ Id.VSub_DollarName host) <Id.Lit_BadBackslash '\\'> <'t%s'> <Id.Lit_BadBackslash '\\'> <'t%p'> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <measure-sizes> name: measure-sizes body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'prefix='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName BASE_DIR) <Id.Lit_Slash '/'> <raw> <Id.Lit_Slash '/'> <demo> } ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sizes-tsv> more_env: [] words: [ {<sizes-tsv>} {($ Id.VSub_DollarName TAR_DIR) <'/oil-'> ($ Id.VSub_DollarName OIL_VERSION) <'/_build/oil/bytecode-opy.zip'> } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name prefix) <.bytecode-size.tsv>} ) ] do_fork: T ) (command.Simple blame_tok: <sizes-tsv> more_env: [] words: [ {<sizes-tsv>} {($ Id.VSub_DollarName BASE_DIR) <'/bin/'> <Id.Lit_Star '*'> <'/oil.'> <Id.Lit_Star '*'>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name prefix) <.bin-sizes.tsv>} ) ] do_fork: T ) (command.Simple blame_tok: <sizes-tsv> more_env: [] words: [ {<sizes-tsv>} {($ Id.VSub_DollarName BASE_DIR) <'/bin/'> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> <sh>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name prefix) <.other-shell-sizes.tsv>} ) ] do_fork: T ) (command.Simple blame_tok: <log> more_env: [] words: [{<log>} {(DQ <'Wrote '> (${ Id.VSub_Name prefix) <'.*.tsv'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <bytecode-size> name: bytecode-size body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'zip='> <'_build/oil/bytecode.zip'>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <unzip> more_env: [] words: [{<unzip>} {<-l>} {($ Id.VSub_DollarName zip)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tail> more_env: [] words: [{<tail>} {<-n>} {<1>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>} {<-l>} {($ Id.VSub_DollarName zip)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <clang-oil-dbg> name: clang-oil-dbg body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <make> more_env: [] words: [{<make>} {<clean>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <make> more_env: [ (EnvPair left: <Id.Lit_VarLike 'CC='> name: CC val: {($ Id.VSub_DollarName CLANG)} ) ] words: [{<make>} {<'_build/oil/ovm-dbg'>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <build-task> name: build-task body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'raw_dir='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'job_id='> ($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'host='> ($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'host_hash='> ($ Id.VSub_Number 4)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'compiler_path='> ($ Id.VSub_Number 5)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'compiler_hash='> ($ Id.VSub_Number 6)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'src_dir='> ($ Id.VSub_Number 7)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'action='> ($ Id.VSub_Number 8)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'times_out='> (DQ ($ Id.VSub_DollarName PWD) <'/'> ($ Id.VSub_DollarName raw_dir) <'/'> ($ Id.VSub_DollarName host) <.> ($ Id.VSub_DollarName job_id) <.times.tsv> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'TIME_PREFIX='> (ShArrayLiteral left: <Id.Op_LParen _> words: [ {<time-tsv>} {<--output>} {($ Id.VSub_DollarName times_out)} {<--field>} {(DQ ($ Id.VSub_DollarName host))} {<--field>} {(DQ ($ Id.VSub_DollarName host_hash))} {<--field>} {(DQ ($ Id.VSub_DollarName compiler_path))} {<--field>} {(DQ ($ Id.VSub_DollarName compiler_hash))} {<--field>} {(DQ ($ Id.VSub_DollarName src_dir))} {<--field>} {(DQ ($ Id.VSub_DollarName action))} ] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'bin_base_dir='> ($ Id.VSub_DollarName PWD) <'/'> ($ Id.VSub_DollarName BASE_DIR) <'/bin'> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'bin_dir='> (DQ ($ Id.VSub_DollarName bin_base_dir) <'/'> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName compiler_path)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName bin_dir)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <pushd> more_env: [] words: [{<pushd>} {($ Id.VSub_DollarName src_dir)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <configure> pattern: (pat.Words words:[{<configure>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [ { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TIME_PREFIX> var_name: TIME_PREFIX bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {<-->} {<'./configure'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <make> more_env: [] words: [{<make>} {<clean>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <make> pattern: (pat.Words words:[{<make>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [ { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TIME_PREFIX> var_name: TIME_PREFIX bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {<-->} {<make>} {<Id.Lit_VarLike 'CC='> ($ Id.VSub_DollarName compiler_path)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<target>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName src_dir)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <'/bash'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {<bash>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <'/dash'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {<'src/dash'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <strip> more_env: [] words: [{<strip>} {($ Id.VSub_DollarName target)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<-v>} {($ Id.VSub_DollarName target)} {($ Id.VSub_DollarName bin_dir)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'target='> ($ Id.VSub_DollarName action)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [ { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TIME_PREFIX> var_name: TIME_PREFIX bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {<-->} {<make>} {<Id.Lit_VarLike 'CC='> ($ Id.VSub_DollarName compiler_path)} {($ Id.VSub_DollarName target)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<-v>} {($ Id.VSub_DollarName target)} {($ Id.VSub_DollarName bin_dir)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <popd> more_env: [] words: [{<popd>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <oil-tasks> name: oil-tasks body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'dir='> (DQ ($ Id.VSub_DollarName TAR_DIR) <'/oil-'> ($ Id.VSub_DollarName OIL_VERSION)) } ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName provenance)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<line>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName line))} {($ Id.VSub_DollarName dir)} {<configure>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName line))} {($ Id.VSub_DollarName dir)} {<'_bin/oil.ovm'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName line))} {($ Id.VSub_DollarName dir)} {<'_bin/oil.ovm-dbg'>} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <other-shell-tasks> name: other-shell-tasks body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'tarball='> (SQ <'_release/oil.0.5.alpha1.gz'>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName provenance)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<line>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName line)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <clang> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words: [ { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TAR_SUBDIRS> var_name: TAR_SUBDIRS bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName line))} {($ Id.VSub_DollarName TAR_DIR) <'/'> ($ Id.VSub_DollarName dir)} {<configure>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName line))} {($ Id.VSub_DollarName TAR_DIR) <'/'> ($ Id.VSub_DollarName dir)} {<make>} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <oil-historical-tasks> name: oil-historical-tasks body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <readonly> more_env: [] words: [ {<readonly>} {<Id.Lit_VarLike 'HEADER='> (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals status> <Id.Char_OneChar '\\t'> <Id.Char_Literals elapsed_secs> <Id.Char_OneChar '\\t'> <Id.Char_Literals host_name> <Id.Char_OneChar '\\t'> <Id.Char_Literals host_hash> <Id.Char_OneChar '\\t'> <Id.Char_Literals compiler_path> <Id.Char_OneChar '\\t'> <Id.Char_Literals compiler_hash> <Id.Char_OneChar '\\t'> <Id.Char_Literals src_dir> <Id.Char_OneChar '\\t'> <Id.Char_Literals action> ] right: <Id.Right_SingleQuote '\''> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [{<readonly>} {<Id.Lit_VarLike 'NUM_COLUMNS='> <7>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <measure> name: measure body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'raw_dir='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName BASE_DIR) <Id.Lit_Slash '/'> <raw>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <extract-oil> more_env: [] words: [{<extract-oil>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'name='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName provenance)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'prefix='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name name> var_name: name suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.compiler-provenance.txt>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'times_out='> (DQ ($ Id.VSub_DollarName raw_dir) <'/'> ($ Id.VSub_DollarName prefix) <.times.tsv>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} (word.BracedTree parts: [ ($ Id.VSub_DollarName BASE_DIR) <'/'> (word_part.BracedTuple words:[{<raw>} {<stage1>} {<bin>}]) ] ) {($ Id.VSub_DollarName raw_dir)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName HEADER))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName times_out)} ) ] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 't1='> ($ Id.VSub_DollarName BASE_DIR) <'/oil-tasks.txt'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 't2='> ($ Id.VSub_DollarName BASE_DIR) <'/other-shell-tasks.txt'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <oil-tasks> more_env: [] words: [{<oil-tasks>} {($ Id.VSub_DollarName provenance)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName t1)} ) ] do_fork: T ) (command.Simple blame_tok: <other-shell-tasks> more_env: [] words: [{<other-shell-tasks>} {($ Id.VSub_DollarName provenance)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName t2)} ) ] do_fork: T ) (command.AndOr children: [ (command.TimeBlock keyword: <Id.KW_Time time> pipeline: (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName t1)} {($ Id.VSub_DollarName t2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {<-n>} {($ Id.VSub_DollarName NUM_COLUMNS)} {<-->} {($ Id.VSub_Number 0)} {<build-task>} {($ Id.VSub_DollarName raw_dir)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ) (command.Simple blame_tok: <die> more_env: [] words: [{<die>} {(DQ <'*** Some tasks failed. ***'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <measure-sizes> more_env: [] words: [ {<measure-sizes>} {($ Id.VSub_DollarName raw_dir) <'/'> ($ Id.VSub_DollarName prefix)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [{<cp>} {<-v>} {($ Id.VSub_DollarName provenance)} {($ Id.VSub_DollarName raw_dir)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <stage1> name: stage1 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'raw_dir='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName BASE_DIR) <Id.Lit_Slash '/'> <raw>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'out='> ($ Id.VSub_DollarName BASE_DIR) <'/stage1'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<x>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<-a>} {<a>} {<b>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName out) <'/times.tsv'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/flanders.'> <Id.Lit_Star '*'> <.times.tsv>} ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/lisa.'> <Id.Lit_Star '*'> <.times.tsv>} ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <tsv-concat> more_env: [] words: [ {<tsv-concat>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name b> var_name: b bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName x)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName out) <'/bytecode-size.tsv'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/flanders.'> <Id.Lit_Star '*'> <.bytecode-size.tsv> } ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/lisa.'> <Id.Lit_Star '*'> <.bytecode-size.tsv> } ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <tsv-concat> more_env: [] words: [ {<tsv-concat>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name b> var_name: b bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName x)} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName out) <'/bin-sizes.tsv'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/flanders.'> <Id.Lit_Star '*'> <.bin-sizes.tsv> } ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/lisa.'> <Id.Lit_Star '*'> <.bin-sizes.tsv>} ] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <tsv-concat> more_env: [] words: [ {<tsv-concat>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name b> var_name: b bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName x)} ) ] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'raw_data_tsv='> ($ Id.VSub_DollarName out) <'/raw-data.tsv'>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <path>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name b> var_name: b bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName raw_data_tsv)} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <head> more_env: [] words: [{<head>} {($ Id.VSub_DollarName out) <'/'> <Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>} {($ Id.VSub_DollarName out) <'/'> <Id.Lit_Star '*'>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <print-report> name: print-report body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'in_dir='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'base_url='> (SQ <'../../web'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'<!DOCTYPE html>\n'> <'<html>\n'> <' <head>\n'> <' <title>OVM Build Performance</title>\n'> <' <script type='> <Id.Right_DoubleQuote '"'> <'text/javascript'> <Id.Right_DoubleQuote '"'> <' src='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/table/table-sort.js'> <Id.Right_DoubleQuote '"'> <'></script>\n'> <' <link rel='> <Id.Right_DoubleQuote '"'> <stylesheet> <Id.Right_DoubleQuote '"'> <' type='> <Id.Right_DoubleQuote '"'> <'text/css'> <Id.Right_DoubleQuote '"'> <' href='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/table/table-sort.css'> <Id.Right_DoubleQuote '"'> <' />\n'> <' <link rel='> <Id.Right_DoubleQuote '"'> <stylesheet> <Id.Right_DoubleQuote '"'> <' type='> <Id.Right_DoubleQuote '"'> <'text/css'> <Id.Right_DoubleQuote '"'> <' href='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/benchmarks.css'> <Id.Right_DoubleQuote '"'> <' />\n'> <'\n'> <' </head>\n'> <' <body>\n'> <' <p id='> <Id.Right_DoubleQuote '"'> <home-link> <Id.Right_DoubleQuote '"'> <'>\n'> <' <a href='> <Id.Right_DoubleQuote '"'> <'/'> <Id.Right_DoubleQuote '"'> <'>oilshell.org</a>\n'> <' </p>\n'> <' <h2>OVM Build Performance</h2>\n'> <'\n'> <' <h3>Elapsed Time by Host and Compiler</h3>\n'> <'\n'> < ' <p>We measure the build speed of <code>bash</code> and <code>dash</code>\n' > <' for comparison.\n'> <' </p>\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <tsv2html> more_env: [] words: [ {<tsv2html>} {<--css-class-pattern>} {(SQ <'special ^oil'>)} {($ Id.VSub_DollarName in_dir) <'/times.tsv'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <' <h3>Binary Size</h3>\n'> <'\n'> <' <p>The oil binary has two portions:\n'> <' <ol>\n'> <' <li>Architecture-independent <code>bytecode.zip</code></li>\n'> <' <li>Architecture- and compiler- dependent native code\n'> <' (<code>_build/oil/ovm*</code>)\n'> <' </li>\n'> <' </ol>\n'> <' </p>\n'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <tsv2html> more_env: [] words: [ {<tsv2html>} {<--css-class-pattern>} {(SQ <'special /gcc/oil.ovm$'>)} {($ Id.VSub_DollarName in_dir) <'/sizes.tsv'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<'\n'> <' <h3>Host and Compiler Details</h3>\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: <tsv2html> more_env: [] words: [{<tsv2html>} {($ Id.VSub_DollarName in_dir) <'/hosts.tsv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tsv2html> more_env: [] words: [{<tsv2html>} {($ Id.VSub_DollarName in_dir) <'/compilers.tsv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<' </body>\n'> <'</html>\n'>] ) ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] )