| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The RuleContext object is not available when creating dynamic configuration
transitions. Removing it from ResourceFilter's state allows us to work with
ResourceFilter objects while creating those transitions. If we didn't do this,
we'd need to seperate the rest of ResourceFilter's state into a seperate class
so that we could work with it as part of doing dynamic configurations.
In the next reviews, I'll start actually creating dynamic configurations based
on ResourceFilter state.
Also, create a withAttrsFrom method that can be used in dynamic configuration
transitions, and generally migrate methods that work with attributes from
RuleContext to AttributeMap when practical.
To support these changes:
No longer keep the parsed lists of FolderConfiguration and Density objects as
fields of the ResourceFilter, instead, write functions that get them when
needed. We want to have access to a RuleContext when we initialize them to avoid
errors, and we don't have one in the withAttrsFrom method which will be called
as part of transitioning with dynamic configurations.
We no longer have those parsed lists to represent whether the object filters
during execution or analysis, so replace them with a seperate enum field for
filter behavior. Include a FILTER_IN_ANALYSIS_WITH_DYNAMIC_CONFIGURATION
option, even though it won't fully be used until the dynamic configuration
transition is taken advantage of in the next few reviews.
RELNOTES: none
PiperOrigin-RevId: 151715400
|
|
|
|
|
|
|
|
|
|
| |
If the workspace directory is /path/to/my/proj and the name in the WORKSPACE
file is "floop", this will symlink the output directories to
output_base/execroot/floop instead of output_base/execroot/proj.
More prep for #1262, fixes #1681.
PiperOrigin-RevId: 151712384
|
|
|
|
|
|
| |
RELNOTES: None.
PiperOrigin-RevId: 151688820
|
|
|
|
|
|
| |
keeping incremental state.
PiperOrigin-RevId: 151639711
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Breaks tests that expected previous id generation order.
RELNOTES: None.
PiperOrigin-RevId: 151638886
|
|
|
|
|
|
|
|
| |
RuleTransitionFactory#buildTransitionFor is @Nullable, but the
SkyframeExecutor expects a non-null Transition. If the factory
returns null, the SkyframeExecutor should be passed NONE, not null.
PiperOrigin-RevId: 151615724
|
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 151602497
|
|
|
|
|
|
|
|
| |
Fixes https://github.com/bazelbuild/bazel/issues/2739.
RELNOTES: None
PiperOrigin-RevId: 151592983
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new RemoteExecutionClient class only performs remote execution, and
nothing else; all higher-level functions, local rety, etc. will live outside
of the client.
In order to add unit tests, I had to add another layer of indirection between
the Grpc{RemoteExecutor,ActionCache} and GRPC, since GRPC generates final,
non-mockable classes. While a testing approach that uses a fake server can
also get some test coverage (as in GrpcActionCacheTest), it doesn't allow us
to test the full range of bad things that can happen at the GRPC layer.
The cloned implementation uses a single GRPC channel, as was recommended to
me by Jakob, who worked on GRPC. A single channel should be sufficiently
scalable, it's thread-safe, and it performs chunking internally. On the
server-side, the requests from a single channel can be dispatched to a thread
pool, so this should not be a blocker for server-side parallelism.
I also changed it to throw an exception whenever anything bad happens - this
makes it much more obvious if there's still bug in this code; the old code
silently swallows many errors, falling back to local execution, which papers
over many issues.
Furthermore, we now return a RemoteExecutionResult to indicate whether the
action ran at all (regardless of exit code), as well as the exit code.
All in all, this implementation is closer to the production code we're using
internally, although quite a few things are still missing.
The cloned implementation is not hooked up to RemoteSpawnStrategy yet. It
also does not support combining remote caching with local execution, but note
that RemoteSpawnStrategy regressed in that respect and currently also does
not support that mode.
PiperOrigin-RevId: 151578409
|
|
|
|
|
|
|
|
|
|
|
| |
So far only link actions were initialized in CppLinkActionConfigs. This cl
changes this class to also initialize CppCompile actions. This is needed for
our ongoing work removing hard-coded flags from Bazel and moving them into
Crosstool.
RELNOTES: None.
PiperOrigin-RevId: 151575045
|
|
|
|
|
|
|
|
|
|
| |
If a rule requires a special provider that's (maybe) not provided explicitly
but nevertheless available from a target, i.e. "files", the mandatory providers
check should pass.
Fixes #1490
PiperOrigin-RevId: 151571187
|
|
|
|
|
|
|
|
|
| |
RELNOTES[INC]: Converting artifacts to strings and printing them now return
"File" instead of "Artifact" to be consistent with the type name.
Fixes #2715
PiperOrigin-RevId: 151563252
|
|
|
|
|
|
| |
since it's already returned via JavaProvider.
PiperOrigin-RevId: 151550286
|
|
|
|
|
|
|
|
| |
ConfiguredTargetValues. Also clear transitive packages for both, even for top-level targets.
This is not expected to save significant memory, but is expected to reduce the number of references to Packages, allowing them to be dropped more easily when discarding analysis cache and running in batch mode.
PiperOrigin-RevId: 151508877
|
|
|
|
|
|
| |
RELNOTES: A downloader bug was fixed that prevented RFC 7233 Range connection resumes from working with certain HTTP servers
PiperOrigin-RevId: 151508000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's possible for cases to happen where the BlazeCommandDispatcher
fails before starting the WaitForCompletionCommand. In these cases,
the test's command state handoff will never take place because no
command state will be created to be handed off (obviously).
This means that runIn will wait forever.
Instead, if the command completes and the command state has still
not been handed off, set an exception into the command state so
that the test will fail without further troubles.
RELNOTES: None.
PiperOrigin-RevId: 151495494
|
|
|
|
| |
PiperOrigin-RevId: 151486661
|
|
|
|
|
|
| |
The encapsulation was off, since the format in which we accept policy has nothing to do with how we then enforce the policy.
PiperOrigin-RevId: 151471747
|
|
|
|
|
|
|
|
|
|
| |
* Fix the overwrite algorithm to be handled entirely in the accumulators.
* Improve the conflict error messages for attributes and simple values.
* Refactor the UnwrittenDataSubject to top level for reuse.
--
PiperOrigin-RevId: 151439084
MOS_MIGRATED_REVID=151439084
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 151381769
MOS_MIGRATED_REVID=151381769
|
|
|
|
|
|
|
|
|
|
| |
e.g.: cmd = "$(CC) foo.cc > $@"
Fixes #2729
--
PiperOrigin-RevId: 151369889
MOS_MIGRATED_REVID=151369889
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the rule.
Example:
tools/newlang/BUILD:
toolchain_type(name = "toolchain_type")
Allows users to refer to //tools/newlang:toolchain_type when discussing the
newlang toolchain.
The previous usage:
tools/newlang/BUILD:
toolchain_lookup(name = "lookup")
Lead to labels like //tools/newlang:lookup, which was unclear that each
language's toolchain needs one unique instance of toolchain_(lookup|type).
--
PiperOrigin-RevId: 151326827
MOS_MIGRATED_REVID=151326827
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 151302418
MOS_MIGRATED_REVID=151302418
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 151170448
MOS_MIGRATED_REVID=151170448
|
|
|
|
|
|
|
|
|
|
|
| |
Note that this is not quite a no-op. Setting -isystem puts these directories at
the beginning of the search list, whereas not setting them results in them
being near the end. However, this code is unnecessary and confusing and caused
a bug with the clang toolchains so it is best to remove it.
--
PiperOrigin-RevId: 151140445
MOS_MIGRATED_REVID=151140445
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
execution.
If you're feeling like you've already seen this, that's correct, these were the exact contents of commit e860316559eac366d47923a8eb4b5489a661aa35... and then, on Nov 15, something unclear happened and the code disappeared! Perhaps it was the result of a faulty sync. In any case, nobody noticed, and the CL went in. It was later rolloed back and resubmitted, but the crucial code changes were gone.
TESTED=local server with profiling for SHA1 specifically
RELNOTES: n/a
--
PiperOrigin-RevId: 151139685
MOS_MIGRATED_REVID=151139685
|
|
|
|
|
|
|
|
| |
case-insensitive paths.
--
PiperOrigin-RevId: 151137308
MOS_MIGRATED_REVID=151137308
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 151129669
MOS_MIGRATED_REVID=151129669
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rollback of commit df366408188f0451bae9b2ed079c795a4beb2e2b.
In addition to undoing the rollback of my previous change, fix the bugs it
introduced and add tests for those bugs.
Always ignore empty filters. Empty filters are always useless or
counterproductive. Before the original change, empty filters as a single item
within the list of filters (e.g., ["en", ""]) were ignored, but empty filters
as a portion of a string in the list (e.g., ["en,"]) were not. I can't imagine
any reason people would actually want the empty filter (if it were handled
correctly, it would effectively tell Bazel to just ignore every other filter
the user passed in).
Since it makes more sense with the new code, represent the stringified filters
as a list of strings, rather than a single string of comma-seperated values.
Manually trim whitespace from each token. Before the original change, the code
trimmed whitespace following commas (e.g., ["en, es"] -> ["en,es"]) but not
otherwise. If we're allowing whitespace in filter strings anyway, there doesn't
seem to be any reason to allow it in some places but not others.
--
PiperOrigin-RevId: 151128685
MOS_MIGRATED_REVID=151128685
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Rolling forward with the correct changes to the AndroidResourceMergingAction. Tested manually.
*** Original change description ***
Automated [] rollback of commit a58f245a4b40c0ef961b1f30d96b16a9349711c3.
*** Reason for rollback ***
broke over 100k targets, in the depot, see []
*** Original change description ***
Move library R generation to a separate action, ensuring the merging happens
off the java critical path.
--
PiperOrigin-RevId: 151087737
MOS_MIGRATED_REVID=151087737
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reverseDepsToConsolidate field in InMemoryNodeEntry. As part of that, revamp our logic of how we store pending operations: store adds bare on initial evaluations, and checks bare on incremental evaluations and operations on done nodes.
This should improve performance in two ways: BuildingState loses two fields, saving working memory intra-build. Storing pending reverse dep operations bare also saves memory intra-build. Note that neither of these changes helps resting memory state, only while a node is still evaluating.
Because of this, we can simplify ReverseDepsUtil a bit, making ReverseDepsUtilImpl a static class, which it always wanted to be (what it really wants to be is a superclass of InMemoryNodeEntry, but I don't want to spend the object alignment bits).
Finally, this makes it pretty tempting to get rid of BuildingState altogether on initial evaluations. We'd still keep DirtyBuildingState, but we could save another ~24 bytes by storing BuildingState's one remaining field, signaledDeps, directly inside InMemoryNodeEntry.
--
PiperOrigin-RevId: 151048879
MOS_MIGRATED_REVID=151048879
|
|
|
|
|
|
|
|
| |
on the presence of features.
--
PiperOrigin-RevId: 151038811
MOS_MIGRATED_REVID=151038811
|
|
|
|
|
|
|
|
|
|
|
| |
...in a way preserving the list structure and without escaping. In other
words, return the options as needed for an execve(3) call.
--
Change-Id: Ifb168d2e720392fb3a97d557960e0c1f1a83f543
Reviewed-on: https://cr.bazel.build/9458
PiperOrigin-RevId: 151019830
MOS_MIGRATED_REVID=151019830
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's now allowed to return anything from a rule implementation function.
If a ctx object is returned it becomes featureless and cannot be used from
anywhere else (i.e. from an implementation function of another rule).
Fixes #2319
--
PiperOrigin-RevId: 151015919
MOS_MIGRATED_REVID=151015919
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 151000602
MOS_MIGRATED_REVID=151000602
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 150881315
MOS_MIGRATED_REVID=150881315
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow toolchains to specify precisely the files required to
run code coverage tools (e.g. gcov). If not specifed, default
to the existing behaviour of supplying the whole crosstool.
RELNOTES[NEW]: Optional coverage_files attribute to cc_toolchain
--
PiperOrigin-RevId: 150878146
MOS_MIGRATED_REVID=150878146
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, ClassObjects' SkylarkCallable struct fields worked
as expected (with values of the struct taking precedence), but
calling methods annotated with SkylarkCallable did not work at
all; methods were treated as if they were not present in the struct.
This adds some tests for the various ways of looking up fields
and methods, and rearranges the logic in FuncallExpression to
allow for callable methods on SkylarkClassObject's descendants.
--
PiperOrigin-RevId: 150876181
MOS_MIGRATED_REVID=150876181
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In addition to filtering android_binary resources by
resource_configuration_filters, we also filter by densities. Doing this in
analysis rather than execution should also result in a speed-up as there's no
need to copy files unwanted for actions to use.
This behavior is controlled by the same object and flags that already
control resource configuration filtering, simplifying the code.
--
PiperOrigin-RevId: 150871620
MOS_MIGRATED_REVID=150871620
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 150869561
MOS_MIGRATED_REVID=150869561
|
|
|
|
|
|
|
|
|
|
|
|
| |
This provides a way to programmatically define expansions of options based on what other options are defined for the parser. In particular, it will be used for the --incompatible_* changes mechanism, to turn on all incompatible change flags.
Expansion functions are specified in the @Option annotation, similar to converters. They are computed when an OptionsParser is constructed, and inspect a preliminary version of its OptionsData to determine the expansion result. This is then cached in the final OptionsData used by the parser.
Expansion information for usage strings is available, but only when the usage strings are obtained via the parser.
--
PiperOrigin-RevId: 150817553
MOS_MIGRATED_REVID=150817553
|
|
|
|
|
|
|
|
| |
Still on step -0.5, let's be honest.
--
PiperOrigin-RevId: 150783638
MOS_MIGRATED_REVID=150783638
|
|
|
|
|
|
|
|
|
|
| |
output artifact of a middleman action a middleman artifact.
Step -0.5.
--
PiperOrigin-RevId: 150769517
MOS_MIGRATED_REVID=150769517
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 150764277
MOS_MIGRATED_REVID=150764277
|
|
|
|
|
|
|
|
| |
It was large and unwieldy - keep common logic in the original file but split out the tests into groups by invocation policy operation type.
--
PiperOrigin-RevId: 150759733
MOS_MIGRATED_REVID=150759733
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Root cause for issue addressed in unknown commit so rolling back rollback.
*** Original change description ***
Automated [] rollback of commit e450c00bf487c711f9b0615e9eb89980c5732b4a.
*** Reason for rollback ***
Breaks nightly, see [].
*** Original change description ***
Inject aidl_lib only to android_library targets that have idl_srcs
--
PiperOrigin-RevId: 150751650
MOS_MIGRATED_REVID=150751650
|
|
|
|
|
| |
PiperOrigin-RevId: 150750972
MOS_MIGRATED_REVID=150750972
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new class is a combination of SpawnHelper and our internal code; the
plan is to migrate all spawn strategies to the new class. The strict flag
should be enabled by default, but that's a breaking change, so we need to do
it later.
- Use it in SandboxStrategy.
- Add ActionInput.getExecPath to return a PathFragment; this avoids lots of
back and forth between path fragments and strings.
This is a step towards #1593.
The previous attempt was missing a one-line patch in StandaloneTestStrategy,
which broke all tests with sandboxing. StandaloneTestStrategy was fixed in a
separate change, so this should be safe now.
--
PiperOrigin-RevId: 150733457
MOS_MIGRATED_REVID=150733457
|
|
|
|
|
|
|
|
| |
Remove magic constants and convert to Truth.
--
PiperOrigin-RevId: 150692720
MOS_MIGRATED_REVID=150692720
|
|
|
|
|
|
|
|
|
|
| |
number of ActionExecutionValue.key calls.
Step -1, maybe?
--
PiperOrigin-RevId: 150681863
MOS_MIGRATED_REVID=150681863
|