aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
Commit message (Collapse)AuthorAge
* Don't treat external files as immutableGravatar Kristina Chodorow2015-12-08
| | | | | | | | | Fixes #352. RELNOTES: Files in external repositories are now treated as mutable, which will make the correctness guarantees of using external repositories stronger (existent), but may cause performance penalties. -- MOS_MIGRATED_REVID=109676408
* Cleanup: use int instead of Integer in the RecursiveFilesystemTraversal classes.Gravatar Laszlo Csomor2015-12-07
| | | | | -- MOS_MIGRATED_REVID=109579490
* RecursiveFilesystemTraversalFunction now tracks changes in symlinked directory.Gravatar Laszlo Csomor2015-12-07
| | | | | | | | | | | | We achieve this by computing the directory symlink's metadata hash, which the Google-internal Fileset rule writes in the fileset_manifest file, from the hashes of all files under it. This adds complexity but is necessary, because the symlink's FileStateValue remains the same even if the directory's contents change, so the FileStateValue alone is inadequate to compute the metadata for the fileset_manifest. -- MOS_MIGRATED_REVID=109577723
* Refactor: ResolvedFile.getMetadata is now .getMetadataHash.Gravatar Laszlo Csomor2015-12-07
| | | | | | | | | | This is a subtle change that'll go a long way: there's a bug in the handling of directory symlinks (changes in the link target are not picked up) which I'll fix by combining the metadata hashes of all items in the directory, and use that as the directory symlink's metadata hash. -- MOS_MIGRATED_REVID=109564943
* RecursiveFilesystemTraversalFunction: introduce ResolvedFileFactoryForTesting.Gravatar Laszlo Csomor2015-12-07
| | | | | | | | Using this class it's easier to create ResolvedFile instances for tests that don't care about metadata eqality. -- MOS_MIGRATED_REVID=109562578
* Refactor ResolvedFile implementors: remove unnecessary Optional<> wrappers.Gravatar Laszlo Csomor2015-12-07
| | | | | | | Also remove unnecessary `type` members; they are constant. -- MOS_MIGRATED_REVID=109560348
* Refactoring: get rid of RecursiveFilesystemTraversalValue.ResolvedFileUtilsGravatar Laszlo Csomor2015-12-04
| | | | | -- MOS_MIGRATED_REVID=109420721
* Refactoring: RecursiveFilesystemTraversalValue.ResolvedFile is now an interface.Gravatar Laszlo Csomor2015-12-04
| | | | | | | | | | | | | | This CL changes the class structure, moving from inheritance to implementation and composition. In particular, it turns the abstract base class ResolvedFile into an interface which the earlier subclasses now simply implement rather than extending it. This change makes the code cleaner: implementors may write more complicated getters (and that's my plan to do in a subsequent CL) instead of just returning the members. -- MOS_MIGRATED_REVID=109405650
* Fix a bug in the Google-internal rule "Fileset" (not in Bazel).Gravatar Laszlo Csomor2015-12-02
| | | | | -- MOS_MIGRATED_REVID=109195426
* Support skylark aspects in serialization/deserialization.Gravatar Dmitry Lomov2015-11-30
| | | | | -- MOS_MIGRATED_REVID=108964575
* Enable load() statement in the WORKSPACE file.Gravatar Damien Martin-Guillerez2015-11-30
| | | | | | | | | | | RELNOTES[NEW]: Skylark macros are now enabled in WORKSPACE file. Design document at https://docs.google.com/document/d/1jKbNXOVp2T1zJD_iRnVr8k5D0xZKgO8blMVDlXOksJg/preview Fixes #337 -- MOS_MIGRATED_REVID=108860301
* Refactor Skylark rules and attributes in preparation to Skylark aspects.Gravatar Dmitry Lomov2015-11-26
| | | | | | | | | | | 1. attr.<type> functions return a wrapper object instead of Attribute.Builder dierctly. 2. RuleClass is created once per the life-time of RuleFunction, during export 3. Attributes are added to the RuleClass at exporting. -- MOS_MIGRATED_REVID=108774581
* Simplify external repository support by removing FileValue from ↵Gravatar Lukacs Berki2015-11-25
| | | | | | | RepositoryValue and not depending it from repository functions. -- MOS_MIGRATED_REVID=108685867
* Minor tweaks in DirectoryListingValueGravatar Michajlo Matijkiw2015-11-24
| | | | | -- MOS_MIGRATED_REVID=108532339
* Do not recurse into the convenience symlinks when evaluating the "//..." ↵Gravatar Lukacs Berki2015-11-20
| | | | | | | | | target pattern. Apart from the tests, I also tested this manually running "bazel query //..." in a tree with convenience symlinks. -- MOS_MIGRATED_REVID=108325454
* Add dynamic config support for config_setting rules.Gravatar Greg Estren2015-11-20
| | | | | | | | | | | | | | | | 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
* Allow SkyValues to be marked not "comparable". Such values are not compared ↵Gravatar Eric Fellheimer2015-11-19
| | | | | | | for the purpose of change pruning. -- MOS_MIGRATED_REVID=108203369
* Have trimConfigurations preserve the same dep orderingGravatar Greg Estren2015-11-19
| | | | | | | | | | | | | | as its input. e.g. given input {"attr": [':a', ':b']} the trimmed version also keeps ':a' in front of ':b'. This preserves the expected invariant that prerequisites are navigatable in BUILD declaration order. -- MOS_MIGRATED_REVID=108170921
* Simplify inputs to NoSuchTargetExceptionGravatar Michajlo Matijkiw2015-11-19
| | | | | -- MOS_MIGRATED_REVID=108154189
* Skylark path-based relative loads now work correctly (with the new ↵Gravatar John Field2015-11-18
| | | | | | | | | label-based loading machinery) when the containing file is in a subdirectory of a package. Also, while we're in the neighborhood: correct two nearby tests of relative loads that were passing for the wrong reasons. -- MOS_MIGRATED_REVID=108072189
* Use LinkedListMultimap instead of ArrayListMultimapGravatar Greg Estren2015-11-18
| | | | | | | | | | | in ConfiguredTargetFunction.trimConfigurations to preserve key insertion order. This ensures that RuleContext.getPrerequisites returns an attribute's deps in the same order they were declared. -- MOS_MIGRATED_REVID=108063142
* Allow for a set of known modified files to be passed into the ↵Gravatar Eric Fellheimer2015-11-18
| | | | | | | FileSystemValueChecker when checking for dirty actions. -- MOS_MIGRATED_REVID=108046467
* When computing the transitive config fragments required by a target,Gravatar Greg Estren2015-11-18
| | | | | | | | | | | | | | | 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
* Emit extra-actions for actions registered by Aspects.Gravatar Carmi Grushko2015-11-17
| | | | | | | A prerequisite is to pass RuleContext to ConfiguredAspect, so we can read from it the registered actions when we build() the aspect. -- MOS_MIGRATED_REVID=107997593
* Narrow causes in NoSuchThingException familyGravatar Michajlo Matijkiw2015-11-17
| | | | | | | Become a bit more restrictive to keep our exception cases tight. -- MOS_MIGRATED_REVID=107953779
* Exit with an error message, rather than crashing, when an attempt is made to ↵Gravatar John Field2015-11-16
| | | | | | | load a Skylark file not contained in a package. -- MOS_MIGRATED_REVID=107811126
* Fix crash when two Skylark loads reference the same path.Gravatar John Field2015-11-16
| | | | | -- MOS_MIGRATED_REVID=107808413
* Minor tweaks to DirectoryListingStateValueGravatar Michajlo Matijkiw2015-11-16
| | | | | -- MOS_MIGRATED_REVID=107805824
* Track the entire OutputService instead of just the BatchStatter.Gravatar Eric Fellheimer2015-11-16
| | | | | -- MOS_MIGRATED_REVID=107800790
* Add the concept of a "universal" configuration fragment, which allGravatar Greg Estren2015-11-16
| | | | | | | | | | | | | | | | | 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
* Use Labels, rather than PathFragments, to represent Skylark loads ↵Gravatar John Field2015-11-13
| | | | | | | | | | | | | | | | | | | | | internally. The load location for a Skylark Aspect is specified via a PathFragment, for consistency with current non-Aspect Skylark loads. This should be a semantics-preserving change for users. In a subsequent CL, I'll change the Skylark syntax to allow load statements to use labels as well as paths, with the goal of eventually deprecating the latter. Also: - Removed the hack for handling relative loads in the prelude file. - Refactored some redundant functionality in PackageFunction and SkylarkImportLookupFunction for handling loads. - Removed the ability to put the BUILD file for the package containing a Skylark file under a different package root than the Skylark file itself. This functionality isn't currently used and is inconsistent with Blaze's handling of the package path elsewhere. - Added BUILD files to a number of tests that load Skylark files; this is consistent with the requirement that all Skylark files need to be part of some package. - Changed the constants used to set the location of the prelude file from paths to labels. -- MOS_MIGRATED_REVID=107741568
* RELNOTES: Symlink dirents of directories containing a file named ↵Gravatar Nathan Harmata2015-11-13
| | | | | | | | | | | | | | "DONT_FOLLOW_SYMLINKS_WHEN_TRAVERSING_THIS_DIRECTORY_VIA_A_RECURSIVE_TARGET_PATTERN" will *not* be traversed for transitive target patterns. The motivation here is to allow directories that intentionally contain wonky symlinks (e.g. foo/bar -> foo) to opt out of being consumed by Blaze. For example, given <workspace>/foo bar bad -> . DONT_FOLLOW_SYMLINKS_WHEN_TRAVERSING_THIS_DIRECTORY_VIA_A_RECURSIVE_TARGET_PATTERN the 'bad' symlink will *not* be traversed by the pattern '//foo/...'. -- MOS_MIGRATED_REVID=107738930
* Removed unused FileFunctionException constructorGravatar Michajlo Matijkiw2015-11-13
| | | | | -- MOS_MIGRATED_REVID=107726105
* When getting package roots for exec paths, don't start with the file, which ↵Gravatar Janak Ramakrishnan2015-11-13
| | | | | | | is guaranteed not to be a package. Instead, start with its parent. This will be faster and take less memory. -- MOS_MIGRATED_REVID=107725767
* Make it easier to reuse empty PrepareDepsOfTargetsUnderDirectoryValue singletonsGravatar Michajlo Matijkiw2015-11-13
| | | | | -- MOS_MIGRATED_REVID=107719658
* Pre-trim build options for all remaining calls to ConfigurationFragment.key. ↵Gravatar Greg Estren2015-11-13
| | | | | | | | | | | | Move the trimming logic into key() itself to: a) eliminate code redundancy b) guarantee all future calls to key() also do this. -- MOS_MIGRATED_REVID=107713353
* Inline SkyframeBuildView.createAspect into its only call-site, to reduce ↵Gravatar Carmi Grushko2015-11-13
| | | | | | | stack depth. -- MOS_MIGRATED_REVID=107688035
* Allow package blacklisting to be done via a file checked into the depot. By ↵Gravatar Eric Fellheimer2015-11-12
| | | | | | | default this is disabled. -- MOS_MIGRATED_REVID=107644420
* When determining a dep's dynamic configuration, apply theGravatar Greg Estren2015-11-12
| | | | | | | | | configuration transition *before* trimming the options. This is because the transition may read fragments that aren't in the dep itself. -- MOS_MIGRATED_REVID=107624186
* When getting the Skyframe key for a ConfigurationFragment, firstGravatar Greg Estren2015-11-12
| | | | | | | | | | | | | | | trim the BuildOptions to only those needed by the fragment. This guarantees that the same fragment only gets instantiated once (for example: we don't want to have two copies of a CppConfiguration because one copy had PythonOptions and the other didn't). This also prevents crashes, e.g. in the Preconditions check in CcLibraryHelper.addDeps. -- MOS_MIGRATED_REVID=107609270
* Include the Globber in the PackageFunction AstAfterPreprocessing cache. ↵Gravatar Nathan Harmata2015-11-12
| | | | | | | Otherwise we have potential correctness and performance problems on a missing Skylark import dep. -- MOS_MIGRATED_REVID=107605200
* Allow FilesystemValueChecker to operate on a WalkableGraph and add TODOs for ↵Gravatar Nathan Harmata2015-11-10
| | | | | | | | | replacing MemoizingEvaluator#getValues et al with WalkableGraph usage. I initially attempted to do this but punted once I realized how much work it would be. Also make DirectoryListingStateValue and FileStateValue public for use in outside callers of FilesystemValueChecker. -- MOS_MIGRATED_REVID=107447425
* Add a Skyframe injected value representing a Blacklist of package patterns. ↵Gravatar Eric Fellheimer2015-11-10
| | | | | | | | | | | | | Any Package name starting with a blacklisted prefix is treated as a deleted package. Note the relation to prior art in Blaze: 1. Deleted packages indicates to Blaze to pretend certain packages do not exist. The deleted packages are passed in as fully resolved package names. This is important because the invalidation logic when these values changes references the exact package names, as opposed to prefix patterns. 2. Negative patterns in target parsing. (eg, "foo/..., -foo/bar/..."). Note that if //foo:biz depends on //foo/bar:bang, we still visit that dependency. In other words, the negative patterns just control the target pattern parsing, but not the later evaluation of those targets. Blacklisting acts like both (1) and (2), but in the form of a Precomputed injected value (so modifying the value would be more expensive than modifying deleted_packages). -- MOS_MIGRATED_REVID=107431993
* Update @Nullable annotations for FilesystemValueChecker related stuff.Gravatar Nathan Harmata2015-11-10
| | | | | -- MOS_MIGRATED_REVID=107420673
* Aspect terminology update.Gravatar Dmitry Lomov2015-11-10
| | | | | | | | Aspect => ConfiguredAspect AspectWithParameters => Aspect -- MOS_MIGRATED_REVID=107375211
* Refactor the loading phase runner creation and remove the test duplication.Gravatar Ulf Adams2015-11-06
| | | | | | | | | The loading phase runner is now always created by the SkyframeExecutor, and the duplicate test is dropped in favor of subclassing and overriding one method. -- MOS_MIGRATED_REVID=107188756
* Add a TODO for a known dynamic configuration problem: hostGravatar Greg Estren2015-11-06
| | | | | | | | | | | | | | configurations get trimmed to the same fragments as target configurations. This isn't correct, because null fragments in the target configuration (which in practice don't exist) shouldn't necessarily be excluded from the host config. In the worst case then can crash fragment loaders, which expect the fragment options to exist even if the fragment ends up being null. -- MOS_MIGRATED_REVID=107173093
* Implement the offset for the new skyframe-based LoadingPhaseRunner.Gravatar Ulf Adams2015-11-05
| | | | | -- MOS_MIGRATED_REVID=107071400
* Increase the concurrency level of the filesystem call caches used in legacy ↵Gravatar Nathan Harmata2015-11-05
| | | | | | | package loading from the LoadingCache default of 4 to value of --legacy_globbing_threads. -- MOS_MIGRATED_REVID=107056166
* Pass AspectWithParameters instead of separately passing AspectParameters and ↵Gravatar Carmi Grushko2015-11-04
| | | | | | | | | aspect-attributes. The former contains both. -- MOS_MIGRATED_REVID=106961145