| Commit message (Collapse) | Author | Age |
|
|
|
| |
PiperOrigin-RevId: 173873310
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, there is no way to enforce that LateBoundDefaults only access
the fragments that they declare. This means that LateBoundDefaults can
fail to declare fragments at all, or declare the wrong ones, and still
have no troubles.
But when trimming, these fragments must be declared, because otherwise
they will not necessarily be available.
This change refactors LateBoundDefault to declare a single fragment type,
not a set. All existing LateBoundDefaults use sets with a single element
or no elements at all for their set of fragment classes, so this does not
limit anything being done currently.
To account for LateBoundDefaults which do not use configuration at all,
typically those which only want to access the configured attribute map,
it is possible for Void to be the fragment class which is requested.
To account for LateBoundDefaults which need to access methods of the
BuildConfiguration instance itself, it is possible for BuildConfiguration
to be the fragment class which is requested; however, this is unsafe, so
it is only a temporary state until a way to do this without also giving
access to all of the fragments can be added.
Drive-by refactoring: LateBoundDefaults' values are now typed. All actual
production LateBoundDefaults were Label or List<Label> typed, through the
LateBoundLabel and LateBoundLabelList subclasses. These subclasses have
been removed, and LateBoundDefault has two type parameters, one for the
type of its input, and one for the type of its output.
RELNOTES: None.
PiperOrigin-RevId: 169242278
|
|
|
|
|
|
|
| |
It was only used by GenQuery, for which we can use getTransitiveRootCauses()
and getTransitiveTargets() instead.
PiperOrigin-RevId: 162471592
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently ConfigSetting is treated specially; TransitiveTargetFunction
identifies it by name, then runs a special function on it. This change
makes ConfigSetting use a new options reference function in RuleClass,
which TransitiveTargetFunction will evaluate over the rule and use with
the options-to-fragments map to figure out which fragments are needed.
Although this is still a hack and not really a new feature on RuleClass,
this avoids a dependency on ConfigSettingRule from TransitiveTargetFunction,
which is necessary for ConfigSettingRule to be moved to rules/config.
RELNOTES: None.
PiperOrigin-RevId: 152156905
|
|
|
|
|
|
|
| |
The only place we now don't handle InterruptedException is in the action graph created after analysis, since I'm not sure that will be around for that much longer.
--
MOS_MIGRATED_REVID=130327770
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
late-bound attributes
To be clear: late-bound attributes introduce two new classes of fragments. First is
those needed by Attribute.LateBoundDefault to figure out what the attribute's value is.
Second is whatever's needed by the actual dep (for label-typed attributes) and its deps.
This change only adds the first. The second is harder since we can't determine
it until we're already in the analysis phase.
--
MOS_MIGRATED_REVID=129117755
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=128199284
|
|
|
|
|
|
|
|
|
|
|
| |
bind() is assumed to be able to provide any provider. This is suboptimal, but beats the alternative of traversing the dependency graph to an arbitrary depth.
The reason for the removal of the iteration ability in TransitiveInfoCollection is that now aspects can be attached to BindConfiguredTarget, too, which is not a RuleConfiguredTarget. Whereas I could have implemented the iterator, it was used only in BindConfiguredTarget anyway, so there didn't seem to be much reason to.
Some work towards #952.
--
MOS_MIGRATED_REVID=120549877
|
|
|
|
|
|
|
|
|
| |
--noimplicit_deps and/or --nohost_deps.
RELNOTES: --noimplicit_deps and --nohost_deps work correctly for Aspect attributes.
--
MOS_MIGRATED_REVID=112724917
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Specifically, given:
config_setting(
name = 'foo',
values = {'copts': '-DABC'})
this requires a dependency on the Cpp configuration fragment.
config_setting rules are unique in that this dependency comes
from string representations of option names.
--
MOS_MIGRATED_REVID=108268831
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
include Skylark-declared requirements (which use names instead of fragment
class, e.g. "cpp" vs. CppConfiguration.class).
Also add "cpp" to Skylark java_* definitions, since java_* rules are
used to trigger LipoDataTransitions and thus expected to have a
CppConfiguration fragment.
Test coverage: skylark.BindTest with --experimental_dynamic_configs=1.
(and other Skylark tests).
--
MOS_MIGRATED_REVID=108041244
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
configurations contain regardless of whether their rules explicitly
require it.
This is used to ensure all rules have BazelConfiguration. That
fragment supplies the path to the shell, which powers
BuildConfiguration.getShExecutable(), which powers any rule that
generates a SpawnAction.
Since SpawnActions are such a ubiquitous pattern we only want to
accelerate going forward, there's no point not to make this
automatically available to every rule.
--
MOS_MIGRATED_REVID=107786879
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=106848269
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
declare required configuration fragments: from
*everything* to *nothing*.
Now that all builtin rules properly declare their fragments,
the "backwards compatibility" concern that inspired the
original behavior is no longer needed.
This impacts, for example, filegroup rules, which have
nothing to declare.
--
MOS_MIGRATED_REVID=106433791
|
|
|
|
|
|
|
|
|
|
| |
Simplifies the runtime graph when TransitiveTraversalFunction is used.
Also moves an error reporting method from the base function to the
TransitiveTargetFunction, which is the only one that uses it.
--
MOS_MIGRATED_REVID=106109745
|
|
|
|
|
|
|
|
|
|
|
| |
This is the first step toward giving aspects the ability to define their own
required configuration fragments, extracting the required configuration
metadata into a common place.
This should be a no-op refactoring.
--
MOS_MIGRATED_REVID=104249500
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=103977080
|
|
|
|
|
|
|
|
|
|
|
| |
The headers were modified with
`find . -type f -exec 'sed' '-Ei' 's|Copyright 201([45]) Google|Copyright 201\1 The Bazel Authors|' '{}' ';'`
And manual edit for not Google owned copyright. Because of the nature of ijar, I did not modified the header of file owned by Alan Donovan.
The list of authors were extracted from the git log. It is missing older Google contributors that can be added on-demand.
--
MOS_MIGRATED_REVID=103938715
|
|
|
|
|
|
|
|
|
|
| |
- Label parsing can be simplified
- lib.syntax is only contains the code for Skylark and is reasonably independent from the problem domain of building things
This change is mostly only changes to imports declarations. The rest is reversing the dependency between :cmdline and :syntax and moving a tiny amount of code between Printer and FilesetEntry and the addition of SkylarkPrintableValue that I couldn't be bothered to separate out into its own change.
--
MOS_MIGRATED_REVID=103527877
|
|
|
|
|
|
|
|
|
|
|
| |
contains errors. Instead, require callers to process the package and throw if they need to.
This allows us to avoid embedding a Package in an exception, which is icky. This also allows us to remove Package#containsTemporaryErrors.
Most callers' changes are fairly straightforward. The exception is EnvironmentBackedRecursivePackageProvider, which cannot throw an exception of its own in case of a package with errors (because it doesn't do that in keep_going mode), but whose request for a package with errors *should* shut down the build in case of nokeep_going mode. To do this in Skyframe, we have a new PackageErrorFunction which is to be called only in this situation, and will unconditionally throw. EnvironmentBackedRecursivePackageProvider can then catch this exception and continue on as usual, except that the exception will shut down the thread pool in a nokeep_going build.
--
MOS_MIGRATED_REVID=103247761
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=102332437
|
|
|
|
|
|
|
|
| |
This is necessary to have TargetResolver depend on it without making it depend
on the packages target. First step of #389.
--
MOS_MIGRATED_REVID=101790345
|
|
|
|
|
|
|
| |
aspect deps.
--
MOS_MIGRATED_REVID=100960261
|
|
|
|
|
|
|
| |
ConservativeAspectResolver) aspect resolution.
--
MOS_MIGRATED_REVID=100526575
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=99386094
|
|
|
|
|
|
|
|
|
|
| |
Added more information to TargetMarkerFunction documentation.
Cleaned up and rearranged some code in TransitiveTargetFunction to
help with future refactoring.
--
MOS_MIGRATED_REVID=99384291
|
|
|
|
|
|
|
|
| |
Hooks up the recently introduced interleaved loading functions to
normal graph loading.
--
MOS_MIGRATED_REVID=97679451
|
|
|
|
|
|
|
|
|
| |
TransitiveTargetFunction only prints an error message if the package names
match, so it was just exiting with "loading failed" when there was an error
with external dependencies.
--
MOS_MIGRATED_REVID=96204337
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
configuration fragments needed by a rule's transitive
closure.
Also add a Skyframe BuildConfiguration node.
Memory and performance profiling shows no noticeable
performance hit in loading or analysis and a 0.35%
memory increase for moderately sized (by Google
standards) build graphs when these are depended
upon in ConfiguredTargetFunction.
--
MOS_MIGRATED_REVID=94517099
|
|
|
|
|
|
|
| |
the fact that a valid Target exists, and instead request it directly from its Package.
--
MOS_MIGRATED_REVID=90107670
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=90081310
|
|
|
|
|
|
|
| |
these two versions of query consistent we need to add additional edges to the target that contains aspects, instead of adding it to the target that was in direct deps of the original one.
--
MOS_MIGRATED_REVID=89483301
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=87821306
|
|
--
MOE_MIGRATED_REVID=85702957
|