aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
Commit message (Collapse)AuthorAge
* Implements dynamic split transitions (minus latebound attribute splits).Gravatar Greg Estren2016-08-08
| | | | | | | | | | With the prereq work behind this, this is surprisingly straightforward. The main change is to eliminate BuildConfiguration.SplittableTransitionApplier, make both DynamicTransitionApplier and StaticTransitionApplier split-aware, and add awareness of this to ConfiguredTargetFunction.trimConfigurations. Latebound splits will follow next. -- MOS_MIGRATED_REVID=129480309
* Rollback of commit 0fe34924b5e5282b5e2895761f11ad77bccebdba.Gravatar Alex Humesky2016-07-28
| | | | | | | | | | | | | | *** Reason for rollback *** Causes a dependency cycle for java targets: [] *** Original change description *** Enable the Java launcher by default -- MOS_MIGRATED_REVID=128638289
* Enable the Java launcher by defaultGravatar Liam Miller-Cushon2016-07-26
| | | | | -- MOS_MIGRATED_REVID=128421303
* When telling JavaBuilder what label produced a certain jar, also provide the ↵Gravatar Carmi Grushko2016-07-21
| | | | | | | | | Aspect's name that participated, if there is one. RELNOTES: -- MOS_MIGRATED_REVID=128085414
* Move more things from TestConstants to AnalysisMock and LoadingMock.Gravatar Ulf Adams2016-07-14
| | | | | | | Also remove other uses of TestConstants. -- MOS_MIGRATED_REVID=127327339
* Update AnalysisMock to cover the rule class provider and invocation policy.Gravatar Ulf Adams2016-07-07
| | | | | | | | | | This is in preparation for getting rid of some of the TestConstants, makes it easier to open-source more tests, and also allows us to run tests against subsets of the rule classes. That is in preparation for modularizing the rule class provider. -- MOS_MIGRATED_REVID=126782163
* RELNOTES: Use the correct build configuration for shared native deps during ↵Gravatar Googler2016-07-01
| | | | | | | Android split transitions. -- MOS_MIGRATED_REVID=126378169
* Ignore make variables undefined for requested platform.Gravatar Dmitry Lomov2016-07-01
| | | | | -- MOS_MIGRATED_REVID=126333303
* Sheepishly add a warning about the problem in which getConfiguredTarget() ↵Gravatar Cal Peyser2016-06-24
| | | | | | | returns null for failed SkyKey evaluations. -- MOS_MIGRATED_REVID=125684386
* Updates BuildViewTestCase.invalidatePackages() to also invalidateGravatar Greg Estren2016-06-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | configurations. This is important for dynamic configurations. invalidatePackages() invalidates every file. This includes CROSSTOOL, which the CppConfiguration fragment depends on. For static configurations, this doesn't matter because all configurations and their fragments are pre-computed at the beginning of the build (or in the case of tests before the test case starts). For dynamic configurations, the configuration can get custom-created each configured target. When that happens after invalidatePackages, a new CppConfiguration instance gets created. This can impact code like CcLibraryHelper.addDeps(), which assumes equality (CppConfiguration has no .equals() method). Normally that's not a problem because the same CppConfiguration instance is used for every target in the post-invalidatePackages() graph. But host configurations break this: we keep a non-Skyframe host config cache in SkyframeBuildView.hostConfigurationCache. Without this change, it doesn't get cleared out, so it keeps old pre-invalidation references that under certain circumstances get applied to post-invalidation targets. -- MOS_MIGRATED_REVID=125379342
* Trim configurations requested for a target in BuildViewTestCase.Gravatar Greg Estren2016-06-20
| | | | | -- MOS_MIGRATED_REVID=125171507
* Rollback of commit bdfd58a8ca2ed5735d6aaa5b238fb0f689515724.Gravatar Laurent Le Brun2016-06-20
| | | | | -- MOS_MIGRATED_REVID=125160288
* Make the execution root match the runfiles tree structure for external ↵Gravatar Kristina Chodorow2016-06-17
| | | | | | | | | | | | | | | | | | | | | repositories One interesting side effect of how this is implemented is that for external repositories, bin/ and genfiles/ are combined. External repo output is under bazel-out/local-fastbuild/repo_name for each repo. Fixes #1262. RELNOTES[INC]: Previously, an external repository would be symlinked into the execution root at execroot/local_repo/external/remote_repo. This changes it to be at execroot/remote_repo. This may break genrules/Skylark actions that hardcode execution root paths. If this causes breakages for you, ensure that genrules are using $(location :target) to access files and Skylark rules are using http://bazel.io/docs/skylark/lib/File.html's path, dirname, etc. functions. -- MOS_MIGRATED_REVID=125095799
* Report cycles involving aspects correctly.Gravatar Lukacs Berki2016-06-14
| | | | | | | | | This involved refactoring BuildViewTestCase a bit so that its behavior is closer to that of Bazel with --experimental_interleave_loading_and_analysis. RELNOTES: -- MOS_MIGRATED_REVID=124816624
* Introduce TestConstants#PACKAGE_FACTORY_FACTORY_FOR_TESTING for the sake of ↵Gravatar Nathan Harmata2016-06-10
| | | | | | | making it easier to create PackageFactory instances in unit tests. -- MOS_MIGRATED_REVID=124566862
* Replace the occurrences of Constants.PRODUCT_NAME for a call toGravatar Luis Fernando Pino Duque2016-05-23
| | | | | | | | | BlazeRuntime#getProductName() or a reference to TestConstants.PRODUCT_NAME for tests. This CL prepares the codebase in order to delete the constant. -- MOS_MIGRATED_REVID=122993568
* For tests that check against output paths, provide the ability to strip out ↵Gravatar Greg Estren2016-05-19
| | | | | | | | | | | | | | | | | the C++-contributed fragment. e.g. provide the ability to translate: bazel-out/gcc-X-glibc-Y-x86-fastbuild/ to: bazel-out/fastbuild/ This applies to artifacts built with dynamic configurations for targets with no C++ fragments in their configuration. -- MOS_MIGRATED_REVID=122643518
* Add feature to selectively disable Blaze's cc include scanner.Gravatar Googler2016-05-12
| | | | | -- MOS_MIGRATED_REVID=122052211
* Refactoring: Created BuildViewTestCase.checkLoadingPhaseError() for commonly ↵Gravatar Florian Weikert2016-05-10
| | | | | | | | | used error checks. This is partly motivated by unknown commit which moves the computation of default attribute values from analysis to loading phase. Consequently, checkError() can no longer be used for the affected tests. Instead, we will be using checkLoadingPhaseError(). -- MOS_MIGRATED_REVID=121922683
* --Gravatar Carmi Grushko2016-05-10
| | | | MOS_MIGRATED_REVID=121896547
* In InvocationPolicyEnforcer#enforce, instead of just checking the direct ↵Gravatar Janak Ramakrishnan2016-05-02
| | | | | | | | | | | command to see if a flag policy applies, check whether the flag applies by seeing if its list of commands matches one of the commands in the hierarchy. This avoids the tedious and brittle specification of all commands that may use a flag, while providing better filtering out of inapplicable flags. RELNOTES: A FlagPolicy specified via the --invocation_policy flag will now match the current command if any of its commands matches any of the commands the current command inherits from, as opposed to just the current command. -- MOS_MIGRATED_REVID=121159131
* Push some functionality from FoundationTestCase to where it's actually used.Gravatar Ulf Adams2016-04-29
| | | | | -- MOS_MIGRATED_REVID=121116897
* Delete the interface NativeAspectFactory and make native aspects extend from ↵Gravatar Luis Fernando Pino Duque2016-04-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NativeAspectClass. This a large refactoring of the aspects, currently we have the following: - AspectClasses: The interface AspectClass is a implemented by either SkylarkAspectClass or NativeAspectClass<NativeAspectFactory>. They are wrappers for the AspectFactories and they hold the information about the Class<> of the factory. - AspectFactories (FooAspect.java): Represented by the interfaces ConfiguredAspectFactory and NativeAspectFactory, also by the interface ConfiguredNativeAspectFactory which is the union of the two aforementioned interfaces. All aspects implement ConfiguredNativeAspectFactory except Skylark aspects which implement only ConfiguredAspectFactory. After this CL the distinction between NativeAspectFactories and NativeAspectClasses dissappear, namely aspect that extends NativeAspectClass is considered native and if it implements ConfiguredAspectFactory it is configured. Therefore the interfaces NativeAspectFactory and ConfiguredNativeAspectFactory both disappear. With this refactoring the aspectFactoryMap in the ConfiguredRuleClassProvider changes its type from (String -> Class<? extends NativeAspectClass>) to (String -> NativeAspectClass) which means it is now able to have an instance of the aspect instead of its Class only. By doing this, it is now possible to pass parameters when creating an aspect in the ConfiguredRuleClassProvider. -- MOS_MIGRATED_REVID=120819647
* Split ActionMetadata into ActionAnalysisMetadata and ActionExecutionMetadata.Gravatar Rumou Duan2016-04-26
| | | | | | | Except in action execution logic (ActionExecutionFunction, SkyframeActionExecutor, etc.), switch Action interface references to either ActionAnalysisMetadata if possible or ActionExecutionMetadata. -- MOS_MIGRATED_REVID=120723431
* Remove the directories field from RepositoryDelegatorFunction.Gravatar Ulf Adams2016-04-15
| | | | | -- MOS_MIGRATED_REVID=119942803
* Inject the BlazeDirectories in SkyframeExecutor.Gravatar Ulf Adams2016-04-15
| | | | | | | | | The BlazeDirectories are also needed for loading the WORKSPACE file, so inject them as part of preparePackageLoading rather than in createConfigurations, which is too late. -- MOS_MIGRATED_REVID=119931633
* Roll-foward of commit 351475627b9e94e5afdf472cbf465f49c433a25e which was ↵Gravatar Nathan Harmata2016-04-14
| | | | | | | rolled back in commit 1250fdac4c7769cfa200af8b4f9b061024356fea. There was nothing wrong with that change. -- MOS_MIGRATED_REVID=119756383
* Rollback of commit 351475627b9e94e5afdf472cbf465f49c433a25e.Gravatar Florian Weikert2016-04-12
| | | | | | | *** Reason for rollback *** -- MOS_MIGRATED_REVID=119625653
* Move FDO support to the analysis phase by wrapping FdoSupport in its own ↵Gravatar Lukacs Berki2016-04-07
| | | | | | | | | | | SkyFunction. This removes one of the two reasons for the existence of BuildConfiguration#prepareToBuild() which makes implementing dynamic configurations impossible and also makes FDO support halfway sane; now FDO is exactly as ugly as remote repositories, that is to say, reasonably okay. Ideally, we'd implement the zip extraction as an Action and make it a TreeArtifact, but support for TreeArtifacts is not mature yet enough, so it's not possible at the moment. -- MOS_MIGRATED_REVID=119150223
* Make non-empty attribute checks happen during analysis of the target in ↵Gravatar Nathan Harmata2016-04-07
| | | | | | | question, rather than during loading of the target's package. This way a target's package won't be in error if e.g. an unrelated target has empty 'srcs'. -- MOS_MIGRATED_REVID=119079777
* Reimplement the configuration sanity check as a per-fragment check.Gravatar Ulf Adams2016-03-31
| | | | | | | | | This is conceptually better (because each fragment should be self-contained), and gives us better performance, as we no longer need to load all explicit labels. -- MOS_MIGRATED_REVID=118674470
* Enable the configuration sanity check for a subset of tests.Gravatar Ulf Adams2016-03-31
| | | | | | | | | | | Also remove a try-catch block, which was converting all configuration creation errors to IllegalStateException. This uncovered a bug in CppOptions, which wasn't adding host_grte_top to the set of explicit labels. -- MOS_MIGRATED_REVID=118654358
* Remove the unused loadingEnabled param from BuildView.update.Gravatar Ulf Adams2016-03-30
| | | | | -- MOS_MIGRATED_REVID=118560010
* Add getGenfilesArtifact() that takes an explicit AspectParameters, for ↵Gravatar Carmi Grushko2016-03-30
| | | | | | | looking up actions registered from Aspects that use a non-empty AspectParameters. -- MOS_MIGRATED_REVID=118455180
* Always apply invocation policy when constructing build options.Gravatar Janak Ramakrishnan2016-03-24
| | | | | -- MOS_MIGRATED_REVID=117939121
* Move TimestampGranularityMonitor to CommandEnvironment.Gravatar Ulf Adams2016-03-23
| | | | | | | | This is one of the last pieces of state in BlazeRuntime that isn't safe to share across command invocations. -- MOS_MIGRATED_REVID=117910631
* Add a getGeneratingAction(ConfiguredTarget target, String outputName) method ↵Gravatar Carmi Grushko2016-03-21
| | | | | | | to BuildViewTestCase. -- MOS_MIGRATED_REVID=117571330
* Don't keep packages in the default repository around after loading.Gravatar Brian Silverman2016-03-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, this would get thrown when referring to the same package from both the main and default repositories: java.lang.IllegalArgumentException: Multiple entries with same key: tools/cpp=/home/brian/971-Robot-Code and tools/cpp=/home/brian/971-Robot-Code at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:136) at com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket(RegularImmutableMap.java:98) at com.google.common.collect.RegularImmutableMap.fromEntryArray(RegularImmutableMap.java:84) at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:295) at com.google.devtools.build.lib.buildtool.BuildTool.transformPackageRoots(BuildTool.java:301) at com.google.devtools.build.lib.buildtool.BuildTool.buildTargets(BuildTool.java:209) at com.google.devtools.build.lib.buildtool.BuildTool.processRequest(BuildTool.java:334) at com.google.devtools.build.lib.runtime.commands.TestCommand.doTest(TestCommand.java:119) at com.google.devtools.build.lib.runtime.commands.TestCommand.exec(TestCommand.java:104) at com.google.devtools.build.lib.runtime.BlazeCommandDispatcher.exec(BlazeCommandDispatcher.java:371) at com.google.devtools.build.lib.runtime.BlazeRuntime$3.exec(BlazeRuntime.java:1016) at com.google.devtools.build.lib.server.RPCService.executeRequest(RPCService.java:65) at com.google.devtools.build.lib.server.RPCServer.executeRequest(RPCServer.java:434) at com.google.devtools.build.lib.server.RPCServer.serve(RPCServer.java:229) at com.google.devtools.build.lib.runtime.BlazeRuntime.serverMain(BlazeRuntime.java:975) at com.google.devtools.build.lib.runtime.BlazeRuntime.main(BlazeRuntime.java:772) at com.google.devtools.build.lib.bazel.BazelMain.main(BazelMain.java:55) And this would get thrown for any packages in the main repository loaded from other repositories: java.lang.RuntimeException: Unrecoverable error while evaluating node 'PACKAGE:@//tools/build_rules/go/toolchain' (requested by nodes ) at com.google.devtools.build.skyframe.ParallelEvaluator$Evaluate.run(ParallelEvaluator.java:982) at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:499) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: Invalid BUILD file name for package '@//tools/build_rules/go/toolchain': /home/brian/bazel/tools/build_rules/go/toolchain/BUILD at com.google.devtools.build.lib.packages.Package.finishInit(Package.java:299) at com.google.devtools.build.lib.packages.Package$Builder.finishBuild(Package.java:1308) at com.google.devtools.build.lib.skyframe.PackageFunction.compute(PackageFunction.java:501) at com.google.devtools.build.skyframe.ParallelEvaluator$Evaluate.run(ParallelEvaluator.java:933) ... 4 more Sponsor's comment: note the abundance of new Label.resolveRepositoryRelative() calls. They are ugly, but it's only making existing ugliness explicit. Yes, we should fix it, especially in the implementation of configurable attributes. Refs #940 -- Change-Id: I8bd7f7b00bec58a7157507595421bc50c81b404c Reviewed-on: https://bazel-review.googlesource.com/#/c/2591 MOS_MIGRATED_REVID=117429733
* Rename getGeneratingAction (which returns a SpawnAction) to ↵Gravatar Carmi Grushko2016-03-17
| | | | | | | getGeneratingSpawnAction. -- MOS_MIGRATED_REVID=117290280
* Use two configurations for AspectKeys.Gravatar Michael Staib2016-03-01
| | | | | | | | | | | | In order for Aspects to support dynamic configuration, they need to have two configurations: one to instantiate the Aspect with, containing all the fragment dependencies of the Aspect itself, and one to create the ConfiguredTargetValue.key with, containing only the dependencies of the Rule. This expands AspectKey to have a second configuration, although it currently does not populate that key with anything different. -- MOS_MIGRATED_REVID=115997454
* Simplifies AbstractWriteFileAction to pass the ActionExecutionContext ↵Gravatar Alex Humesky2016-02-26
| | | | | | | directly to newDeterministicWriter. -- MOS_MIGRATED_REVID=115626619
* Update ANDROID_DEFAULT_CROSSTOOL to default to //external:android/crosstool. ↵Gravatar Luis Fernando Pino Duque2016-02-25
| | | | | | | Remove the constant. -- MOS_MIGRATED_REVID=115555161
* Add an experimental flag to enable the Skyframe-based loading phase runner.Gravatar Ulf Adams2016-02-12
| | | | | | | | | | | | | | Refactor the CommandEnvironment to no longer create a LoadingPhaseRunner eagerly. Unfortunately, that means we can't reuse the TargetPatternEvaluator either. Fortunately, the SkyframeTargetPatternEvaluator is a very lightweight class, which only contains the offset as state, so we just create a new instance whenever we need one. On the plus side, the LoadingPhaseRunner API is now stateless, and the QueryCommand no longer creates a unnecessary LoadingPhaseRunner instance. -- MOS_MIGRATED_REVID=114519731
* Introduce TreeArtifact and associated code to work with it. No functionality ↵Gravatar Michael Thvedt2016-02-09
| | | | | | | implemented yet. -- MOS_MIGRATED_REVID=114157140
* RELNOTES[INC]: Set stamping to false by default (i.e., --nostamp)Gravatar Damien Martin-Guillerez2016-01-26
| | | | | | | Stamping make build non-deterministic and should not be the default. -- MOS_MIGRATED_REVID=113040937
* Rollback of commit bd9f25c593a140acb15d3fd3fc7f66d091e1a898.Gravatar Ulf Adams2016-01-25
| | | | | | | | | | | | | | | | *** Reason for rollback *** Violates layering - genrule should not depend on platform- or language-specific parts. *** Original change description *** Add a DEVELOPER_DIR make variable to genrules to propagate the apple xcode environment variable DEVELOPER_DIR to commands. If $(DEVELOPER_DIR) is included in the genrule command, we bootstrap the XCODE_VERSION_OVERRIDE environment variable to the command. The contract with the actual action executor is, if XCODE_VERSION_OVERRIDE is present in the environment, to additionally bootstrap the DEVELOPER_DIR absolute path to the command. -- MOS_MIGRATED_REVID=112951074
* Add a DEVELOPER_DIR make variable to genrules to propagate the apple xcode ↵Gravatar Chris Parsons2016-01-21
| | | | | | | | | | environment variable DEVELOPER_DIR to commands. If $(DEVELOPER_DIR) is included in the genrule command, we bootstrap the XCODE_VERSION_OVERRIDE environment variable to the command. The contract with the actual action executor is, if XCODE_VERSION_OVERRIDE is present in the environment, to additionally bootstrap the DEVELOPER_DIR absolute path to the command. -- MOS_MIGRATED_REVID=112605616
* BuildView - untangle more of the methods that are only for ide info.Gravatar Ulf Adams2016-01-11
| | | | | | | | | | In particular, don't immediately call into the ForTesting functions; I need to refactor some code that is called from here, and the semantics when called from ide info should not change. Changes to semantics when called from tests are much less problematic - we can simply run all the tests. -- MOS_MIGRATED_REVID=111846384
* Allow relative paths for local_repository()sGravatar Kristina Chodorow2016-01-07
| | | | | | | | | | Fixes #733. RELNOTES: Relative paths can now be used for 'path' with new_local_repository and local_repository. -- MOS_MIGRATED_REVID=111620894
* Only depend on the WORKSPACE file for external files that are under the ↵Gravatar Lukacs Berki2015-12-16
| | | | | | | | | | | | | | | external/ directory, i.e. were created by Bazel. This avoids a cycle that arose when a file is load()ed from the WORKSPACE file that is reached through a symlink to an external directory: * The WORKSPACE file depends on the package lookup node of the .bzl file * The package lookup node (transitively) depends on wherever the symlink points * The target of the symlink is an external file and as such, it depends on the WORKSPACE file This will probably be, erm, interesting to solve when we get as far as to load stuff from external repositories in the WORKSPACE file, but we are just not there yet. -- MOS_MIGRATED_REVID=110344658