(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]}) (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub 0]]})]]}) (Com {[LIT_OTHER ":"]} {[VarSub VERBOSE test_op=VS_TEST_COLON_EQUALS {[LIT_CHARS no]}]}) (Com {[LIT_CHARS source]} {[LIT_CHARS scripts/bootstrap/buildenv.sh]}) (FunctionDef usage [] (List (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS compile]}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Invalid command(s): "][VarSub 1]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "syntax: "][VarSub 0][LIT_CHARS " [command[,command]* [BAZEL_BIN [BAZEL_SUM]]]"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " General purpose commands:"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " compile = compile the bazel binary (default)"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " Commands for developers:"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " all = compile,determinism,test"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " determinism = test for stability of Bazel builds"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " srcs = test that //:srcs contains all the sources"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " test = run the full test suite of Bazel"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef parse_options [] (List (= scope= flags=0 words=[] bindings=[('keywords', {[DQ [LIT_CHARS "(compile|all|determinism|bootstrap|srcs|test)"]]})]) (= scope= flags=0 words=[] bindings=[('COMMANDS', {[DQ [VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS compile]}]]})]) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub COMMANDS]]} {[LIT_OTHER "^"] [VarSub keywords] [LIT_CHARS "("] [LIT_COMMA ","] [VarSub keywords] [LIT_CHARS ")"] [LIT_OTHER "*"] [LIT_OTHER "$"]}}) (Com {[LIT_CHARS usage]} {[DQ [VarSub @]]}) ) (= scope= flags=0 words=[] bindings=[('DO_COMPILE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('DO_CHECKSUM', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('DO_FULL_CHECKSUM', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('DO_TESTS', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('DO_SRCS_TEST', {[SQ ]})]) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub COMMANDS]]} {[LIT_CHARS "("] [LIT_CHARS compile] [LIT_CHARS "|"] [LIT_CHARS all] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('DO_COMPILE', {[LIT_CHARS 1]})]) ) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub COMMANDS]]} {[LIT_CHARS "("] [LIT_CHARS bootstrap] [LIT_CHARS "|"] [LIT_CHARS determinism] [LIT_CHARS "|"] [LIT_CHARS all] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('DO_CHECKSUM', {[LIT_CHARS 1]})]) ) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub COMMANDS]]} {[LIT_CHARS "("] [LIT_CHARS bootstrap] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('DO_FULL_CHECKSUM', {[SQ ]})]) ) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub COMMANDS]]} {[LIT_CHARS "("] [LIT_CHARS srcs] [LIT_CHARS "|"] [LIT_CHARS all] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('DO_SRCS_TEST', {[LIT_CHARS 1]})]) ) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub COMMANDS]]} {[LIT_CHARS "("] [LIT_CHARS test] [LIT_CHARS "|"] [LIT_CHARS all] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('DO_TESTS', {[LIT_CHARS 1]})]) ) (= scope= flags=0 words=[] bindings=[('BAZEL_BIN', {[VarSub 2 test_op=VS_TEST_COLON_HYPHEN {[DQ [LIT_CHARS bazel-bin/src/bazel]]}]})]) (= scope= flags=0 words=[] bindings=[('BAZEL_SUM', {[VarSub 3 test_op=VS_TEST_COLON_HYPHEN {[DQ [LIT_CHARS x]]}]})]) ) ) (Com {[LIT_CHARS parse_options]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS output]}) (Com {[LIT_OTHER ":"]} {[VarSub BAZEL test_op=VS_TEST_COLON_EQUALS {[VarSub 2 test_op=VS_TEST_HYPHEN {}]}]}) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -x]} {[DQ [VarSub BAZEL]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS display]} {[DQ [VarSub INFO][LIT_CHARS " You can skip this first step by providing a path to the bazel binary as second argument:"]]}) (Com {[LIT_CHARS display]} {[DQ [VarSub INFO][LIT_CHARS " "][VarSub 0][LIT_CHARS " "][VarSub COMMANDS][LIT_CHARS " /path/to/bazel"]]}) (Com {[LIT_CHARS new_step]} {[SQ ]}) (Com {[LIT_CHARS source]} {[LIT_CHARS scripts/bootstrap/compile.sh]}) (= scope= flags=0 words=[] bindings=[('DO_COMPILE', {[LIT_CHARS 1]})]) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub EMBED_LABEL test_op=VS_TEST_HYPHEN {[LIT_CHARS x]}]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS x]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('git_sha1', {[ComSub (Com {[LIT_CHARS git_sha1]})]})]) (= scope= flags=0 words=[] bindings=[('EMBED_LABEL', {[DQ [ComSub (Com {[LIT_CHARS get_last_version]})][LIT_CHARS " (@"][VarSub git_sha1 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS non-git]}][LIT_CHARS ")"]]})]) ) ) (If (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_EQUAL {[VarSub PLATFORM]} {[DQ [LIT_CHARS darwin]]}}) (Pipeline (Com {[LIT_CHARS xcodebuild]} {[LIT_CHARS -showsdks]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) ) (= scope= flags=0 words=[] bindings=[('EXTRA_BAZEL_ARGS', {[DQ [VarSub EXTRA_BAZEL_ARGS test_op=VS_TEST_HYPHEN {}][LIT_CHARS " --define IPHONE_SDK=1"]]})]) ) (Com {[LIT_CHARS source]} {[LIT_CHARS scripts/bootstrap/bootstrap.sh]}) (If (Com {[LIT_OTHER "["]} {[VarSub DO_COMPILE]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS new_step]} {[SQ ]}) (Com {[LIT_CHARS display]} {[DQ [LIT_CHARS .]]}) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Building output/bazel"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel_build]} {[DQ [LIT_CHARS "src:bazel"][VarSub EXE_EXT]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Could not build Bazel"]]}) ) (= scope= flags=0 words=[] bindings=[('bazel_bin_path', {[DQ [ComSub (Com {[LIT_CHARS get_bazel_bin_path]})][LIT_CHARS /src/bazel][VarSub EXE_EXT]]})]) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub bazel_bin_path]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Could not find freshly built Bazel binary at '"][VarSub bazel_bin_path][LIT_CHARS "'"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cp]} {[LIT_CHARS -f]} {[DQ [VarSub bazel_bin_path]]} {[DQ [LIT_CHARS output/bazel][VarSub EXE_EXT]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Could not copy '"][VarSub bazel_bin_path][LIT_CHARS "' to 'output/bazel"][VarSub EXE_EXT][LIT_CHARS "'"]]}) ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS 0755]} {[DQ [LIT_CHARS output/bazel][VarSub EXE_EXT]]}) (= scope= flags=0 words=[] bindings=[('BAZEL', {[DQ [ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS /output/bazel][VarSub EXE_EXT]]})]) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub DO_CHECKSUM]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS new_step]} {[DQ [LIT_CHARS "Determinism test"]]}) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[VarSub BAZEL_SUM test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS x]}]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('BAZEL_SUM', {[LIT_CHARS bazel-out/bazel_checksum]})]) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "First build"]]}) (Com {[LIT_CHARS bootstrap_test]} {[VarSub BAZEL]} {[VarSub BAZEL_SUM]}) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('BOOTSTRAP', {[VarSub BAZEL]})]) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub BAZEL_SUM]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub OUTPUT_DIR][LIT_CHARS /bazel_checksum]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS cp]} {[VarSub BAZEL_SUM]} {[VarSub OUTPUT_DIR] [LIT_CHARS /bazel_checksum]}) ) (If (Com {[LIT_OTHER "["]} {[VarSub DO_FULL_CHECKSUM]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Second build"]]}) (Com {[LIT_CHARS bootstrap_test]} {[VarSub BOOTSTRAP]} {[LIT_CHARS bazel-out/bazel_checksum]}) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Comparing output"]]}) (AndOr OP_OR_IF (Subshell (Com {[LIT_CHARS diff]} {[LIT_CHARS -U]} {[LIT_CHARS 0]} {[VarSub OUTPUT_DIR] [LIT_CHARS /bazel_checksum]} {[LIT_CHARS bazel-out/bazel_checksum]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Differences detected in outputs!"]]}) ) ) ) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub DO_SRCS_TEST]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS new_step]} {[DQ [LIT_CHARS "Checking that //:srcs contains all the sources"]]}) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Querying //:srcs"]]}) (Pipeline (Com {[VarSub BAZEL]} {[LIT_CHARS query]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]} < (FilenameRedirectNode filename={[DQ [VarSub OUTPUT_DIR][LIT_CHARS /srcs-query]]} "> 1), > ) ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS "Finding all files"]]}) (= scope= flags=0 words=[] bindings=[('SRCS_EXCLUDES', {[VarSub SRCS_EXCLUDES test_op=VS_TEST_HYPHEN {[LIT_CHARS XXXXXXXXXXXXXX1268778dfsdf4]}]})]) (Pipeline (Com {[LIT_CHARS find]} {[LIT_CHARS .]} {[LIT_CHARS -type]} {[LIT_CHARS f]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[SQ ]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[SQ ]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[SQ ]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[SQ ]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[SQ ]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -Ev]} {[DQ [VarSub SRCS_EXCLUDES]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[SQ ]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]} < (FilenameRedirectNode filename={[DQ [VarSub OUTPUT_DIR][LIT_CHARS /srcs-find]]} "> 1), > ) ) (Com {[LIT_CHARS log]} {[DQ [LIT_CHARS Diffing]]}) (= scope= flags=0 words=[] bindings=[('res', {[DQ [ComSub (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS diff]} {[LIT_CHARS -U]} {[LIT_CHARS 0]} {[DQ [VarSub OUTPUT_DIR][LIT_CHARS /srcs-find]]} {[DQ [VarSub OUTPUT_DIR][LIT_CHARS /srcs-query]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -Ev]} {[SQ ]}) ) (Com {[LIT_CHARS true]}) )]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub res]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "//:srcs filegroup do not contains all the sources, missing:\n"][VarSub res]]}) ) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub DO_TESTS]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS new_step]} {[DQ [LIT_CHARS "Running tests"]]}) (Com {[LIT_CHARS display]} {[DQ [LIT_CHARS .]]}) (= scope= flags=0 words=[] bindings=[('ndk_target', {[DQ [ComSub (Com {[LIT_CHARS get_bind_target]} {[LIT_CHARS //external] [LIT_OTHER ":"] [LIT_CHARS android_ndk_for_testing]})]]})]) (= scope= flags=0 words=[] bindings=[('sdk_target', {[DQ [ComSub (Com {[LIT_CHARS get_bind_target]} {[LIT_CHARS //external] [LIT_OTHER ":"] [LIT_CHARS android_sdk_for_testing]})]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub ndk_target]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS "//:dummy"]]} {[LIT_CHARS -o]} {[DQ [VarSub sdk_target]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS "//:dummy"]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS display]} {[DQ [VarSub WARNING][LIT_CHARS " Android SDK or NDK are not set in the WORKSPACE file. Android tests will not be run."]]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub JAVAC_VERSION]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS get_java_version]}) ) (If (DBracket {B! {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub BAZEL_TEST_FILTERS test_op=VS_TEST_HYPHEN {}]]} {[DQ [LIT_CHARS -jdk8]]}}}) (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [LIT_CHARS 8]]} {[LIT_CHARS -gt]} {[VarSub JAVAC_VERSION transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*."]}]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub JAVA_VERSION]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS 1.7]]} {[LIT_OTHER "]"]}) ) (List (Com {[LIT_CHARS display]} {[DQ [VarSub WARNING][LIT_CHARS " Your version of Java is lower than 1.8!"]]}) (Com {[LIT_CHARS display]} {[DQ [VarSub WARNING][LIT_CHARS " Deactivating Java 8 tests, please use a JDK 8 to fully"]]}) (Com {[LIT_CHARS display]} {[DQ [VarSub WARNING][LIT_CHARS " test Bazel."]]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub BAZEL_TEST_FILTERS test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('BAZEL_TEST_FILTERS', {[DQ [VarSub BAZEL_TEST_FILTERS][LIT_CHARS ",-jdk8"]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('BAZEL_TEST_FILTERS', {[DQ [LIT_CHARS -jdk8]]})]) ) ) ) ) (AndOr OP_OR_IF (Com {[VarSub BAZEL]} {[LIT_CHARS --bazelrc] [LIT_OTHER "="] [VarSub BAZELRC]} {[LIT_CHARS --nomaster_bazelrc]} {[VarSub BAZEL_DIR_STARTUP_OPTIONS]} {[LIT_CHARS test]} {[LIT_CHARS --test_tag_filters] [LIT_OTHER "="] [DQ [VarSub BAZEL_TEST_FILTERS test_op=VS_TEST_HYPHEN {}]]} {[LIT_CHARS --build_tests_only]} {[LIT_CHARS --nolegacy_bazel_java_test]} {[LIT_CHARS --define]} {[LIT_VAR_LIKE "JAVA_VERSION="] [VarSub JAVA_VERSION] =} {[VarSub EXTRA_BAZEL_ARGS]} {[LIT_CHARS -k]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS errors]} {[LIT_CHARS //src/...]} {[LIT_CHARS //third_party/ijar/...]} {[LIT_CHARS //scripts/...]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Tests failed"]]}) ) ) ) (Com {[LIT_CHARS clear_log]}) (Com {[LIT_CHARS display]} {[DQ [LIT_CHARS "Build successful! Binary is here: "][VarSub BAZEL]]}) )