(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>} {<'build/common.sh'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {<'benchmarks/common.sh'>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <_dump-if-exists> name: _dump-if-exists body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'path='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'out='> ($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName path)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName path)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out)} ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <dump-shell-id> name: dump-shell-id body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'sh='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<name>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'name='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName sh)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'out_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: {<_tmp> <Id.Lit_Slash '/'> <shell-id> <Id.Lit_Slash '/'> ($ Id.VSub_DollarName name) } ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out_dir)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName sh)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/osh'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<branch>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'branch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'branch='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch='> name:branch) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<--abbrev-ref>} {<HEAD>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName branch)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/git-branch.txt'>} ) ] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {($ Id.VSub_DollarName branch)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/git-commit-hash.txt'>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName name)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bash> pattern: (pat.Words words:[{<bash>} {<zsh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$sh'> more_env: [] words: [{($ Id.VSub_DollarName sh)} {<--version>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/version.txt'>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <osh> pattern: (pat.Words words:[{<osh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$sh'> more_env: [] words: [{($ Id.VSub_DollarName sh)} {<--version>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/osh-version.txt'>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <dash> pattern: (pat.Words words:[{<dash>} {<mksh>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <dpkg> more_env: [] words: [{<dpkg>} {<-s>} {($ Id.VSub_DollarName name)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/dpkg-version.txt'>} ) ] 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: <die> more_env: [] words: [{<die>} {(DQ <'Invalid shell \''> ($ Id.VSub_DollarName name) <'\''>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_shell-id-hash> name: _shell-id-hash body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'src='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<file>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_DollarName src) <'/version.txt'>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_DollarName src) <'/dpkg-version.txt'>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <egrep> more_env: [] words: [{<egrep>} {(SQ <'^Version'>)} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_DollarName src) <'/osh-version.txt'>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <egrep> more_env: [] words: [{<egrep>} {(SQ <'^Oil version|^Interpreter'>)} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {($ Id.VSub_DollarName src) <'/git-commit-hash.txt'>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <publish-shell-id> name: publish-shell-id body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'src='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'dest_base='> (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.Lit_Slash '/'> <benchmark-data> <Id.Lit_Slash '/'> <shell-id>} ) right: <Id.Right_DollarBrace '}'> ) } ] 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 src)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<hash>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'hash='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hash='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hash='> name:hash) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <_shell-id-hash> more_env: [] words: [{<_shell-id-hash>} {($ Id.VSub_DollarName src)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <md5sum> more_env: [] words: [{<md5sum>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'id='> (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name hash> var_name: hash suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 0>} length:{<Id.Lit_Digits 8>}) right: <Id.Arith_RBrace _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'dest='> (DQ ($ Id.VSub_DollarName dest_base) <'/'> ($ Id.VSub_DollarName name) <-> ($ Id.VSub_DollarName id) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName dest)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<--no-target-directory>} {<--recursive>} {($ Id.VSub_DollarName src) <'/'>} {($ Id.VSub_DollarName dest) <'/'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName hash)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName dest) <'/HASH.txt'>} ) ] do_fork: T ) (command.Simple blame_tok: <log> more_env: [] words: [{<log>} {(DQ <'Published shell ID to '> ($ Id.VSub_DollarName dest))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName id)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <dump-host-id> name: dump-host-id body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'out_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: {<_tmp> <Id.Lit_Slash '/'> <host-id> <Id.Lit_Slash '/'> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <hostname> more_env: [] words: [{<hostname>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out_dir)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <hostname> more_env: [] words: [{<hostname>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/hostname.txt'>} ) ] do_fork: T ) (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-m>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/machine.txt'>} ) ] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<--kernel-release>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<--kernel-version>}] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/kernel.txt'>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <_dump-if-exists> more_env: [] words: [ {<_dump-if-exists>} {<'/etc/lsb-release'>} {($ Id.VSub_DollarName out_dir) <'/lsb-release.txt'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<'/proc/cpuinfo'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/cpuinfo.txt'>} ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<'/proc/meminfo'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/meminfo.txt'>} ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_host-id-hash> name: _host-id-hash body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'src='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName src) <'/machine.txt'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName src) <'/kernel.txt'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'file='> ($ Id.VSub_DollarName src) <'/lsb-release.txt'>} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName file)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <publish-host-id> name: publish-host-id body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'src='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'dest_base='> (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.Lit_Slash '/'> <benchmark-data> <Id.Lit_Slash '/'> <host-id>} ) right: <Id.Right_DollarBrace '}'> ) } ] 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 src)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<hash>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'hash='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hash='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hash='> name:hash) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <_host-id-hash> more_env: [] words: [{<_host-id-hash>} {($ Id.VSub_DollarName src)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <md5sum> more_env: [] words: [{<md5sum>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'id='> (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name hash> var_name: hash suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 0>} length:{<Id.Lit_Digits 8>}) right: <Id.Arith_RBrace _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'dest='> (DQ ($ Id.VSub_DollarName dest_base) <'/'> ($ Id.VSub_DollarName name) <-> ($ Id.VSub_DollarName id) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName dest)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<--no-target-directory>} {<--recursive>} {($ Id.VSub_DollarName src) <'/'>} {($ Id.VSub_DollarName dest) <'/'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName hash)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName dest) <'/HASH.txt'>} ) ] do_fork: T ) (command.Simple blame_tok: <log> more_env: [] words: [{<log>} {(DQ <'Published host ID to '> ($ Id.VSub_DollarName dest))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName id)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <dump-compiler-id> name: dump-compiler-id body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'cc='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'out_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: {<_tmp> <Id.Lit_Slash '/'> <compiler-id> <Id.Lit_Slash '/'> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName cc)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out_dir)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/gcc'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [{($ Id.VSub_DollarName cc)} {<--version>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/clang'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [{($ Id.VSub_DollarName cc)} {<--version>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out_dir) <'/version.txt'>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <test-compiler-id> name: test-compiler-id body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <dump-compiler-id> more_env: [] words: [{<dump-compiler-id>} {<gcc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <dump-compiler-id> more_env: [] words: [{<dump-compiler-id>} {($ Id.VSub_DollarName CLANG)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <head> more_env: [] words: [{<head>} {<'_tmp/compiler-id/'> <Id.Lit_Star '*'> <'/version.txt'>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_compiler-id-hash> name: _compiler-id-hash body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'src='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName src) <'/version.txt'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-v>} {<InstalledDir>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <publish-compiler-id> name: publish-compiler-id body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'src='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'dest_base='> (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.Lit_Slash '/'> <benchmark-data> <Id.Lit_Slash '/'> <compiler-id>} ) right: <Id.Right_DollarBrace '}'> ) } ] 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 src)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<hash>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'hash='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hash='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hash='> name:hash) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <_compiler-id-hash> more_env: [] words: [{<_compiler-id-hash>} {($ Id.VSub_DollarName src)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <md5sum> more_env: [] words: [{<md5sum>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'id='> (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name hash> var_name: hash suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 0>} length:{<Id.Lit_Digits 8>}) right: <Id.Arith_RBrace _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'dest='> (DQ ($ Id.VSub_DollarName dest_base) <'/'> ($ Id.VSub_DollarName name) <-> ($ Id.VSub_DollarName id) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName dest)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<--no-target-directory>} {<--recursive>} {($ Id.VSub_DollarName src) <'/'>} {($ Id.VSub_DollarName dest) <'/'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName hash)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName dest) <'/HASH.txt'>} ) ] do_fork: T ) (command.Simple blame_tok: <log> more_env: [] words: [{<log>} {(DQ <'Published compiler ID to '> ($ Id.VSub_DollarName dest))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName id)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <shell-provenance> name: shell-provenance body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<job_id>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'job_id='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'job_id='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'job_id='> name:job_id) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <date> more_env: [] words: [ {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <Y-> <Id.Lit_Other '%'> <m-> <Id.Lit_Other '%'> <d__> <Id.Lit_Other '%'> <H-> <Id.Lit_Other '%'> <M-> <Id.Lit_Other '%'> <S> } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<host>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host) op: assign_op.Equal rhs: { (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: [] ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'out='> <'_tmp/'> (${ Id.VSub_Name host) <.> (${ Id.VSub_Name job_id) <.provenance.txt> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'tmp_dir='> <'_tmp/host-id/'> ($ Id.VSub_DollarName host)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <dump-host-id> more_env: [] words: [{<dump-host-id>} {($ Id.VSub_DollarName tmp_dir)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<host_hash>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'host_hash='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host_hash='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host_hash='> name:host_hash) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <publish-host-id> more_env: [] words: [{<publish-host-id>} {($ Id.VSub_DollarName tmp_dir)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<shell_hash>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [sh_path] iterable: (for_iter.Words words: [{<bash>} {<dash>} {<mksh>} {<zsh>} {<'bin/osh'>} {($ Id.VSub_DollarName OSH_OVM)}] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (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 sh_path)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp_dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp_dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp_dir='> name:tmp_dir) op: assign_op.Equal rhs: {<'_tmp/shell-id/'> ($ Id.VSub_DollarName name)} ) ] redirects: [] ) (command.Simple blame_tok: <dump-shell-id> more_env: [] words: [ {<dump-shell-id>} {($ Id.VSub_DollarName sh_path)} {($ Id.VSub_DollarName tmp_dir)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'shell_hash='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell_hash='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell_hash='> name:shell_hash) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <publish-shell-id> more_env: [] words: [{<publish-shell-id>} {($ Id.VSub_DollarName tmp_dir)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName job_id) <' '> ($ Id.VSub_DollarName host) <' '> ($ Id.VSub_DollarName host_hash) <' '> ($ Id.VSub_DollarName sh_path) <' '> ($ Id.VSub_DollarName shell_hash) ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out)} ) ] ) (command.Simple blame_tok: <log> more_env: [] words: [{<log>} {(DQ <'Wrote '> ($ Id.VSub_DollarName out))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName out)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <compiler-provenance> name: compiler-provenance body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<job_id>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'job_id='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'job_id='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'job_id='> name:job_id) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <date> more_env: [] words: [ {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <Y-> <Id.Lit_Other '%'> <m-> <Id.Lit_Other '%'> <d__> <Id.Lit_Other '%'> <H-> <Id.Lit_Other '%'> <M-> <Id.Lit_Other '%'> <S> } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<host>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host) op: assign_op.Equal rhs: { (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: [] ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'out='> <'_tmp/'> (${ Id.VSub_Name host) <.> (${ Id.VSub_Name job_id) <.compiler-provenance.txt> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'tmp_dir='> <'_tmp/host-id/'> ($ Id.VSub_DollarName host)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <dump-host-id> more_env: [] words: [{<dump-host-id>} {($ Id.VSub_DollarName tmp_dir)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<host_hash>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'host_hash='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host_hash='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host_hash='> name:host_hash) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <publish-host-id> more_env: [] words: [{<publish-host-id>} {($ Id.VSub_DollarName tmp_dir)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<compiler_hash>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [compiler_path] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<gcc>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } {($ Id.VSub_DollarName CLANG)} ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (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 compiler_path)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp_dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp_dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp_dir='> name:tmp_dir) op: assign_op.Equal rhs: {<'_tmp/compiler-id/'> ($ Id.VSub_DollarName name)} ) ] redirects: [] ) (command.Simple blame_tok: <dump-compiler-id> more_env: [] words: [ {<dump-compiler-id>} {($ Id.VSub_DollarName compiler_path)} {($ Id.VSub_DollarName tmp_dir)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'compiler_hash='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'compiler_hash='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'compiler_hash='> name: compiler_hash ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <publish-compiler-id> more_env: [] words: [{<publish-compiler-id>} {($ Id.VSub_DollarName tmp_dir)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName job_id) <' '> ($ Id.VSub_DollarName host) <' '> ($ Id.VSub_DollarName host_hash) <' '> ($ Id.VSub_DollarName compiler_path) <' '> ($ Id.VSub_DollarName compiler_hash) ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out)} ) ] ) (command.Simple blame_tok: <log> more_env: [] words: [{<log>} {(DQ <'Wrote '> ($ Id.VSub_DollarName out))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName out)}] redirects: [] 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 ) ] )