aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* Fix docstring variable expansion for @SkylarkModuleGravatar brandjon2018-03-12
| | | | | RELNOTES: PiperOrigin-RevId: 188712452
* Fix table of contents on query site.Gravatar dannark2018-03-12
| | | | | RELNOTES: None. PiperOrigin-RevId: 188711261
* remote: fix flakiness of HttpBlobStoreTest on Windows.Gravatar buchgr2018-03-12
| | | | | | | | Increase the connect timeout to 30 seconds Windows sometimes seems to need more time. RELNOTES: None PiperOrigin-RevId: 188702864
* Add RuleContext#getConfiguredTargetAndDataMap and use it in analysis/Util.Gravatar janakr2018-03-10
| | | | PiperOrigin-RevId: 188629293
* Make RuleContext#getSplitPrerequisiteConfiguredTargetAndTargets public and ↵Gravatar janakr2018-03-10
| | | | | | use it in android/NativeLibs. PiperOrigin-RevId: 188625886
* Fix broken links and formattingGravatar brandjon2018-03-10
| | | | | RELNOTES: None PiperOrigin-RevId: 188625855
* Add RuleContext#getPrerequisiteConfiguredTargetAndTarget and use it in ↵Gravatar janakr2018-03-10
| | | | | | GoTest to avoid calling ConfiguredTarget#getConfiguration. PiperOrigin-RevId: 188623273
* Replace some #getConfiguration calls coming from a TransitiveInfoCollection ↵Gravatar janakr2018-03-10
| | | | | | that was obtained from a ConfiguredTargetAndData object anyway. PiperOrigin-RevId: 188621245
* Get rid of non-class-based lookups for ObjectCodecs. There were basically no ↵Gravatar janakr2018-03-10
| | | | | | | | remaining non-test users (ErrorInfoEncoder was it). Should help to simplify our codec registration. I want to converge MemoizingCodec and ObjectCodec, and the unnecessary complexity around ObjectCodec registration is annoying. PiperOrigin-RevId: 188620988
* Open-source ImmutableMapCodec and make it able to handle arbitrary ↵Gravatar janakr2018-03-10
| | | | | | | | | | keys/values without injecting the codecs. Also allow it to handle ImmutableSortedMap, since we were always silently degrading to ImmutableMap for objects that weren't declared as ImmutableSortedMap, and there's no good way to handle non-natural comparators. This will lead to runtime failures if a class actually needs an ImmutableSortedMap with a different comparator than the natural one. This changes the semantics of ImmutableMap serialization. Previously, we went off the declared type. In the case of a declared ImmutableSortedMap, we ignored the comparator, potentially leading to incorrect serialization (new test added in AutoCodecProcessorTest that would have caught that). Moreover, declared ImmutableMaps were deserialized as ImmutableMaps even if they were actually ImmutableSortedMaps. Now, we preserve the ordering unconditionally, and preserve the type if possible. I think this is a better state to be in. This is needed to kill off MemoizingCodec, since MemoizingCodec has an ImmutableMapMemoizingCodec, which I want to get rid of in favor of this. PiperOrigin-RevId: 188619637
* Replace ConfiguredTargetAndData#getConfiguredTarget()#getConfiguration() ↵Gravatar janakr2018-03-10
| | | | | | with ConfiguredTargetAndData#getConfiguration(). Done using intellij structural replace. PiperOrigin-RevId: 188618282
* Make memoizing serialize and deserialize methods that take a codec ↵Gravatar janakr2018-03-10
| | | | | | package-private. PiperOrigin-RevId: 188610579
* Explicitly don't serialize/deserialize Package objects in ↵Gravatar janakr2018-03-10
| | | | | | ConfiguredTargetValue. The nested set of packages isn't usually set when serializing/deserializing, but it's good to be explicit, especially in tests. PiperOrigin-RevId: 188605043
* Update links to examplesGravatar brandjon2018-03-10
| | | | | | | See changes in https://github.com/bazelbuild/examples/pull/56 RELNOTES: None PiperOrigin-RevId: 188601311
* Add BuildConfiguration to ConfiguredTargetAndTarget and rename it to ↵Gravatar janakr2018-03-10
| | | | | | ConfiguredTargetAndData. We want to get BuildConfiguration out of ConfiguredTarget because it uses >800K when serialized. PiperOrigin-RevId: 188600002
* ActionOwner references only BuildEvent instead of full BuildConfigurationGravatar shahan2018-03-10
| | | | | | This reduces the size of its serialized representation. PiperOrigin-RevId: 188597127
* remote/http: support refresh of oauth2 tokens in the remote cache.Gravatar Jakob Buchgraber2018-03-10
| | | | | | Closes #4622. PiperOrigin-RevId: 188595430
* Allow ObjectCodecRegistry to handle MemoizingCodecs. Initially this is just ↵Gravatar janakr2018-03-09
| | | | | | | | | | | | | | | | Skylark memoization, but we may extend in future to handle more than just Skylark this way. In fact, we probably want most of our ObjectCodecs to be MemoizingCodecs that can efficiently fall back to ObjectCodec if not using memoization (maybe coming in a follow-up). At a high level, this CL merges the functionality of MemoizingCodecMap into ObjectCodecRegistry, adds auto-registration of MemoizingCodec, and uses that to get rid of a lot of codecs that were just delegating. The big one to get rid of there is SkylarkValueCodec: all of its delegation duties are implicitly now in ObjectCodecRegistry and friends. One danger with this CL is that many of the features of Skylark serialization are only being tested in unit tests, which had to be reworked as part of this change. I don't think we've lost any coverage, but I could be wrong. SkylarkValueCodec had a bunch of methods that were effectively test-only, which made it easier to remove. The plan is to provide a Memoizer.Serializer inside the SerializationContext. At the top level, it will be a DUMMY_SERIALIZER that does no memoization, but a MemoizingCodec can do context = context.ensureMemoizing() which will recreate the context with a true memoizing serializer. Then all references to the Serializer in codec code can be cleaned up, and the MemoizingCodec and ObjectCodec signatures will be the same. At that point, we can make all ObjectCodecs compatible with memoization by default (with strategy MEMOIZE_AFTER), and add a "memoize" boolean to @AutoCodec. That should allow us to have full interoperability between all codecs. This CL also makes CodecScanner deterministic in the order of classes that it processes (there was a lurking bug here where constants must be deterministically ordered but that wasn't enforced at all). PiperOrigin-RevId: 188559983
* Remove cycle error reporting from query results since they're not strictly ↵Gravatar juliexxia2018-03-09
| | | | | | relevant and only trigger when the implicit or explicit max depth > 20 which is confusing. PiperOrigin-RevId: 188559702
* Use RuleContext.getConfiguration() instead of ↵Gravatar janakr2018-03-09
| | | | | | | | RuleConfiguredTarget.getConfiguration(), since we have it handy. We'd like to get rid of BuildConfiguration from RuleConfiguredTarget. PiperOrigin-RevId: 188545048
* Support for passing options to LTO Backend actions onlyGravatar Googler2018-03-09
| | | | | | | | This is very useful for debugging and performance tuning. RELNOTES[NEW]: Adds --ltobackendopt and --per_file_ltobackendopt for passing options to ThinLTO LTO backend compile actions only. PiperOrigin-RevId: 188521075
* Add the ability to reconstruct a BuildOptions from the diff with another ↵Gravatar janakr2018-03-09
| | | | | | BuildOptions. Motivation is that the diffs are likely to be much smaller than the actual BuildOptions objects themselves, so in places we need a BuildOptions (I'm looking at you, BuildConfigurationValue.Key), we can instead store a diff, reconstructing the BuildOptions object itself on demand when needed. PiperOrigin-RevId: 188511251
* Improve the warning for malformed recursive configs.Gravatar ccalvarin2018-03-09
| | | | | | | | | Unlike in fixed-point (legacy) expansion of configs, with --expand_configs_in_place we do not use the options parser to parse each config-definition default override - we first find the full expansion and then expand it in place of the original --config=value instance. For this reason though, we don't support space-separation of recursive configs and their values. The old warning for this was confusing though, and did not provide much guidance. This should be better, now the warning specifies which config is malformed, in what file, and that it expects the "=" character. RELNOTES: None. PiperOrigin-RevId: 188509060
* Rename BuildOptionsTest method names to be more succinct.Gravatar janakr2018-03-09
| | | | PiperOrigin-RevId: 188503085
* Added asteinb's Android Builds blogpost to the Android and Bazel pageGravatar Jingwen Chen2018-03-09
| | | | | | Closes #4693. PiperOrigin-RevId: 188488139
* Enable static_linking_mode or dynamic_linking_mode features from cc_binaryGravatar hlopko2018-03-09
| | | | | RELNOTES: CppRules: cc_binary/cc_test now enable 'static_linking_mode' or 'dynamic_linking_mode'. PiperOrigin-RevId: 188482267
* Update cpp-use-cases.mdGravatar aolivas2018-03-09
| | | | | | | | | | | | | I wasn't able to build a simple 'hello-world' example with an identical structure. I encountered several problems: 1) bazel forces to declare a license for code within the 'third_party' sub-directory. This not at all obvious to noobs. 2) bazel complains about a missing input file 'some_lib.h' without the leading 'include' in hdrs and the build fails. 3) compilation throws "No such file or directory" when trying to include 'some_lib.h' with the trailing 'include' in copts. I think this is particularly important for converting legacy projects (not necessarily third party) that use cmake, autoconf, etc... Closes #4697. PiperOrigin-RevId: 188471650
* tests: fix flaky RecursiveFSTraversalFunctionTestGravatar Laszlo Csomor2018-03-09
| | | | | | | | | | | | | | | | | | Fix the testTraversalOfGeneratedDirectory method in RecursiveFilesystemTraversalFunctionTest that was flaky on Windows. The fix is to wait so that changes to files in the InMemoryFileSystem will have observable effects on the file ctimes. Depends on https://github.com/bazelbuild/bazel/pull/4787 Fixes https://github.com/bazelbuild/bazel/issues/4755 Closes #4788. PiperOrigin-RevId: 188470080
* tests: fix flaky FilesystemValueCheckerTestGravatar Laszlo Csomor2018-03-09
| | | | | | | | | | | | | Fix FilesystemValueCheckerTest.testExplicitFiles() by ensuring that the filesystem timestamp granularity has elapsed before attempting to update the files. Fixes https://github.com/bazelbuild/bazel/issues/4755 Closes #4786. PiperOrigin-RevId: 188467381
* Internal changeGravatar Laszlo Csomor2018-03-09
| | | | PiperOrigin-RevId: 188459395
* tests: fix flaky SkyframeAwareActionTestGravatar Laszlo Csomor2018-03-09
| | | | | | | | | | | | | Fix testCacheBypassingActionWithMtimeChangingInput in SkyframeAwareActionTest by ensuring that enough time elapses between file updates so their effects are observable on the file's ctime. Fixes https://github.com/bazelbuild/bazel/issues/4755 Closes #4787. PiperOrigin-RevId: 188458542
* Automated rollback of commit 3edf41b70de9bb1a8702d0342beeb2ad13898d71.Gravatar philwo2018-03-09
| | | | | | | | | | | | | | | | | | | | | *** Reason for rollback *** Rollback was requested by original authors @hmemcpy and @ittaiz in #3201: "We found a problem with this patch... seems that tests that are added dynamically by the test runner (in our case, specs2 'examples' that are generated with Fragments.foreach) do not appear in the xml!" This should be part of 0.12.0-rc1, otherwise that release will have the above mentioned regression. *** Original change description *** Skipping writing FILTERED tests to test.xml This fixes #3201 by preventing tests that haven't actually run to be written to the test.xml. This is consistent with how e.g. surefire reports work, tests that were filtered out do not appear in the xml. This allows changing the Bazel plugin in such a way that does not depend on `time` being 0.0. Closes #4596. PiperOrigin-RevId: 188455315
* runfiles,py,java: rlocation accepts absolute pathGravatar Laszlo Csomor2018-03-09
| | | | | | | | | | | | | | | | | | | | | The rlocation functions in the Python and Java runfiles libraries (under @bazel_tools//tools/runfiles) now consistently return the argument itself if it is an absolute path. If the argument is a driveless absolute Windows path (e.g. "\\windows\\system32") then rlocation reports an error. See https://github.com/bazelbuild/bazel/issues/4460 Change-Id: I80474f7cc4736a571bf113438a916f71c36a344d Closes #4806. Change-Id: I80474f7cc4736a571bf113438a916f71c36a344d PiperOrigin-RevId: 188453982
* Optimize GC churn of parameter bindings performed before each user defined ↵Gravatar nharmata2018-03-08
| | | | | | | | | | | | | | | function call. This is the 2nd attempt at this commit. The first attempt (https://github.com/bazelbuild/bazel/commit/f1013485d41efd8503f9d4f937e17d1b4bc91ed3) was rolled back because it introduced the following two bugs: (1) The side effects of Environment#enterScope are relevant: it creates and stores a new Continuation that has a reference to the set currently referenced by 'knownGlobalVariables', and then overwrites the value of the variable. When there are e.g. nested function calls, 'knownGlobalVariables' will be wrong in the Environment used to stage the inner call (see the added test for an example). (2) The finally block in UserDefinedFunction#call assumes the env.enterScope was called. Because of the EvalException (incorrectly) thrown due to (1), this is no longer true. I restructured the code such that (2) isn't possible and I also added a unit test that would have caught the two bugs. In my first attempt, I was doing too much - I was also trying to save the CPU-costs in the env.update call (dispatches to the just-created lexical frame, and calls LexicalFrame#put, which does an unnecessary mutability sanity check, etc) and in doing so completely missed the above bugs. Sorry. RELNOTES: None PiperOrigin-RevId: 188411737
* Add the flag --experimental_import_deps_checking to control the dependencyGravatar cnsun2018-03-08
| | | | | | | checking for aar_import and java_import targets. RELNOTES:None. PiperOrigin-RevId: 188399775
* Add a flag to control whether to treat missing dependencies as errors orGravatar cnsun2018-03-08
| | | | | | | warnings (--emit_errors or --noemit_errors). RELNOTES:None. PiperOrigin-RevId: 188397338
* Delete unused test runner script.Gravatar kaipi2018-03-08
| | | | PiperOrigin-RevId: 188375134
* Remove all dynamic type checking overhead for struct field accesses. These ↵Gravatar nharmata2018-03-08
| | | | | | | checks are unnecessary by construction; see the codepaths that construct SkylarkInfo instances. RELNOTES: None PiperOrigin-RevId: 188373688
* Tag SkylarkComputedDefault with @AutoCodecGravatar mjhalupka2018-03-08
| | | | PiperOrigin-RevId: 188367892
* Tag SkylarkType with @AutoCodec.Gravatar mjhalupka2018-03-08
| | | | PiperOrigin-RevId: 188367672
* Add missing "dump" command link from Bazel user manual.Gravatar gregce2018-03-08
| | | | PiperOrigin-RevId: 188362796
* Add unit tests for rc parsing.Gravatar ccalvarin2018-03-08
| | | | | | | | | | | | | | | | | These provide some testing for the following cases: - tokenization - recognizing comments - grouping of different lines by command - import ordering - import cycles - bad imports There's still room for more, in particular in the multi-command case, but this feels like a good start. Also identified some surprising behaviors that should be fixed. Leaving them tested as documentation of their broken nature. RELNOTES: None. PiperOrigin-RevId: 188355929
* As a micro-optimization, inline the "Callstack.enabled" guard. The java-land ↵Gravatar nharmata2018-03-08
| | | | | | | | | function call overhead of the morally no-op Callstack#push/pop was profiled to be ~1.4% CPU in a benchmark of loading a BUILD file that was particularly heavy in Skylark function calls. Alternatives considered: writing code that I hoped would be more amenable to the JIT choosing to inline the function call. I couldn't get this to work. RELNOTES: None PiperOrigin-RevId: 188350132
* Intern CollectTargetsInPackagKey. Bug from ↵Gravatar janakr2018-03-08
| | | | | | https://github.com/bazelbuild/bazel/commit/5fb2a487e53cc3d80e3654d5b63d062f7f70588b. PiperOrigin-RevId: 188348546
* Add an interface to interact with sandboxfs.Gravatar jmmv2018-03-08
| | | | | | | | | | | | | | | | The new SandboxfsProcess interface allows interacting with sandboxfs. There are two implementations: RealSandboxfsProcess, which spawns the sandboxfs binary, and FakeSandboxfsProcess, which mimics what sandboxfs does but using symlinks and is intended for testing purposes only. The RealSandboxfsProcess implementation works but still carries many TODOs. The most "painful" one may be that the test requires manual invocation because we do not yet have an easy way to integrate with sandboxfs. That will be solved later on; for now this is sufficient for initial testing. RELNOTES: None. PiperOrigin-RevId: 188347393
* Remove unnecessary I/O operations from handling remotely executed actions ↵Gravatar olaola2018-03-08
| | | | | | | | (fixes performance regression #4749). Also adding Skylark tests for input/output directories. TESTED=locally RELNOTES: Fix performance regression PiperOrigin-RevId: 188346410
* Remove unnecessary space in error message.Gravatar ajmichael2018-03-08
| | | | | RELNOTES: None PiperOrigin-RevId: 188341095
* update to MethodDescriptor methods instead of fieldsGravatar Carl Mastrangelo2018-03-08
| | | | | | | | @buchgr Closes #4790. PiperOrigin-RevId: 188332795
* tests,windows: enable skylarkinterface/processor:*Gravatar Laszlo Csomor2018-03-08
| | | | | | | | | | | | | | Add these tests to the transitive closure of //src:all_windows_tests thus run them on CI. See https://github.com/bazelbuild/bazel/issues/4292 Change-Id: Iae0bd925bdde2921fb0b2d4222b81fcecb28dea3 Closes #4800. Change-Id: Iae0bd925bdde2921fb0b2d4222b81fcecb28dea3 PiperOrigin-RevId: 188324317
* tests,windows: enable android.desugar.runtimeGravatar Laszlo Csomor2018-03-08
| | | | | | | | | | | | Add the c.g.d.build.android.desugar.runtime tests to the transitive closure of //src:all_windows_tests, thus running them on CI. See https://github.com/bazelbuild/bazel/issues/4292 Closes #4796. PiperOrigin-RevId: 188312286