| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
| |
ConfiguredTargetAndData. We want to get BuildConfiguration out of ConfiguredTarget because it uses >800K when serialized.
PiperOrigin-RevId: 188600002
|
|
|
|
|
|
| |
This reduces the size of its serialized representation.
PiperOrigin-RevId: 188597127
|
|
|
|
|
|
| |
Closes #4622.
PiperOrigin-RevId: 188595430
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
relevant and only trigger when the implicit or explicit max depth > 20 which is confusing.
PiperOrigin-RevId: 188559702
|
|
|
|
|
|
|
|
| |
RuleConfiguredTarget.getConfiguration(), since we have it handy.
We'd like to get rid of BuildConfiguration from RuleConfiguredTarget.
PiperOrigin-RevId: 188545048
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
PiperOrigin-RevId: 188503085
|
|
|
|
|
| |
RELNOTES: CppRules: cc_binary/cc_test now enable 'static_linking_mode' or 'dynamic_linking_mode'.
PiperOrigin-RevId: 188482267
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
PiperOrigin-RevId: 188459395
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
checking for aar_import and java_import targets.
RELNOTES:None.
PiperOrigin-RevId: 188399775
|
|
|
|
|
|
|
| |
warnings (--emit_errors or --noemit_errors).
RELNOTES:None.
PiperOrigin-RevId: 188397338
|
|
|
|
|
|
|
| |
checks are unnecessary by construction; see the codepaths that construct SkylarkInfo instances.
RELNOTES: None
PiperOrigin-RevId: 188373688
|
|
|
|
| |
PiperOrigin-RevId: 188367892
|
|
|
|
| |
PiperOrigin-RevId: 188367672
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
https://github.com/bazelbuild/bazel/commit/5fb2a487e53cc3d80e3654d5b63d062f7f70588b.
PiperOrigin-RevId: 188348546
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
(fixes performance regression #4749). Also adding Skylark tests for input/output directories.
TESTED=locally
RELNOTES: Fix performance regression
PiperOrigin-RevId: 188346410
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 188341095
|
|
|
|
|
|
|
|
| |
@buchgr
Closes #4790.
PiperOrigin-RevId: 188332795
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
This is to avoid listing them in the Bazel docs for now.
RELNOTES:none
PiperOrigin-RevId: 188295824
|
|
|
|
|
|
|
|
|
|
| |
along the wall time of the load, even when the package in question was in PackageFunction's
internal cache (e.g. the current #compute call is a PackageFunction Skyframe restart).
Also clarify the intent of the 'loadTimeMs' param in #onLoadingComplete.
RELNOTES: None
PiperOrigin-RevId: 188253198
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Introduced a bug in skylark that caused intellij TAP test to fail. The bug was not caught by any skylark/blaze/bazel tests.
*** Original change description ***
Optimize GC churn of parameter bindings performed before each user defined function call.
RELNOTES: None
PiperOrigin-RevId: 188249713
|
|
|
|
|
|
|
|
|
| |
Certain C++ stdlib wrapper headers are unable to find their C counterparts (e.g. math.h for cmath) that are in %ndk%/sysroot/usr/include. This is because the -isystem for the include path was added with addCompilerFlag instead of addUnfilteredCxxFlag. The former is filtered out when compiling C code, whereas the latter keeps it.
Fixes https://github.com/bazelbuild/bazel/issues/4777
RELNOTES: None.
PiperOrigin-RevId: 188241254
|
|
|
|
|
| |
RELNOTES: None.
PiperOrigin-RevId: 188225156
|
|
|
|
|
| |
RELNOTES: None.
PiperOrigin-RevId: 188221536
|
|
|
|
|
| |
RELNOTES: None.
PiperOrigin-RevId: 188217409
|
|
|
|
| |
PiperOrigin-RevId: 188212286
|
|
|
|
|
| |
RELNOTES: None.
PiperOrigin-RevId: 188201686
|
|
|
|
|
|
|
| |
function call.
RELNOTES: None
PiperOrigin-RevId: 188199514
|
|
|
|
|
|
|
|
| |
Until we properly support checking the contents of these files, don't try to do
so.
RELNOTES: none
PiperOrigin-RevId: 188192286
|
|
|
|
|
|
|
| |
This was migrated incorrectly, as there's a semantic difference between @Param for @SkylarkSignature and for @SkylarkCallable, it would appear.
RELNOTES: None.
PiperOrigin-RevId: 188190409
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 188179200
|
|
|
|
|
|
|
|
| |
Very thin wrapper, nothing except swallow+log all errors.
TESTED=presubmit
RELNOTES: None
PiperOrigin-RevId: 188177872
|
|
|
|
|
|
|
| |
files for include statments. This binary is currently only used for an internal feature - but that feature may be supported externally eventually.
RELNOTES: None
PiperOrigin-RevId: 188173513
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 188164754
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
computeIfAbsent may throw (on best effort basis) a
ConcurrentModificationException if you change the underlying Map in the
computeIfAbsent call, for example when you call computeIfAbsent recursively in
the mappingFunction.
NestedSets are an inherent recursive structure, so we need to call
computeIfAbsent recursively in the action graph dump.
Since computeIfAbsent doesn't throw the exception all the time, it's hard to
come up with a reliable test case.
RELNOTES: None
PiperOrigin-RevId: 188151283
|
|
|
|
|
| |
RELNOTES:
PiperOrigin-RevId: 188149648
|