aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax
Commit message (Collapse)AuthorAge
* Use Iterables.addAll() in SkylarkList.Gravatar Googler2016-04-15
| | | | | | | | | It is probably more efficient in the common case where the Iterable is a collection. String and list handling in Skylark results in a *lot* of calls to this method, and the use of addAll should reduce the amount of copying and GCing that needs to occur. An alternative would be to change the underlying type of SkylarkList from ArrayList to LinkedList, which would reduce the copying and GCing due to list concatenation even more. There is probably a downside to that but it is not clear if it is significant. -- MOS_MIGRATED_REVID=119891128
* Don't make racy changes to the global Environment.FrameGravatar Brian Silverman2016-04-12
| | | | | | | | | | | | | | | 6f15335 Make labels in .bzl files in remote repos resolve relative [...] introduced a Frame#setLabel which is documented to create a new Frame but instead modifies the existing one. This results in the global environment being modified in-place. I've been seeing some strange errors about not finding various packages in the wrong repositories which seems to be fixed by this change. -- Change-Id: I9b8521e50f45cfd385b20491315904ff0e24dcf6 Reviewed-on: https://bazel-review.googlesource.com/#/c/3300 MOS_MIGRATED_REVID=119529142
* Add error message for skylark for-else statement, and fix error message for ↵Gravatar Yue Gan2016-04-07
| | | | | | | single else statement. -- MOS_MIGRATED_REVID=119260729
* implement list.insert for skylark ruleGravatar Yue Gan2016-04-07
| | | | | | | RELNOTES: implement list.insert for skylark rule -- MOS_MIGRATED_REVID=119243427
* Update error message for invalid load label.Gravatar Laurent Le Brun2016-03-31
| | | | | -- MOS_MIGRATED_REVID=118662172
* Make labels in .bzl files in remote repos resolve relative to their repoGravatar Kristina Chodorow2016-03-21
| | | | | | | | | | | | | | | | | | For example, if you have a BUILD file that does: load('@foo//bar:baz.bzl', 'my_rule') my_rule(...) If baz.bzl uses Label('//whatever'), this change makes //whatever resolve to @foo//whatever. Previous to this change, it would be resolved to the repository the BUILD file using my_rule was in. RELNOTES[INC]: Labels in .bzl files in remote repositories will be resolved relative to their repository (instead of the repository the Skylark rule is used in). -- MOS_MIGRATED_REVID=117720181
* Introduce skylark provider for objc.Gravatar Cal Peyser2016-03-18
| | | | | -- MOS_MIGRATED_REVID=117485208
* 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
* Skylark: improved documentation and error messages of getattr() and ↵Gravatar Florian Weikert2016-03-08
| | | | | | | | | hasattr() when being called with the name of an existing method. While hasattr(obj, 'existing method') continues to return true, getattr(obj, 'existing method') always throws an exception (with a more detailed message than before), regardless of whether a default value was specified or not. -- MOS_MIGRATED_REVID=116613716
* Global cleanup change.Gravatar Googler2016-03-08
| | | | | -- MOS_MIGRATED_REVID=116569594
* Skylark: implement dict.updateGravatar Laurent Le Brun2016-03-08
| | | | | -- MOS_MIGRATED_REVID=116553978
* Python provider is now available in SkylarkGravatar Yun Peng2016-03-03
| | | | | | | | | | | | | Using mandatoryProvidersList to validate python rules' dependency. Added a SkylarkProvider named 'py' which is a SkylarkClassObject in Java and a struct in Skylark. Native python rule and Skylark python rule should have this provider so that they can depend on each other. RELNOTES[NEW]: Native python rule can depend on skylark rule as long as skylark rule provides 'py' provider. -- MOS_MIGRATED_REVID=116241504
* Implement pop(), popitem() and setdefault() for dictGravatar Francois-Rene Rideau2016-02-19
| | | | | -- MOS_MIGRATED_REVID=114966513
* Reinstate mutable maps, again.Gravatar Francois-Rene Rideau2016-02-17
| | | | | -- MOS_MIGRATED_REVID=114860576
* WorkspaceASTFunction returns a list of ASTs so we can split the AST before ↵Gravatar Damien Martin-Guillerez2016-02-07
| | | | | | | | | load statements Issue #824 Step 2. -- MOS_MIGRATED_REVID=113986176
* Rollback of commit f941d56acfad5f8c819c81b494f806ea74ea7fd8.Gravatar Carmi Grushko2016-02-02
| | | | | | | | | | | | | | | | | | *** Reason for rollback *** Breaks many targets, see [] *** Original change description *** Reinstate mutable SkylarkDict Add <String, Object> annotation to optionMap invocation in SkylarkAttr, to make JDK 1.7 happy. Give the visible name "aspect" to class SkylarkAspect. -- MOS_MIGRATED_REVID=113543873
* Fix wrapping of GlobList into SkylarkListGravatar Francois-Rene Rideau2016-02-01
| | | | | | | | | | | Make sure to wrap a GlobList into a MutableList in convertToSkylark. Indeed, GlobList is somehow a SkylarkValue, but is not actually acceptable as a Skylark value. Until this is cleaned up, tweak convertToSkylark. Also, robustify ClassObject by eagerly calling convertToSkylark on values. -- MOS_MIGRATED_REVID=113421790
* Reinstate mutable SkylarkDictGravatar Francois-Rene Rideau2016-02-01
| | | | | | | | | | Add <String, Object> annotation to optionMap invocation in SkylarkAttr, to make JDK 1.7 happy. Give the visible name "aspect" to class SkylarkAspect. -- MOS_MIGRATED_REVID=113394826
* Rollback of commit c0a8c58b9230a1f5d76269eb7dc6b11e18f19686.Gravatar Damien Martin-Guillerez2016-01-29
| | | | | | | | | | | | | | | | | | | | | | | *** Reason for rollback *** Break Java 1.7 builds of Bazel. See http://ci.bazel.io/job/Bazel/JAVA_VERSION=1.7,PLATFORM_NAME=linux-x86_64/327/console Test: git clone ... && git revert c0a8c58 && export JAVA_VERSION=1.7 && export BAZEL_COMPILE_TARGET=compile && bash -c "source scripts/ci/build.sh; bazel_build" *** Original change description *** Make Skylark dicts mutable Represent Skylark dict using a new subclass SkylarkDict<K, V> of Map<K, V>. Back it with a TreeMap to provide a deterministic iteration order. Also make SkylarkList generic in its element type <E>. Have Artifact implement Comparable<Object> so it can be used as TreeMap key. -- MOS_MIGRATED_REVID=113359718
* Make Skylark dicts mutableGravatar Francois-Rene Rideau2016-01-29
| | | | | | | | | | Represent Skylark dict using a new subclass SkylarkDict<K, V> of Map<K, V>. Back it with a TreeMap to provide a deterministic iteration order. Also make SkylarkList generic in its element type <E>. Have Artifact implement Comparable<Object> so it can be used as TreeMap key. -- MOS_MIGRATED_REVID=113277489
* Stop wrapping SkylarkList-s into new MutableList-sGravatar Francois-Rene Rideau2016-01-28
| | | | | | | | Fix convertToSkylark that was wrapping List-s into new MutableList-s, which became wrong since SkylarkList now implements List. -- MOS_MIGRATED_REVID=113256638
* Make SkylarkList a List.Gravatar Francois-Rene Rideau2016-01-22
| | | | | | | | | | | | | | | SkylarkList now implements the List interfaces, except that its mutating methods throw an UnsupportedOperationException, just like ImmutableList does. To actually mutate a SkylarkList, you need to pass a Location and a suitable Environment object with a matching Mutability while it is still active. Introduce SkylarkMutable and SkylarkMutable.MutableCollection to better handle mutable data structures. Remove some functions in EvalUtils made obsolete by this and previous changes regarding Skylark lists. -- MOS_MIGRATED_REVID=112768457
* Raise error if we find an unknown type in native.rule().Gravatar Han-Wen Nienhuys2016-01-21
| | | | | | | | | | | | Handle more types: * Boolean * TriState * SkylarkValue (eg. FileSetEntry) * skip Licenses, Distribs. -- MOS_MIGRATED_REVID=112690550
* Avoid auto-unboxing in Preconditions check that has string then two integer ↵Gravatar Janak Ramakrishnan2016-01-19
| | | | | | | arguments (seems too messy for a family of functions). -- MOS_MIGRATED_REVID=112472644
* General cleanup for the configured target / aspect creation code.Gravatar Ulf Adams2016-01-19
| | | | | | | | | | | | | | - update some comments - add some comments to make it easier to follow - delete some dead code, in particular the SkyframeDependencyResolver can never be null; remove an non-applicable @Nullable annotation I'm trying to figure out how the error handling code works, in order to add support for interleaved loading+analysis, which requires handling loading errors in this code path. -- MOS_MIGRATED_REVID=112456674
* ConfigurationFragmentPolicy: assume Skylark names, allow merging.Gravatar Michael Staib2016-01-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In preparation for allowing aspects to have their own configuration fragments specified, allow ConfigurationFragmentPolicy.Builder to merge with built policies more easily, setting up SetMultimaps in place of maps of sets. This changes how named (Skylark) fragments are declared in the RuleContext builder, hopefully to be a bit easier to write. In order to do this, make SkylarkModuleNameResolver the only name resolver in use (because it is the only name resolver which exists) so as to not worry about collisions of different name resolvers. This also changes isLegalConfigurationFragment's one-argument form to mean "legal in ANY configuration" rather than "legal in the target (NONE) configuration", as that is how it's used by TransitiveTargetFunction. Uses of it to mean the latter have been revised to be more explicit. Also in this CL: * refactor ConfigurationFragmentPolicy to enforce its contracts about which ConfigurationTransitions are legal * use containsEntry or containsValue rather than looking in get(key) or values() for the configuration fragment multimaps * add tests for ConfigurationFragmentPolicy * make SkylarkModuleNameResolver a static method -- MOS_MIGRATED_REVID=112191439
* Add list.append and list.extend to the documentationGravatar Laurent Le Brun2016-01-07
| | | | | -- MOS_MIGRATED_REVID=111600744
* Remove syntactic sugar when assigning to a dict item.Gravatar Laurent Le Brun2016-01-07
| | | | | | | | | | | | | | e.g. a['key'] = value is handled through a proper lvalue, instead of using syntactic sugar. Benefits include: - better error messages (reference to the '+' operator was cryptic) - more robust, e.g. it is compatible with the += operator - can be used in a tuple, e.g. a[1], a[2] = 3, 4 - it is a step towards mutable dict -- MOS_MIGRATED_REVID=111597545
* Fix small mistakes in some comments.Gravatar Francois-Rene Rideau2016-01-07
| | | | | -- MOS_MIGRATED_REVID=111530554
* Permit proto serialization of configured attribute valuesGravatar Mark Schaller2016-01-04
| | | | | | | | | This commit adds proto messages that represent configurable values, and modifies attribute value serialization code to handle those values, which are called SelectorLists. -- MOS_MIGRATED_REVID=111149272
* Add the source location of the import string to the LoadStatement AST node, ↵Gravatar John Field2016-01-04
| | | | | | | for use in tools. -- MOS_MIGRATED_REVID=111142252
* Add a new method to the SkylarkImport class to allow tools to access the ↵Gravatar John Field2016-01-04
| | | | | | | import as a PathFragment. -- MOS_MIGRATED_REVID=111138001
* Make unsafe list methods non-publicGravatar Laurent Le Brun2015-12-28
| | | | | -- MOS_MIGRATED_REVID=110838816
* Cleanup, code simplification, remove env.isSkylarkGravatar Laurent Le Brun2015-12-28
| | | | | -- MOS_MIGRATED_REVID=110836326
* Reduce differences between Skylark and Build evaluationGravatar Laurent Le Brun2015-12-28
| | | | | | | Add some functions to Build, allow method calls. -- MOS_MIGRATED_REVID=110835163
* Enable label-based Skylark loading. In particular, such labels may reference ↵Gravatar John Field2015-12-22
| | | | | | | | | | | | | | | | | | | files in external repositories. In addition: - Cleaned up and refactored some tests to reflect the new loading behavior. Deferred to future CLs: - Updating Bazel Skylark documentation to reflect the new load form. - Enabling command-line loading of Aspects via labels. RELNOTES: Skylark load statements may now reference .bzl files via build labels, in addition to paths. In particular, such labels can be used to reference Skylark files in external repositories; e.g., load("@my_external_repo//some_pkg:some_file.bzl", ...). Path-based loads are now deprecated and may be disabled in the future. Caveats: Skylark files currently do not respect package visibility; i.e., all Skylark files are effectively public. Also, loads may not reference the special //external package. -- MOS_MIGRATED_REVID=110786452
* Add list.popGravatar Laurent Le Brun2015-12-22
| | | | | -- MOS_MIGRATED_REVID=110778743
* Skylark: Slice operations now accept a step argument.Gravatar Florian Weikert2015-12-17
| | | | | -- MOS_MIGRATED_REVID=110446625
* Rollback of commit 21fbbd6a32b95ba746f09dae1eaeaccf675cd5b3.Gravatar Florian Weikert2015-12-17
| | | | | | | | | | | | | | | | | | | | | *** Reason for rollback *** The original CL broke our CI because Bazel used an old version of Guava (18.0 instead of 19.0). We fixed this problem, so we can roll forward the original change. *** Original change description *** Automated [] rollback of []. *** Reason for rollback *** Broke the build: http://ci.bazel.io/job/Bazel/262/ *** Original change description *** Skylark: implemented more string functions (isalnum, isdigit, etc). -- MOS_MIGRATED_REVID=110439750
* Rollback of commit d03485f1361ff825a976512959438321442c7c98.Gravatar Kristina Chodorow2015-12-16
| | | | | | | | | | | | | *** Reason for rollback *** Broke the build: http://ci.bazel.io/job/Bazel/262/ *** Original change description *** Skylark: implemented more string functions (isalnum, isdigit, etc). -- MOS_MIGRATED_REVID=110383960
* Add a new class to encapsulate operations on Skylark import statements. This ↵Gravatar John Field2015-12-16
| | | | | | | | | will make it easier to manage the transition from legacy Skylark path-style loads to label-based loads. We handle both old-style (path-based) imports and new-style (label-based) imports. This class is in the cmdline package since it depends on Label-related code in the same package. The cmdline package depends on the syntax package, so this class can't go there, which would otherwise be a reasonable place to put it. -- MOS_MIGRATED_REVID=110372547
* Move annotation classes used for referencing framework Java classes from ↵Gravatar John Field2015-12-16
| | | | | | | | | | | | | | Skylark into their own package. This allows, e.g., classes in the syntax package to access classes in the cmdline package without creating circular dependencies. While we're here: - Removed a couple of unused BUILD deps flagged in []. - Updated SkylarkRuleImplementationFunctionsTest to remove non-ASCII characters and clarify the intent of the test. -- MOS_MIGRATED_REVID=110360763
* Implement list.remove functionGravatar Laurent Le Brun2015-12-16
| | | | | -- MOS_MIGRATED_REVID=110356439
* Skylark: implemented all() and any()Gravatar Florian Weikert2015-12-16
| | | | | -- MOS_MIGRATED_REVID=110348607
* Fix documentation of set.Gravatar Laurent Le Brun2015-12-16
| | | | | | | Type "map" doesn't exist. "struct" is not allowed. -- MOS_MIGRATED_REVID=110265638
* Skylark: implemented more string functions (isalnum, isdigit, etc).Gravatar Florian Weikert2015-12-16
| | | | | -- MOS_MIGRATED_REVID=110261986
* Skylark: implemented reversed()Gravatar Florian Weikert2015-12-15
| | | | | -- MOS_MIGRATED_REVID=110141376
* Skylark: implemented min() and max().Gravatar Florian Weikert2015-12-13
| | | | | -- MOS_MIGRATED_REVID=110025690
* Skylark: implemented str.splitlines()Gravatar Florian Weikert2015-12-11
| | | | | -- MOS_MIGRATED_REVID=109942021
* Use Bazel Preconditions variant which avoids varargs array creationGravatar Mark Schaller2015-12-10
| | | | | | | Reduces garbage. -- MOS_MIGRATED_REVID=109914243