(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub BAZEL_WRKDIR]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub BAZEL_WRKDIR][LIT_CHARS /tmp]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub BAZEL_WRKDIR][LIT_CHARS /user_root]]}) (Com {[LIT_OTHER ":"]} {[VarSub TMPDIR test_op=VS_TEST_COLON_EQUALS {[VarSub BAZEL_WRKDIR] [LIT_SLASH /] [LIT_CHARS tmp]}]}) (= scope= flags=1 words=[{[LIT_CHARS TMPDIR]}] bindings=[]) (Com {[LIT_OTHER ":"]} {[VarSub BAZEL_DIR_STARTUP_OPTIONS test_op=VS_TEST_COLON_EQUALS {[DQ [LIT_CHARS "--output_user_root="][VarSub BAZEL_WRKDIR][LIT_CHARS /user_root]]}]}) ) ) (= scope= flags=0 words=[] bindings=[('DIR', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]]}) (Com {[LIT_CHARS pwd]}) )]})]) (= scope= flags=0 words=[] bindings=[('WORKSPACE_DIR', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub DIR]})]})]]})]) (= scope= flags=0 words=[] bindings=[('JAVA_VERSION', {[VarSub JAVA_VERSION test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 1.8]}]})]) (= scope= flags=0 words=[] bindings=[('BAZELRC', {[VarSub BAZELRC test_op=VS_TEST_COLON_HYPHEN {[DQ [LIT_CHARS /dev/null]]}]})]) (= scope= flags=0 words=[] bindings=[('PLATFORM', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) )]]})]) (= scope= flags=0 words=[] bindings=[('MACHINE_TYPE', {[DQ [ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -m]})]]})]) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_64BIT', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_CHARS -o]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_CHARS -o]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_64BIT', {[SQ ]})]) ) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_ARM', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_CHARS -o]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_CHARS -o]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_ARM', {[SQ ]})]) ) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_Z', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_Z', {[SQ ]})]) ) (= scope= flags=0 words=[] bindings=[('EXE_EXT', {[DQ ]})]) (Case to_match={[DQ [VarSub PLATFORM]]}, pat_word_list=[[{[LIT_CHARS msys] [LIT_OTHER "*"]}, {[LIT_CHARS mingw] [LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('EXE_EXT', {[DQ [LIT_CHARS .exe]]})]) ) (Case to_match={[DQ [VarSub PLATFORM]]}, pat_word_list=[[{[LIT_CHARS msys] [LIT_OTHER "*"]}, {[LIT_CHARS mingw] [LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('default_tmp', {[VarSub TMP test_op=VS_TEST_COLON_HYPHEN {[ComSub (Com {[LIT_CHARS cygpath]} {[LIT_CHARS -W]})] [LIT_SLASH /] [LIT_CHARS Temp]}]})]) (= scope= flags=0 words=[] bindings=[('TMPDIR', {[ComSub (Com {[LIT_CHARS cygpath]} {[LIT_CHARS -ml]} {[DQ [VarSub TMPDIR test_op=VS_TEST_COLON_HYPHEN {[VarSub default_tmp]}]]})]})]) ) ) (Com {[LIT_OTHER ":"]} {[VarSub VERBOSE test_op=VS_TEST_COLON_EQUALS {[LIT_CHARS yes]}]}) (= scope= flags=0 words=[] bindings=[('ATEXIT_HANDLERS', {[SQ ]})]) (FunctionDef atexit [] (List (= scope= flags=0 words=[] bindings=[('handler', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub ATEXIT_HANDLERS]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]}) ) (= scope= flags=0 words=[] bindings=[('ATEXIT_HANDLERS', {[DQ [VarSub ATEXIT_HANDLERS][LIT_CHARS " "][VarSub handler]]})]) ) ) (FunctionDef run_atexit_handlers [] (List (= scope= flags=0 words=[] bindings=[('exit_code', {[DQ [VarSub ?]]})]) (= scope= flags=0 words=[] bindings=[('failed', {[LIT_CHARS no]})]) (For handler [{[VarSub ATEXIT_HANDLERS]}]) (AndOr OP_OR_IF (Com {[LIT_CHARS eval]} {[DQ [VarSub handler]]}) (= scope= flags=0 words=[] bindings=[('failed', {[LIT_CHARS yes]})]) ) ) (Com {[LIT_CHARS trap]} {[LIT_CHARS -]} {[LIT_CHARS EXIT]}) (If (Com {[LIT_OTHER "["]} {[VarSub exit_code]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS exit]} {[VarSub exit_code]}) (ElseTrue) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub failed]]} {[LIT_OTHER "="]} {[LIT_CHARS yes]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Program tried to exit successfully but atexit routines failed"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (ElseTrue) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) ) ) ) (FunctionDef tempdir [] (List (= scope= flags=0 words=[] bindings=[('tmp', {[VarSub TMPDIR test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS tmp]}]})]) (= scope= flags=0 words=[] bindings=[('DIR', {[DQ [ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub tmp transform_ops=[VS_UNARY_DPERCENT {[LIT_SLASH /]}]] [LIT_CHARS /bazel_XXXXXXXX]})]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub DIR]]}) (= scope= flags=0 words=[] bindings=[('DIRBASE', {[ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub DIR]]})]})]) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS cleanup_tempdir_][VarSub DIRBASE][LIT_CHARS "() { rm -rf '"][VarSub DIR][LIT_CHARS "'; }"]]}) (Com {[LIT_CHARS atexit]} {[LIT_CHARS cleanup_tempdir_] [VarSub DIRBASE]}) (= scope= flags=0 words=[] bindings=[('NEW_TMPDIR', {[DQ [VarSub DIR]]})]) ) ) (Com {[LIT_CHARS tempdir]}) (= scope= flags=0 words=[] bindings=[('OUTPUT_DIR', {[VarSub NEW_TMPDIR]})]) (= scope= flags=0 words=[] bindings=[('phasefile', {[VarSub OUTPUT_DIR] [LIT_CHARS /phase]})]) (FunctionDef cleanup_phasefile [] (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [VarSub phasefile]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS cat]} {[DQ [VarSub phasefile]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) ) (Com {[LIT_CHARS atexit]} {[LIT_CHARS cleanup_phasefile]}) (FunctionDef run [] (If (Com {[LIT_OTHER "["]} {[DQ [VarSub VERBOSE]]} {[LIT_OTHER "="]} {[LIT_CHARS yes]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]}) (AndOr OP_OR_IF (Com {[DQ [VarSub @]]}) (Com {[LIT_CHARS exit]} {[VarSub ?]}) ) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('errfile', {[DQ [VarSub OUTPUT_DIR][LIT_CHARS /errors]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [VarSub errfile]]} "> 1), > ) (If (Pipeline! (Com {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [VarSub errfile]]} >"> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (List (= scope= flags=0 words=[] bindings=[('exitcode', {[VarSub ?]})]) (Com {[LIT_CHARS cat]} {[DQ [VarSub errfile]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[VarSub exitcode]}) ) ) ) ) ) (FunctionDef fail [] (List (= scope= flags=0 words=[] bindings=[('exitCode', {[VarSub ?]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub exitCode]]} {[DQ [LIT_CHARS 0]]}}) (= scope= flags=0 words=[] bindings=[('exitCode', {[LIT_CHARS 1]})]) ) (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: "][VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[VarSub exitCode]}) ) ) (FunctionDef display [] (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub QUIETMODE]]}}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (FunctionDef log [] (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS .]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[VarSub phasefile]} "> 1), > ) ) ) (FunctionDef clear_log [] (List (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub phasefile]}) ) ) (= scope= flags=0 words=[] bindings=[('LEAVES', {[DQ [\ LIT_ESCAPED_CHAR "\\x"][LIT_CHARS F0][\ LIT_ESCAPED_CHAR "\\x"][LIT_CHARS 9F][\ LIT_ESCAPED_CHAR "\\x"][LIT_CHARS 8D][\ LIT_ESCAPED_CHAR "\\x"][LIT_CHARS 83]]})]) (= scope= flags=0 words=[] bindings=[('INFO', {[DQ [\ LIT_ESCAPED_CHAR "\\0"][LIT_CHARS "33[32mINFO"][\ LIT_ESCAPED_CHAR "\\0"][LIT_CHARS "33[0m:"]]})]) (= scope= flags=0 words=[] bindings=[('WARNING', {[DQ [\ LIT_ESCAPED_CHAR "\\0"][LIT_CHARS "33[31mWARN"][\ LIT_ESCAPED_CHAR "\\0"][LIT_CHARS "33[0m:"]]})]) (= scope= flags=0 words=[] bindings=[('first_step', {[LIT_CHARS 1]})]) (FunctionDef new_step [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub phasefile]}) (= scope= flags=0 words=[] bindings=[('new_line', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub first_step]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('first_step', {[SQ ]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('new_line', {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]})]) ) (Com {[LIT_CHARS display]} {[LIT_CHARS -n]} {[DQ [VarSub new_line][VarSub LEAVES][LIT_CHARS " "][VarSub 1]]}) ) ) (FunctionDef git_sha1 [] (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -x]} {[DQ [ComSub (AndOr OP_OR_IF (Com {[LIT_CHARS which]} {[LIT_CHARS git]}) (Com {[LIT_CHARS true]}) )]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[LIT_CHARS .git]} {[LIT_OTHER "]"]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[LIT_CHARS HEAD]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]}) ) ) ) (FunctionDef git_date [] (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -x]} {[DQ [ComSub (AndOr OP_OR_IF (Com {[LIT_CHARS which]} {[LIT_CHARS git]}) (Com {[LIT_CHARS true]}) )]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[LIT_CHARS .git]} {[LIT_OTHER "]"]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS -1]} {[LIT_CHARS --pretty] [LIT_OTHER "="] [LIT_OTHER "%"] [LIT_CHARS ai]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS " "]]} {[LIT_CHARS -f]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS true]}) ) ) ) (FunctionDef get_last_version [] (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [LIT_CHARS CHANGELOG.md]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('version', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS fgrep]} {[LIT_CHARS -m]} {[LIT_CHARS 1]} {[SQ ]} {[LIT_CHARS CHANGELOG.md]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -E]} {[SQ ]}) )]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('version', {[DQ ]})]) ) (= scope= flags=0 words=[] bindings=[('date', {[DQ [ComSub (Com {[LIT_CHARS git_date]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub version test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('version', {[DQ [LIT_CHARS unknown]]})]) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub date test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('date', {[DQ [ComSub (Com {[LIT_CHARS date]} {[LIT_OTHER "+"] [LIT_OTHER "%"] [LIT_CHARS Y-] [LIT_OTHER "%"] [LIT_CHARS m-] [LIT_OTHER "%"] [LIT_CHARS d]})]]})]) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub version][LIT_CHARS -][VarSub date]]}) ) ) (If (DBracket {B2 BINARY_STRING_EQUAL {[VarSub PLATFORM]} {[DQ [LIT_CHARS darwin]]}}) (FunctionDef md5_file [] (Com {[LIT_CHARS echo]} {[ComSub (Pipeline (Com {[LIT_CHARS cat]} {[VarSub 1]}) (Com {[LIT_CHARS md5]}) )]} {[VarSub 1]}) ) (ElseTrue) (FunctionDef md5_file [] (Com {[LIT_CHARS md5sum]} {[VarSub 1]}) ) ) (FunctionDef get_java_version [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub JAVA_HOME]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "JDK not found, please set "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS JAVA_HOME.]]}) ) (= scope= flags=0 words=[] bindings=[('JAVAC', {[DQ [VarSub JAVA_HOME][LIT_CHARS /bin/javac]]})]) (AndOr OP_OR_IF (DBracket {B1 UNARY_FILE_x {[DQ [VarSub JAVAC]]}}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "JAVA_HOME ("][VarSub JAVA_HOME][LIT_CHARS ") is not a path to a working JDK."]]}) ) (= scope= flags=0 words=[] bindings=[('JAVAC_VERSION', {[ComSub (Com redirects=[(DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2)]{[DQ [VarSub JAVAC]]} {[LIT_CHARS -version]})]})]) (If (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub JAVAC_VERSION]]} {[LIT_CHARS javac] [\ LIT_ESCAPED_CHAR "\\ "] [LIT_CHARS "("] [LIT_CHARS 1] [\ LIT_ESCAPED_CHAR "\\."] [LIT_CHARS "("] [LIT_OTHER "["] [LIT_CHARS 789] [LIT_OTHER "]"] [LIT_CHARS "|"] [LIT_OTHER "["] [LIT_CHARS 1-9] [LIT_OTHER "]"] [LIT_OTHER "["] [LIT_CHARS 0-9] [LIT_OTHER "]"] [LIT_CHARS ")"] [LIT_CHARS ")"] [LIT_CHARS .] [LIT_OTHER "*"] [LIT_OTHER "$"]}}) (= scope= flags=0 words=[] bindings=[('JAVAC_VERSION', {[VarSub BASH_REMATCH bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}})]})]) (ElseTrue) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Cannot determine JDK version, please set "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS JAVA_HOME.][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "JAVAC_VERSION is "][\ LIT_ESCAPED_CHAR "\\\""][VarSub JAVAC_VERSION][\ LIT_ESCAPED_CHAR "\\\""]]}) ) ) ) (FunctionDef get_bind_target [] (Com {[VarSub BAZEL]} {[LIT_CHARS --bazelrc] [LIT_OTHER "="] [VarSub BAZELRC]} {[LIT_CHARS --nomaster_bazelrc]} {[VarSub BAZEL_DIR_STARTUP_OPTIONS]} {[LIT_CHARS query]} {[DQ [LIT_CHARS "deps("][VarSub 1][LIT_CHARS ", 1) - "][VarSub 1]]}) ) )