aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
Commit message (Collapse)AuthorAge
* Replaces JavaSerializableCodec with DynamicCodec as the defaultGravatar shahan2018-04-04
| | | | | | | | | * Skylark serialization was previously dropping location in error, which this fixes. * Deletes a lot of codecs with fidelity issues (DynamicCodec has full fidelity). * Deletes EnumRuntimeCodec which can now be replaced with the superior EnumCodec. * This should eventually allow us to delete Serializable from all Blaze. The remaining blocker is NoSuchPackageExceptionCodec. PiperOrigin-RevId: 191603929
* Fix crash from mobile-install with --device but no --adb_args.Gravatar ajmichael2018-04-04
| | | | | | | Fixes #4922. RELNOTES: None PiperOrigin-RevId: 191602647
* Delete unused method.Gravatar twerth2018-04-04
| | | | | RELNOTES: None PiperOrigin-RevId: 191595705
* Add a getTargetOS() method for compatibility with things internal to GoogleGravatar Googler2018-04-04
| | | | PiperOrigin-RevId: 191583639
* C++: Migrate CppRunfilesProvider to new provider styleGravatar plf2018-04-04
| | | | | RELNOTES:none PiperOrigin-RevId: 191576814
* C++: Migrate CcExecutionDynamicLibrary to new provider styleGravatar plf2018-04-04
| | | | | RELNOTES:none PiperOrigin-RevId: 191574019
* Make the "output files of compilation" file group official.Gravatar lberki2018-04-04
| | | | | | | This is so that callers of Blaze can tell languages implemented in Skylark (e.g. TypeScript) to do compilation only, just like they can with e.g. C++. RELNOTES: None. PiperOrigin-RevId: 191570604
* Don't do serialization of empty/singleton nested sets into a child ↵Gravatar janakr2018-04-03
| | | | | | | | | | CodedOutputStream. It creates immense amounts of garbage and we don't ever use the result: it's only used for Object[] children anyway. We can consider removing the child CodedOutputStream entirely and relying on normal serialization memoization, but for now, let's just do the simple thing. Also fix a weird code-only bug that had been there since NestedSetCodec was written (I think): NestedSet.EMPTY_CHILDREN is an Object[], and therefore we never took the fast path of just writing 0 and moving on. While the code as written was misleading, the bits written to the output stream were the same, until this change, when there was a divergence. PiperOrigin-RevId: 191520712
* Disable nested set sharing across multiple nested set deserialization ↵Gravatar janakr2018-04-03
| | | | | | | | sessions. This is incorrect in the presence of memoization: a single element may be serialized as just a pair of integers (type + memoization index). Lots of different nested sets may contain elements that are serialized this way, so they will have the same digests. We could consider doing a parallel hash computation, but for now just disable. This is not a full rollback of https://github.com/bazelbuild/bazel/commit/39cef6d6a4a9e3ae80b11a9ccc0f35325852777c since there was a refactoring in it that it doesn't seem worth it to roll back. PiperOrigin-RevId: 191509089
* BazelPackageLoader to be invoked on additional tests.Gravatar carmi2018-04-03
| | | | | | | I originally blacklisted BazelPackageLoader on some tests because they became flaky with it. RELNOTES: None PiperOrigin-RevId: 191504852
* Create BAZEL_DIE macro.Gravatar ccalvarin2018-04-03
| | | | | | | Will migrate die() instances in a later change, to keep this one clean. RELNOTES: None. PiperOrigin-RevId: 191491701
* Tag SkylarkImpilicitOutputsFunctionWithCallback with @AutoCodec.Gravatar mjhalupka2018-04-03
| | | | PiperOrigin-RevId: 191488180
* Also add blaze-bin directory for "includes" attributeGravatar Googler2018-04-03
| | | | | | | | This fixes cc_library rules for third-party packages using generated headers in blaze-bin. RELNOTES: None. PiperOrigin-RevId: 191485462
* Calculate outputNames for different types of sources separatelyGravatar pcloudy2018-04-03
| | | | | | | | | | | | | For example: in cc_library( name = "lib", srcs = ["lib.h", "lib.cc"], ) lib.h and lib.cc have the same base name, but they should not be considered as conflict. RELNOTES: PiperOrigin-RevId: 191485223
* Tag DirectTraversal with @AutoCodec.Gravatar mjhalupka2018-04-03
| | | | PiperOrigin-RevId: 191484639
* Don't hold on to full byte array when deserializing protocol buffers.Gravatar janakr2018-04-03
| | | | PiperOrigin-RevId: 191483825
* Update docs for the --test_timeout value.Gravatar Googler2018-04-03
| | | | | RELNOTES: None. PiperOrigin-RevId: 191480343
* only declare "$import_deps_checker" implicit dependency on aar_importGravatar kmb2018-04-03
| | | | PiperOrigin-RevId: 191475357
* PiperOrigin-RevId: 191474411Gravatar kmb2018-04-03
|
* Move proto-related options up a level to common query options. This is part ↵Gravatar juliexxia2018-04-03
| | | | | | of several CLs which implement proto output with cquery. PiperOrigin-RevId: 191460698
* PiperOrigin-RevId: 191459280Gravatar Googler2018-04-03
|
* Fix build results for aspect builds.Gravatar tomlu2018-04-03
| | | | | | | | | The current output was pretty much completely incorrect. However since the result output was always hidden for the default value of --show_result, users simply didn't see the incorrect output (instead getting no output at all). This CL fixes both the --show_result problem and makes the output correct. RELNOTES: Print correct build result for builds with --aspects flag. PiperOrigin-RevId: 191456352
* Create a new ConfiguredTarget message in the analysis proto and add the ↵Gravatar juliexxia2018-04-03
| | | | | | checksum representation of BuildConfigurations to the Configuration message. PiperOrigin-RevId: 191447098
* Isolate C++ link build variablesGravatar hlopko2018-04-03
| | | | | | | | | | | | | This is a preparation work to expose Variables instance for all link actions to Skylark. Compile build variables were done in https://github.com/bazelbuild/bazel/commit/31ab0b88ec52f293e713b9369ea4a706b6c0a57d. This is also in line with our goal to make build variables more discoverable and better document. RELNOTES: None. PiperOrigin-RevId: 191446799
* C++: Rename CcCompilationInfo to CcCompilationContextInfo.Gravatar plf2018-04-03
| | | | | | | | | This is done so that the name CcCompilationInfo can be used for the C++ provider that will wrap all providers for compilation, similar to JavaInfo in Java. RELNOTES:none PiperOrigin-RevId: 191445120
* Automated rollback of commit e8bed799d59526541afa2a0e9ef5d4c49e3ba390.Gravatar corysmith2018-04-03
| | | | | | | | | | | | | | | | | | | | | | *** Reason for rollback *** Rolling forward with improved handling and testing for Styleables, and correct package management. *** Original change description *** Automated rollback of commit a76f7db51a90cc2e35c1d66782056c310729eef0. *** Reason for rollback *** Breaks Kix. *** Original change description *** Modify the .flat decompilation to account for multiple configurations by converting the aapt2 proto ConfigValue to a FolderConfiguration. Adds new aapt2 compiled deserialization test. RELNOTES: None PiperOrigin-RevId: 191444658
* Add stats about cache hits and execution strategies to Bazel's UI.Gravatar Googler2018-04-03
| | | | | | | Fixes: 2846 RELNOTES: Bazel now displays information about remote cache hits and execution strategies used in its UI after every build and test, and adds a corresponding line "process stats" to BuildToolLogs in BEP. PiperOrigin-RevId: 191441770
* Add methods to parse resources without assetsGravatar asteinb2018-04-03
| | | | | | | | | | | | | | - Add ParsedAndroidResources to wrap AndroidResources and resource parsing output. - Implement parse() method in AndroidResources, and support for it elsewhere - Move some supporting methods to the right place (setting up an aapt2 sdk for tests goes to the base test rule, and creating a dummy DataBinding zip goes to the DataBinding class). - Tests for new parse() method, including support for getting a test RuleContext instance RELNOTES: none PiperOrigin-RevId: 191436027
* Remove the unused method IdleServerTasks#continueProcessing() .Gravatar lberki2018-04-03
| | | | | | | IdleServerTasks could probably be implemented in a much simpler way, but let's keep this change a simple deletion. One step at a time. RELNOTES: None. PiperOrigin-RevId: 191418738
* Make the BUILD_TIMESTAMP build info entry contain the number of seconds ↵Gravatar lberki2018-04-03
| | | | | | | | | | | (instead of milliseconds) since the epoch. This fixes the build stamp data in Bazel itself and is also consistent with what we do internally at Google. Fixes https://github.com/bazelbuild/bazel/issues/4469 . RELNOTES[INC]: BUILD_TIMESTAMP now contains seconds (and not milliseconds) since the epoch. PiperOrigin-RevId: 191418132
* Remove CcToolchainProvider#getEnvironment() and all the supporting ↵Gravatar lberki2018-04-03
| | | | | | | | | | | infrastructure. This was added in unknown commit to provide a different environment to Apple toolchains, then its use removed in unknown commit in favor of getting the environment variables from the CToolchain proto. I haven't done my research if that's a better approach, but it looks like it (the less hard-coded stuff we have in Java, the better), but worst of all is surely to have *two* such mechanisms. RELNOTES: None. PiperOrigin-RevId: 191411878
* Remove Android jar from android_local_test bootclasspathGravatar ajmichael2018-04-02
| | | | | | | | | Instead, treat it as a regular compile-time library dependency. This fixes Java8 compilation in android_local_test. RELNOTES: None PiperOrigin-RevId: 191359834
* Remove some unnecessary params.Gravatar nharmata2018-04-02
| | | | | RELNOTES: None PiperOrigin-RevId: 191354727
* Serialize PythonUtils#GET_INIT_PY_FILES as a singleton so that object equalityGravatar cpeyser2018-04-02
| | | | | | holds in the check in Runfiles.Builder#merge. PiperOrigin-RevId: 191341008
* Moves the decision to enable memoization from codecs to the top-level ↵Gravatar shahan2018-04-02
| | | | | | | | invocation. Also, makes it benign to registerInitialValue when memoization is disabled. PiperOrigin-RevId: 191338253
* Add noneable=true to several parameters of list and dict methodsGravatar cparsons2018-04-02
| | | | | RELNOTES: None. PiperOrigin-RevId: 191329591
* Add codec for ImmutableMultimap.Gravatar cpeyser2018-04-02
| | | | PiperOrigin-RevId: 191323243
* Automated rollback of commit 9bfbefc13f2b6ae9a86fd46a8470e3b4cd8efd1a.Gravatar asteinb2018-04-02
| | | | | | | | | | | | | | *** Reason for rollback *** Roll forward with fix and test - turns out I didn't distinguish properly between list and item seperators. *** Original change description *** Rollback "Allow Merge action to take an interface as primary, not just ResourceContainer", as it breaks some android rule integration tests. RELNOTES: none PiperOrigin-RevId: 191322706
* Deduplicate the list of valid CPUsGravatar Googler2018-04-02
| | | | | RELNOTES: None. PiperOrigin-RevId: 191320863
* Rollback "Allow Merge action to take an interface as primary, not just ↵Gravatar cparsons2018-04-02
| | | | | | | ResourceContainer", as it breaks some android rule integration tests. RELNOTES: none PiperOrigin-RevId: 191304264
* Create proguard.txt in android_library AAR output.Gravatar ajmichael2018-04-02
| | | | | | | | | The proguard.txt is the concatenation of the proguard_specs on the android_library rule itself. Note that it does not include transitively defined proguard_specs. Fixes https://github.com/bazelbuild/bazel/issues/4467 RELNOTES: android_library AAR output now contains proguard.txt PiperOrigin-RevId: 191302610
* Change profiling to only accept strings for its "description" argument. ↵Gravatar janakr2018-04-01
| | | | | | Profiling can hold onto objects for the duration of the build, and some of those objects may be temporary that should not be persisted. In particular, UnixGlob and its inner classes should not outlive loading and analysis. For the most part, care was taken in this CL to only use strings that required no additional construction, mainly to minimize garbage (retaining references to newly created strings is not as great a concern since only the strings corresponding to the slowest K tasks are retained, for some relatively small values of K). Action descriptions for actually executing actions are eagerly expanded because that work is minimal compared to the work of actually executing an action. PiperOrigin-RevId: 191251488
* Enable bulk writes in the HttpBlobStoreGravatar ulfjack2018-04-01
| | | | | | | | | | Second attempt of https://github.com/bazelbuild/bazel/commit/0654620304728a5aecadd58138e96c41135d24e7, which I am rolling back. The problem is that FilterOutputStream.write is just plain wrong and we shouldn't inherit FilterOutputStream at all, but instead do it manually (which actually requires less code). This was a performance regression in https://github.com/bazelbuild/bazel/commit/deccc485603c004daad959fd747f1c0c9efc4f00. Fixed #4944. PiperOrigin-RevId: 191215696
* build and test KeepScanner tool open-sourceGravatar kmb2018-03-30
| | | | PiperOrigin-RevId: 191159996
* BEP: Cached test actions post execution info from TestResultGravatar ulfjack2018-03-30
| | | | | | Currently, the TestResult does not have an execution info, but that may change in the future. PiperOrigin-RevId: 191148241
* BEP: Report the correct exit code for blaze coverageGravatar ulfjack2018-03-30
| | | | | | The BuildEventStreamer was checking the command name for the exact string "test" for test-specific handling, even though coverage is also a test command. PiperOrigin-RevId: 191137755
* Automated rollback of commit 0654620304728a5aecadd58138e96c41135d24e7.Gravatar ulfjack2018-03-30
| | | | | | | | | | | | | | | | *** Reason for rollback *** Not a proper fix. *** Original change description *** Enable bulk writes in the HttpBlobStore This was a performance regression in https://github.com/bazelbuild/bazel/commit/deccc485603c004daad959fd747f1c0c9efc4f00. Fixed #4944. PiperOrigin-RevId: 191133416
* Don't test for reference equality of the underlying IOException. It's ↵Gravatar nharmata2018-03-30
| | | | | | | overkill for these unit tests. RELNOTES: None PiperOrigin-RevId: 191122418
* Improve performance and output of bazel_determinism_test.Gravatar Philipp Wollermann2018-03-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't ask me how so many things can be wrong in a single test... Progress towards #4770. FYI @rupertks @buchgr @ulfjack ## Replace 25000 invocations of perl with a single "sha256sum" This speeds up the test by a factor 2x on my iMac (before: 1200s, now: 600s). On macOS, "shasum" is a Perl script. Instead of simply passing all input files to the thing at once, we were invoking it once per file. This means roughly 25,000 invocations of Perl per test run. And it's even worse - it wasn't just a call to that Perl script, it was wrapped in a "cat | shasum | cut" pipeline, resulting in silent data loss when you accidentally passed multiple input files to the thing, 75,000 processes being spawned just to compute hashes and losing the file name of what was actually hashed. WTF. Also, we were using SHA256 to essentially verify that two directory trees are equal. For this purpose, relying on SHA1 should be absolutely fine - and that is, provided by a good native implementation, four times faster than `shasum`. It saves another 10 seconds of the overall run. With this change, the test also prints the result of a failed determinism check in an easier to read format "filename hash" instead of "hash filename" and on top of that, it also prints the filenames in the diff on macOS, which was missing formerly. Without this, it was basically impossible to debug failures of this test on macOS, as you couldn't see *which files were different*. You had *one* job, bazel_determinism_test. Before: ``` -- Test log: ----------------------------------------------------------- --- /private/var/tmp/_bazel_buildkite/30004132848cb6cbb0d8bc124cd9712b/bazel-sandbox/8820973750646175047/execroot/io_bazel/_tmp/e503f3f3df14b71e247bc3d7d9bf3608/sum1 2018-03-28 18:00:43.000000000 +0000 +++ /private/var/tmp/_bazel_buildkite/30004132848cb6cbb0d8bc124cd9712b/bazel-sandbox/8820973750646175047/execroot/io_bazel/_tmp/e503f3f3df14b71e247bc3d7d9bf3608/sum2 2018-03-28 18:10:34.000000000 +0000 @@ -10417,0 +10418 @@ +ecd53ba69a8d479d3fa4234e959f869cd10f7ebc68860d2b7915879f8b8b2c54 @@ -10605 +10605,0 @@ -f1954b59039b74d0a0ee3b2bced748604b95b8455a5bf80489296bd81878a5c8 ------------------------------------------------------------------------ ``` Now (I artificially introduced non-hermeticism to show how a failure would look like): ``` -- Test log: ----------------------------------------------------------- --- /private/var/tmp/_bazel_philwo/7a01905b4627ca044e5e3f5ad5b14d26/bazel-sandbox/5464595340038418595/execroot/io_bazel/_tmp/e503f3f3df14b71e247bc3d7d9bf3608/sum1 2018-03-30 17:12:39.000000000 +0000 +++ /private/var/tmp/_bazel_philwo/7a01905b4627ca044e5e3f5ad5b14d26/bazel-sandbox/5464595340038418595/execroot/io_bazel/_tmp/e503f3f3df14b71e247bc3d7d9bf3608/sum2 2018-03-30 17:17:27.000000000 +0000 @@ -903 +903 @@ -bazel-bin/src/bazel 31d811338ca364f0631560dd4d29406dd6a778ce +bazel-bin/src/bazel 8f009173894730b00a1d1d6349af7d10f4d21cf3 @@ -5656 +5656 @@ -bazel-bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar f5ec8c4415ad8ecdc0385affc68f2dd4dbf241ef +bazel-bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar 9899ae35cf431087a34a830bfdaf19d99616689c @@ -8343 +8343 @@ -bazel-bin/src/main/java/com/google/devtools/build/lib/worker/_javac/worker/libworker_classes/com/google/devtools/build/lib/worker/WorkerFactory.class 780baa17c19ef99ef0b9291db1791ed8e0f1b231 +bazel-bin/src/main/java/com/google/devtools/build/lib/worker/_javac/worker/libworker_classes/com/google/devtools/build/lib/worker/WorkerFactory.class d45c14f09e73e7fcdf01f96aa32646c87b704bc2 @@ -8359 +8359 @@ -bazel-bin/src/main/java/com/google/devtools/build/lib/worker/libworker.jar 60e3afbfec17da7e44c1f0f61cf2a446196717be +bazel-bin/src/main/java/com/google/devtools/build/lib/worker/libworker.jar 70f557e87d1b32b2e46c79554fe6bf3b89aeaf6e @@ -11343 +11343 @@ -bazel-genfiles/src/install_base_key 3fad754e4ea19bd1120df5bf16e1f39372e6b9fe +bazel-genfiles/src/install_base_key 7d7e8b62493912c5ec153032e104640e3980e6b3 @@ -11376 +11376 @@ -bazel-genfiles/src/package.zip 1ce3431b021ca338806162eca72ff84118001df5 +bazel-genfiles/src/package.zip 65f4801d91bbe10cba0d2d4d55c7cf319cd6722d ------------------------------------------------------------------------ test_determinism FAILED: Non-deterministic outputs found! . ``` ## Remove obsolete check for BAZEL_TEST_XTRACE That string does not appear anywhere in our repo, except for these two lines in the test, so there's no point in checking for it. ## Remove obsolete check for Java 7 That was about time. ## Performance improvements and usability fixes - There's no need to use mktemp to create a unique directory under TEST_TMPDIR, as every test suite has its own TEST_TMPDIR. - There's no need to remove stuff, as this will just degrade performance and make debugging harder. The surrounding Bazel or system will clean up later. - There's no need to copy bazel-bin/src/bazel to ./bazel1 before calling it, as you can just call the built bazel from its original location. - There's no need to run "bazel clean" before the second "bazel build" invocation - it's better to just use two separate output_bases. This is faster and also makes debugging easier, as you can compare the two output_bases in case of a test failure. - There's no need to call "diff" twice - we can just save the output immediately in the `if` block. Closes #4945. PiperOrigin-RevId: 191118833
* Migrate SkylarkDict and MutableList methods to use @SkylarkCallable instead ↵Gravatar cparsons2018-03-30
| | | | | | | of @SkylarkSignature. RELNOTES: None. PiperOrigin-RevId: 191112273