(command.CommandList children: [ (C {(Id.KW_Set set)} {(-o)} {(nounset)}) (C {(Id.KW_Set set)} {(-o)} {(pipefail)}) (C {(Id.KW_Set 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: (Token id:Id.Left_DollarParen val:'$(' span_id:139) command_list: (command.CommandList children: [(C {(head)} {(-n)} {(1)} {(oil-version.txt)})] ) ) } ) (C {(readonly)} {(-a)} {(Id.Lit_VarLike 'TAR_SUBDIRS=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:161) words: [{(bash-4.4)} {(dash-0.5.9.1)}] ) } ) (command.ShFunction name: tarballs body: (command.BraceGroup children: [ (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:185) fd: -1 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')] ) ] ) ] ) ) (command.ShFunction name: download body: (command.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 (Token id: Id.Lit_Chars val: 'https://www.oilshell.org/blob/ovm-build/{}' span_id: 238 ) ) } ) ] negated: F ) ] ) ) (command.ShFunction name: extract-other body: (command.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: (command.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: (command.BraceGroup children: [ (C {(echo)} { (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:377) tokens: [ (Token id:Id.Char_Literals val:host_label span_id:378) (Token id:Id.Char_OneChar val:'\\t' span_id:379) (Token id:Id.Char_Literals val:num_bytes span_id:380) (Token id:Id.Char_OneChar val:'\\t' span_id:381) (Token id:Id.Char_Literals val:path span_id:382) ] ) } ) (C {(local)} {(Id.Lit_VarLike 'host=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:389) command_list: (command.CommandList children:[(C {(hostname)})]) ) } ) (C {(find)} {(DQ ($ Id.VSub_At '$@'))} {(-maxdepth)} {(0)} {(-printf)} { (DQ ($ Id.VSub_DollarName '$host') (Id.Lit_Other '\\') ('t%s') (Id.Lit_Other '\\') ('t%p') (Id.Lit_Other '\\') (n) ) } ) ] ) ) (command.ShFunction name: measure-sizes body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'prefix=') (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:436) suffix_op: (suffix_op.Unary op_id: 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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:465) fd: -1 arg_word: {(${ Id.VSub_Name prefix) (.bytecode-size.tsv)} ) ] ) (command.Simple words: [ {(sizes-tsv)} {($ Id.VSub_DollarName '$BASE_DIR') (/bin/) (Id.Lit_Star '*') (/oil.) (Id.Lit_Star '*')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:484) fd: -1 arg_word: {(${ Id.VSub_Name prefix) (.bin-sizes.tsv)} ) ] ) (command.Simple words: [ {(sizes-tsv)} {($ Id.VSub_DollarName '$BASE_DIR') (/bin/) (Id.Lit_Star '*') (/) (Id.Lit_Star '*') (sh)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:504) fd: -1 arg_word: {(${ Id.VSub_Name prefix) (.other-shell-sizes.tsv)} ) ] ) (C {(log)} {(DQ ('Wrote ') (${ Id.VSub_Name prefix) ('.*.tsv'))}) ] ) ) (command.ShFunction name: bytecode-size body: (command.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: (command.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])] ) ] ) ) (command.ShFunction name: build-task body: (command.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: (Token id:Id.Op_LParen val:'(' span_id:738) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:810) command_list: (command.CommandList children: [(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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:830) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$action')} arms: [ (case_arm pat_list: [{(configure)}] action: [ (C { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:TIME_PREFIX span_id:857) 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: (Token id:Id.VSub_Name val:TIME_PREFIX span_id:897) 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: (Token id:Id.VSub_Name val:TIME_PREFIX span_id:989) 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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1025) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) ) (command.ShFunction name: oil-tasks body: (command.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: (Token id:Id.KW_While val:while span_id:1074) cond: [ (command.Sentence child: (C {(read)} {(line)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1079) ) ] 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: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'provenance=') ($ Id.VSub_Number '$1')}) (C {(local)} {(Id.Lit_VarLike 'tarball=') (SQ (Token id:Id.Lit_Chars val:_release/oil.0.5.alpha1.gz span_id:1152)) } ) (command.Pipeline children: [ (C {(cat)} {($ Id.VSub_DollarName '$provenance')}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:1167) cond: [ (command.Sentence child: (C {(read)} {(line)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1172) ) ] 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: (Token id:Id.ControlFlow_Continue val:continue span_id:1194) ) ] spids: [1188 1191 1197 -1] ) ] ) (command.ForEach iter_name: dir iter_words: [ { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:TAR_SUBDIRS span_id:1212) 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: (command.BraceGroup children:[(C {(echo)})]) ) (C {(readonly)} {(Id.Lit_VarLike 'HEADER=') (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:1282) tokens: [ (Token id:Id.Char_Literals val:status span_id:1283) (Token id:Id.Char_OneChar val:'\\t' span_id:1284) (Token id:Id.Char_Literals val:elapsed_secs span_id:1285) (Token id:Id.Char_OneChar val:'\\t' span_id:1286) (Token id:Id.Char_Literals val:host_name span_id:1287) (Token id:Id.Char_OneChar val:'\\t' span_id:1288) (Token id:Id.Char_Literals val:host_hash span_id:1289) (Token id:Id.Char_OneChar val:'\\t' span_id:1290) (Token id:Id.Char_Literals val:compiler_path span_id:1291) (Token id:Id.Char_OneChar val:'\\t' span_id:1292) (Token id:Id.Char_Literals val:compiler_hash span_id:1293) (Token id:Id.Char_OneChar val:'\\t' span_id:1294) (Token id:Id.Char_Literals val:src_dir span_id:1295) (Token id:Id.Char_OneChar val:'\\t' span_id:1296) (Token id:Id.Char_Literals val:action span_id:1297) ] ) } ) (C {(readonly)} {(Id.Lit_VarLike 'NUM_COLUMNS=') (7)}) (command.ShFunction name: measure body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'provenance=') ($ Id.VSub_Number '$1')}) (C {(local)} {(Id.Lit_VarLike 'raw_dir=') (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:1329) suffix_op: (suffix_op.Unary op_id: 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: (Token id:Id.Left_DollarParen val:'$(' span_id:1349) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_DollarName '$provenance')})] ) ) } ) (C {(local)} {(Id.Lit_VarLike 'prefix=') (braced_var_sub token: (Token id:Id.VSub_Name val:name span_id:1360) suffix_op: (suffix_op.Unary op_id: 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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1418) fd: -1 arg_word: {($ Id.VSub_DollarName '$times_out')} ) ] ) (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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1443) fd: -1 arg_word: {($ Id.VSub_DollarName '$t1')} ) ] ) (command.Simple words: [{(other-shell-tasks)} {($ Id.VSub_DollarName '$provenance')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1452) fd: -1 arg_word: {($ Id.VSub_DollarName '$t2')} ) ] ) (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: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'raw_dir=') (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:1538) suffix_op: (suffix_op.Unary op_id: 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: (Token id:Id.Op_LParen val:'(' span_id:1587) 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: (Token id:Id.Op_LParen val:'(' span_id:1596) words: [ {($ Id.VSub_DollarName '$raw_dir') (/lisa.) (Id.Lit_Star '*') (.times.tsv)} ] ) } spids: [1595] ) ] ) (command.Simple words: [ {(tsv-concat)} { (braced_var_sub token: (Token id:Id.VSub_Name val:a span_id:1607) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } { (braced_var_sub token: (Token id:Id.VSub_Name val:b span_id:1615) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1622) fd: -1 arg_word: {($ Id.VSub_DollarName '$x')} ) ] ) (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: (Token id:Id.Op_LParen val:'(' span_id:1634) 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: (Token id:Id.Op_LParen val:'(' span_id:1643) words: [ {($ Id.VSub_DollarName '$raw_dir') (/lisa.) (Id.Lit_Star '*') (.bytecode-size.tsv) } ] ) } spids: [1642] ) ] ) (command.Simple words: [ {(tsv-concat)} { (braced_var_sub token: (Token id:Id.VSub_Name val:a span_id:1654) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } { (braced_var_sub token: (Token id:Id.VSub_Name val:b span_id:1662) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1669) fd: -1 arg_word: {($ Id.VSub_DollarName '$x')} ) ] ) (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: (Token id:Id.Op_LParen val:'(' span_id:1681) 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: (Token id:Id.Op_LParen val:'(' span_id:1690) words: [ {($ Id.VSub_DollarName '$raw_dir') (/lisa.) (Id.Lit_Star '*') (.bin-sizes.tsv) } ] ) } spids: [1689] ) ] ) (command.Simple words: [ {(tsv-concat)} { (braced_var_sub token: (Token id:Id.VSub_Name val:a span_id:1701) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } { (braced_var_sub token: (Token id:Id.VSub_Name val:b span_id:1709) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1716) fd: -1 arg_word: {($ Id.VSub_DollarName '$x')} ) ] ) (C {(local)} {(Id.Lit_VarLike 'raw_data_tsv=') ($ Id.VSub_DollarName '$out') (/raw-data.tsv)} ) (command.BraceGroup children: [ (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:path span_id:1738))}) (C {(echo)} { (braced_var_sub token: (Token id:Id.VSub_Name val:a span_id:1745) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } ) (C {(echo)} { (braced_var_sub token: (Token id:Id.VSub_Name val:b span_id:1756) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } ) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1766) fd: -1 arg_word: {($ 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: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'in_dir=') ($ Id.VSub_Number '$1')}) (C {(local)} {(Id.Lit_VarLike 'base_url=') (SQ (Token id:Id.Lit_Chars val:../../web span_id:1807))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1814) fd: -1 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') ] ) ] ) (C {(tsv2html)} {(--css-class-pattern)} {(SQ (Token id:Id.Lit_Chars val:'special ^oil' span_id:1888))} {($ Id.VSub_DollarName '$in_dir') (/times.tsv)} ) (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1898) fd: -1 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') ] ) ] ) (C {(tsv2html)} {(--css-class-pattern)} {(SQ (Token id:Id.Lit_Chars val:'special /gcc/oil.ovm$' span_id:1924))} {($ Id.VSub_DollarName '$in_dir') (/sizes.tsv)} ) (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1934) fd: -1 here_begin: {(EOF)} here_end_span_id: 1940 stdin_parts: [('\n') (' <h3>Host and Compiler Details</h3>\n')] ) ] ) (C {(tsv2html)} {($ Id.VSub_DollarName '$in_dir') (/hosts.tsv)}) (C {(tsv2html)} {($ Id.VSub_DollarName '$in_dir') (/compilers.tsv)}) (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1957) fd: -1 here_begin: {(EOF)} here_end_span_id: 1963 stdin_parts: [(' </body>\n') ('</html>\n')] ) ] ) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )