(command.CommandList children: [ (C {<set>} {<-o>} {<nounset>}) (C {<set>} {<-o>} {<pipefail>}) (C {<set>} {<-o>} {<errexit>}) (C {<source>} {<'benchmarks/common.sh'>}) (C {<source>} {<'build/common.sh'>}) (C {<readonly>} {<Id.Lit_VarLike 'BASE_DIR='> <'_tmp/ovm-build'>}) (C {<readonly>} {<Id.Lit_VarLike 'TAR_DIR='> ($ Id.VSub_DollarName '$PWD') <'/_deps/ovm-build'>}) (C {<readonly>} {<Id.Lit_VarLike 'OIL_VERSION='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<head>} {<-n>} {<1>} {<oil-version.txt>}) ) } ) (C {<readonly>} {<-a>} {<Id.Lit_VarLike 'TAR_SUBDIRS='> (sh_array_literal left:<Id.Op_LParen _> words:[{<bash-4.4>} {<dash-0.5.9.1>}]) } ) (command.ShFunction name: tarballs body: (BraceGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 192 stdin_parts: [<'bash-4.4.tar.gz\n'> <'dash-0.5.9.1.tar.gz\n'> <'mksh-R56c.tgz\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: download body: (BraceGroup children: [ (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$TAR_DIR')}) (command.Pipeline children: [ (C {<tarballs>}) (C {<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/{}'>)} ) ] negated: F ) ] ) ) (command.ShFunction name: extract-other body: (BraceGroup children: [ (command.TimeBlock pipeline: (command.ForEach iter_name: f iter_words: [{($ Id.VSub_DollarName '$TAR_DIR') <'/'> <Id.Lit_Star '*'> <gz>}] do_arg_iter: F body: (command.DoGroup children: [ (C {<tar>} {<-x>} {<--directory>} {($ Id.VSub_DollarName '$TAR_DIR')} {<--file>} {($ Id.VSub_DollarName '$f')} ) ] ) ) ) ] ) ) (command.ShFunction name: extract-oil body: (BraceGroup children: [ (C {<rm>} {<-r>} {<-f>} {<-v>} {($ Id.VSub_DollarName '$TAR_DIR') <'/oil-'> <Id.Lit_Star '*'>}) (C {<tar>} {<-x>} {<--directory>} {($ Id.VSub_DollarName '$TAR_DIR')} {<--file>} {<'_release/oil.tar'>} ) ] ) ) (command.ShFunction name: sizes-tsv body: (BraceGroup children: [ (C {<echo>} { (single_quoted 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> ] multiline: F ) } ) (C {<local>} {<Id.Lit_VarLike 'host='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<hostname>}) ) } ) (C {<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> ) } ) ] ) ) (command.ShFunction name: measure-sizes body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'prefix='> (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash '/'> <raw> <Id.Lit_Slash '/'> <demo> } ) ) } ) (command.Simple 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 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 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 ) (C {<log>} {(DQ <'Wrote '> (${ Id.VSub_Name prefix) <'.*.tsv'>)}) ] ) ) (command.ShFunction name: bytecode-size body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'zip='> <'_build/oil/bytecode.zip'>}) (command.Pipeline children: [(C {<unzip>} {<-l>} {($ Id.VSub_DollarName '$zip')}) (C {<tail>} {<-n>} {<1>})] negated: F ) (C {<ls>} {<-l>} {($ Id.VSub_DollarName '$zip')}) ] ) ) (command.ShFunction name: clang-oil-dbg body: (BraceGroup children: [ (C {<make>} {<clean>}) (command.Simple words: [{<make>} {<'_build/oil/ovm-dbg'>}] more_env: [(env_pair name:CC val:{($ Id.VSub_DollarName '$CLANG')} spids:[612])] do_fork: T ) ] ) ) (command.ShFunction name: build-task body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'raw_dir='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'job_id='> ($ Id.VSub_Number '$2')}) (C {<local>} {<Id.Lit_VarLike 'host='> ($ Id.VSub_Number '$3')}) (C {<local>} {<Id.Lit_VarLike 'host_hash='> ($ Id.VSub_Number '$4')}) (C {<local>} {<Id.Lit_VarLike 'compiler_path='> ($ Id.VSub_Number '$5')}) (C {<local>} {<Id.Lit_VarLike 'compiler_hash='> ($ Id.VSub_Number '$6')}) (C {<local>} {<Id.Lit_VarLike 'src_dir='> ($ Id.VSub_Number '$7')}) (C {<local>} {<Id.Lit_VarLike 'action='> ($ Id.VSub_Number '$8')}) (C {<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> ) } ) (C {<local>} {<-a>} {<Id.Lit_VarLike 'TIME_PREFIX='> (sh_array_literal 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'))} ] ) } ) (C {<local>} {<Id.Lit_VarLike 'bin_base_dir='> ($ Id.VSub_DollarName '$PWD') <'/'> ($ Id.VSub_DollarName '$BASE_DIR') <'/bin'> } ) (C {<local>} {<Id.Lit_VarLike 'bin_dir='> (DQ ($ Id.VSub_DollarName '$bin_base_dir') <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {($ Id.VSub_DollarName '$compiler_path')}) ) ) } ) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$bin_dir')}) (command.Simple 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 to_match: {($ Id.VSub_DollarName '$action')} arms: [ (case_arm pat_list: [{<configure>}] action: [ (C { (DQ (braced_var_sub token: <Id.VSub_Name TIME_PREFIX> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } {<-->} {<'./configure'>} ) (C {<make>} {<clean>}) ] spids: [851 852 887 -1] ) (case_arm pat_list: [{<make>}] action: [ (C { (DQ (braced_var_sub token: <Id.VSub_Name TIME_PREFIX> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } {<-->} {<make>} {<Id.Lit_VarLike 'CC='> ($ Id.VSub_DollarName '$compiler_path')} ) (C {<local>} {<target>}) (command.Case to_match: {($ Id.VSub_DollarName '$src_dir')} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <'/bash'> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:target) op: assign_op.Equal rhs: {<bash>} spids: [931] ) ] ) ] spids: [925 928 935 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'> <'/dash'> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:target) op: assign_op.Equal rhs: {<'src/dash'>} spids: [944] ) ] ) ] spids: [938 941 948 -1] ) ] ) (C {<strip>} {($ Id.VSub_DollarName '$target')}) (C {<cp>} {<-v>} {($ Id.VSub_DollarName '$target')} {($ Id.VSub_DollarName '$bin_dir')} ) ] spids: [891 892 969 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<local>} {<Id.Lit_VarLike 'target='> ($ Id.VSub_DollarName '$action')}) (C { (DQ (braced_var_sub token: <Id.VSub_Name TIME_PREFIX> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } {<-->} {<make>} {<Id.Lit_VarLike 'CC='> ($ Id.VSub_DollarName '$compiler_path')} {($ Id.VSub_DollarName '$target')} ) (C {<cp>} {<-v>} {($ Id.VSub_DollarName '$target')} {($ Id.VSub_DollarName '$bin_dir')} ) ] spids: [973 974 1016 -1] ) ] ) (command.Simple words: [{<popd>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] ) ) (command.ShFunction name: oil-tasks body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'dir='> (DQ ($ Id.VSub_DollarName '$TAR_DIR') <'/oil-'> ($ Id.VSub_DollarName '$OIL_VERSION')) } ) (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$provenance')}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<line>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} {($ Id.VSub_DollarName '$dir')} {<configure>} ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} {($ Id.VSub_DollarName '$dir')} {<'_bin/oil.ovm'>} ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} {($ Id.VSub_DollarName '$dir')} {<'_bin/oil.ovm-dbg'>} ) ] ) ) ] negated: F ) ] ) ) (command.ShFunction name: other-shell-tasks body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'tarball='> (SQ <'_release/oil.0.5.alpha1.gz'>)}) (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$provenance')}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<line>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$line')} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <clang> <Id.Lit_Star '*'>}] action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [1188 1191 1197 -1] ) ] ) (command.ForEach iter_name: dir iter_words: [ { (DQ (braced_var_sub token: <Id.VSub_Name TAR_SUBDIRS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} {($ Id.VSub_DollarName '$TAR_DIR') <'/'> ($ Id.VSub_DollarName '$dir') } {<configure>} ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} {($ Id.VSub_DollarName '$TAR_DIR') <'/'> ($ Id.VSub_DollarName '$dir') } {<make>} ) ] ) ) ] ) ) ] negated: F ) ] ) ) (command.ShFunction name:oil-historical-tasks body:(BraceGroup children:[(C {<echo>})])) (C {<readonly>} {<Id.Lit_VarLike 'HEADER='> (single_quoted 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> ] multiline: F ) } ) (C {<readonly>} {<Id.Lit_VarLike 'NUM_COLUMNS='> <7>}) (command.ShFunction name: measure body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'raw_dir='> (braced_var_sub token: <Id.VSub_Number 2> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash '/'> <raw>} ) ) } ) (C {<extract-oil>}) (C {<local>} {<Id.Lit_VarLike 'name='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {($ Id.VSub_DollarName '$provenance')}) ) } ) (C {<local>} {<Id.Lit_VarLike 'prefix='> (braced_var_sub token: <Id.VSub_Name name> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<.compiler-provenance.txt>} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'times_out='> (DQ ($ Id.VSub_DollarName '$raw_dir') <'/'> ($ Id.VSub_DollarName '$prefix') <.times.tsv> ) } ) (C {<mkdir>} {<-p>} (word.BracedTree parts: [ ($ Id.VSub_DollarName '$BASE_DIR') <'/'> (word_part.BracedTuple words:[{<raw>} {<stage1>} {<bin>}]) ] ) {($ Id.VSub_DollarName '$raw_dir')} ) (command.Simple 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 ) (C {<local>} {<Id.Lit_VarLike 't1='> ($ Id.VSub_DollarName '$BASE_DIR') <'/oil-tasks.txt'>}) (C {<local>} {<Id.Lit_VarLike 't2='> ($ Id.VSub_DollarName '$BASE_DIR') <'/other-shell-tasks.txt'>} ) (command.Simple 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 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 ops: [Id.Op_DPipe] children: [ (command.TimeBlock pipeline: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$t1')} {($ Id.VSub_DollarName '$t2')}) (C {<xargs>} {<-n>} {($ Id.VSub_DollarName '$NUM_COLUMNS')} {<-->} {($ Id.VSub_Number '$0')} {<build-task>} {($ Id.VSub_DollarName '$raw_dir')} ) ] negated: F ) ) (C {<die>} {(DQ <'*** Some tasks failed. ***'>)}) ] ) (C {<measure-sizes>} {($ Id.VSub_DollarName '$raw_dir') <'/'> ($ Id.VSub_DollarName '$prefix')} ) (C {<cp>} {<-v>} {($ Id.VSub_DollarName '$provenance')} {($ Id.VSub_DollarName '$raw_dir')}) ] ) ) (command.ShFunction name: stage1 body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'raw_dir='> (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash '/'> <raw>} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'out='> ($ Id.VSub_DollarName '$BASE_DIR') <'/stage1'>}) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out')}) (C {<local>} {<x>}) (C {<local>} {<-a>} {<a>} {<b>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$out') <'/times.tsv'>} spids: [1581] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') <'/flanders.'> <Id.Lit_Star '*'> <.times.tsv> } ] ) } spids: [1586] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') <'/lisa.'> <Id.Lit_Star '*'> <.times.tsv>} ] ) } spids: [1595] ) ] ) (command.Simple words: [ {<tsv-concat>} { (braced_var_sub token: <Id.VSub_Name a> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) ) } { (braced_var_sub token: <Id.VSub_Name b> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$x')} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$out') <'/bytecode-size.tsv'>} spids: [1628] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') <'/flanders.'> <Id.Lit_Star '*'> <.bytecode-size.tsv> } ] ) } spids: [1633] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') <'/lisa.'> <Id.Lit_Star '*'> <.bytecode-size.tsv> } ] ) } spids: [1642] ) ] ) (command.Simple words: [ {<tsv-concat>} { (braced_var_sub token: <Id.VSub_Name a> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) ) } { (braced_var_sub token: <Id.VSub_Name b> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$x')} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$out') <'/bin-sizes.tsv'>} spids: [1675] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') <'/flanders.'> <Id.Lit_Star '*'> <.bin-sizes.tsv> } ] ) } spids: [1680] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$raw_dir') <'/lisa.'> <Id.Lit_Star '*'> <.bin-sizes.tsv> } ] ) } spids: [1689] ) ] ) (command.Simple words: [ {<tsv-concat>} { (braced_var_sub token: <Id.VSub_Name a> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) ) } { (braced_var_sub token: <Id.VSub_Name b> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$x')} ) ] do_fork: T ) (C {<local>} {<Id.Lit_VarLike 'raw_data_tsv='> ($ Id.VSub_DollarName '$out') <'/raw-data.tsv'>} ) (BraceGroup children: [ (C {<echo>} {(SQ <path>)}) (C {<echo>} { (braced_var_sub token: <Id.VSub_Name a> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) ) } ) (C {<echo>} { (braced_var_sub token: <Id.VSub_Name b> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) ) } ) ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$raw_data_tsv')} ) ] ) (C {<head>} {($ Id.VSub_DollarName '$out') <'/'> <Id.Lit_Star '*'>}) (C {<wc>} {<-l>} {($ Id.VSub_DollarName '$out') <'/'> <Id.Lit_Star '*'>}) ] ) ) (command.ShFunction name: print-report body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'in_dir='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'base_url='> (SQ <'../../web'>)}) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1881 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 ) (C {<tsv2html>} {<--css-class-pattern>} {(SQ <'special ^oil'>)} {($ Id.VSub_DollarName '$in_dir') <'/times.tsv'>} ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1913 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 ) (C {<tsv2html>} {<--css-class-pattern>} {(SQ <'special /gcc/oil.ovm$'>)} {($ Id.VSub_DollarName '$in_dir') <'/sizes.tsv'>} ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1940 stdin_parts: [<'\n'> <' <h3>Host and Compiler Details</h3>\n'>] ) ) ] do_fork: T ) (C {<tsv2html>} {($ Id.VSub_DollarName '$in_dir') <'/hosts.tsv'>}) (C {<tsv2html>} {($ Id.VSub_DollarName '$in_dir') <'/compilers.tsv'>}) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1963 stdin_parts: [<' </body>\n'> <'</html>\n'>] ) ) ] do_fork: T ) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )