aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* LateBoundDefault: enforce access to a single fragment (or none).Gravatar mstaib2017-09-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Automated rollback of commit 743dc14f9f30b80d6d821612f77186afb025477d.Gravatar dslomov2017-09-19
| | | | | | | | | | | | | | | | | | | | | | | *** Reason for rollback *** Rollforward with a fix *** Original change description *** Automated rollback of commit 0ee3aa622fc13b8a5072ebddf5cd65823413b4ff. *** Reason for rollback *** Likely causing artifact conflicts for middleman artifacts in some cases due to accidental change of getMiddlemanDir() to getBinDir() in RunfilesSupport.createManifestMiddleman. *** Original change description *** Cleanup ActionConstructionContext. Do not expose the underlying Rule. RELNOTES: None. PiperOrigin-RevId: 169241011
* Treat parsed option values differently by option type.Gravatar ccalvarin2017-09-19
| | | | | | | | | | | | | | | | There is a vexingly large world of possible option types, each with its own quirks of how it interfaces with new inputs as they come in: values can be - overridden (default) - concatenated (allowMultiple) - flattened (allowMultiple that accepts list inputs) - disappear into additional flag inputs (expansion flags) Or some combination of the above, in the case of flags with implicit dependencies and wrapper options. Begin removing the error-prone treatment of all option types with conditional branches. This model of the different options will make it much easier to isolate the option-type specific logic with the command-line parsing logic. Flags that affect other flags (implicit requirements, expansions, and wrappers) will be migrated in a later change. This CL does not change flag parsing semantics, just migrates the current parsing logic to the new class structure. RELNOTES: None. PiperOrigin-RevId: 169239182
* Wrap runtime jars and proto sources going into runfiles in a stable order ↵Gravatar tomlu2017-09-19
| | | | | | | | nested set. This saves memory, as the nested set would otherwise become flattened. Assuming the jars don't have duplicates files with the same root relative path in the same runfiles tree this won't make any semantic difference. PiperOrigin-RevId: 169234428
* Defer expanding sources to path fragments until execution for source jar ↵Gravatar tomlu2017-09-19
| | | | | | actions. PiperOrigin-RevId: 169234341
* Implement support for Skylark param files.Gravatar tomlu2017-09-19
| | | | PiperOrigin-RevId: 169234249
* Do not duplicate build variables, reuse variables from cc toolchainGravatar hlopko2017-09-19
| | | | | | | | | | | Before this cl each linking and compilation action would contain a full copy of all build variables. However, some build variables can be reused, for the memory consumption benefit. With this cl, we contruct a Variables instance in the CcToolchain, and make it a parent of all per-linking and per-compilation variables. RELNOTES: None. PiperOrigin-RevId: 169233756
* Automated rollback of commit 0ee3aa622fc13b8a5072ebddf5cd65823413b4ff.Gravatar ulfjack2017-09-19
| | | | | | | | | | | | | | | *** Reason for rollback *** Likely causing artifact conflicts for middleman artifacts in some cases due to accidental change of getMiddlemanDir() to getBinDir() in RunfilesSupport.createManifestMiddleman. *** Original change description *** Cleanup ActionConstructionContext. Do not expose the underlying Rule. RELNOTES: None. PiperOrigin-RevId: 169230095
* Add files that were droped by our export processGravatar dmarting2017-09-19
| | | | | | | | | Those files are not linked anywhere and where removed by the export process either by accident or for better support from IntelliJ. According to ij.bazel.build a non linked target will not be analyzed so it should be safe. PiperOrigin-RevId: 169229654
* CI,windows: create test_suites for Windows testsGravatar László Csomor2017-09-19
| | | | | | | This change is the //third_party counterpart of https://bazel-review.googlesource.com/c/bazel/+/16910 Change-Id: I56d285a0d4b3eb369f678525b111f16bf3a7da5c
* Remove an unused method.Gravatar lberki2017-09-19
| | | | | RELNOTES: None. PiperOrigin-RevId: 169223392
* Expose full compile time jars in SkylarkGravatar elenairina2017-09-19
| | | | | | | | | | | There are several use cases for using full compile time jars instead of ijars (scala macros cannot use ijar, kotlin dependencies, etc). This change allows creating a provider with or without creating interface jars for compile time, exposing the right full/interface jars on target[JavaInfo].compile_jars and target[JavaInfo].full_compile_jars. For more details see https://github.com/bazelbuild/bazel/issues/3528. Fixes #3528 RELNOTES: java_common.create_provider is now supported with creating ijars by default. This introduces incompatibilities for existing users. Please set use_ijar=False if you don't want to use ijars. PiperOrigin-RevId: 169222793
* Inform SkyframeExecutor when a command starts.Gravatar janakr2017-09-19
| | | | PiperOrigin-RevId: 169179218
* Move RuleConfiguredTarget to lib.analysis.configuredtargets.Gravatar gregce2017-09-19
| | | | | | This is a trivial change with a large file footprint. PiperOrigin-RevId: 169169864
* Cleanup some databinding code that was messed up by ↵Gravatar ajmichael2017-09-19
| | | | | | | https://github.com/bazelbuild/bazel/commit/b30b3de23a7fa01b8290ace0e688d75405689825 RELNOTES: None PiperOrigin-RevId: 169169249
* ConstraintsTest: use the new mock rule interfaceGravatar gregce2017-09-19
| | | | PiperOrigin-RevId: 169163737
* Make ObjectCodecs.ClassKeyedBuilder more reasonableGravatar michajlo2017-09-19
| | | | | | | | | Not sure why we passed in Class<T>, ObjectCodec<? extends T> - it should really be the other way around, since ObjectCodec<T> should be able to serialize <? extends T>.... RELNOTES: None PiperOrigin-RevId: 169161061
* Remove flags with no effect from --dexopts_supported_in_dexmerger default in ↵Gravatar kmb2017-09-19
| | | | | | | | preparation for removing those flags from the tool. RELNOTES: none PiperOrigin-RevId: 169154032
* use toList.contains for depset containsKey instead of toSetGravatar cparsons2017-09-19
| | | | | | | This should be a slight performance improvement on the previous implementation, as NestedSet.toSet() calls toList() and then throws the contents into a set RELNOTES: None. PiperOrigin-RevId: 169150743
* Uploading failed action outputs to the remote cache, because even if the ↵Gravatar olaola2017-09-19
| | | | | | | | | tests fails, we still want to be able to download the logs and other outputs from CAS. This fixes a bug introduced by https://github.com/bazelbuild/bazel/commit/562fcf9f5dfd14daea718f77da95b43b1400689b. To reproduce: run a failing test vs a BES service, the test log would not be uploaded. TESTED=unit tests PiperOrigin-RevId: 169143428
* Remove unnecessary injection of precomputed values. Precomputed values are ↵Gravatar janakr2017-09-19
| | | | | | injected in BlazeCommandDispatcher#execExclusively. PiperOrigin-RevId: 169122571
* Move some more tests from the legacy case to the crosstool case.Gravatar cpeyser2017-09-19
| | | | PiperOrigin-RevId: 169116918
* Cleanup ActionConstructionContext.Gravatar dslomov2017-09-19
| | | | | | | Do not expose the underlying Rule. RELNOTES: None. PiperOrigin-RevId: 169109552
* Unify buildevnts indicating build completionGravatar Klaus Aehlig2017-09-19
| | | | | | | ...by factoring out the common code parts. Change-Id: I2ead39ea218dd535af9684a81a7bbe29b558aa27 PiperOrigin-RevId: 169106854
* Make desugar tests assume android-24.Gravatar ajmichael2017-09-19
| | | | | | | | | | | Previously, they assumed android-25 but Bazel CI does not have android-25 installed. In practice, these tests do not care which version is used so we should use //tools/android:defaults_jar which selects the jar based on the configuration. However, that target does not produce the jar as a runfile, it is only useful currently for neverlink compilation. RELNOTES: None PiperOrigin-RevId: 169104539
* Move a test from the legacy case to the crosstool case.Gravatar cpeyser2017-09-19
| | | | PiperOrigin-RevId: 169101689
* Fix documentation for android_sdk_repository.build_tools_version.Gravatar ajmichael2017-09-18
| | | | | RELNOTES: None PiperOrigin-RevId: 169092834
* Move some tests from legacy to crosstool case.Gravatar cpeyser2017-09-18
| | | | PiperOrigin-RevId: 169087881
* Java Launcher: Create classpath jar with a random nameGravatar Yun Peng2017-09-18
| | | | | | | | | | | | | | | When the classpath is too long, the launcher creates a jar file to pass the classpath value. This change makes the jar file's name random. It fixed the bug that when running multiple instances of the same java binary, they all try to create the same classpath jar file. For example, when running java_test with shard_count > 1. Also, we delete the classpath jar file after the program finishes, so that we don't leave any garbages behind. Change-Id: I67926b3ef76dcb1806797e977ecaa7c6763c5cf2 PiperOrigin-RevId: 169087032
* build_event_stream_test: simplify quotingGravatar Klaus Aehlig2017-09-18
| | | | | | | | | ...by quoting the delimiter of the here-documents, instead of the documents themselves. This is possible as the here-documents are constants in that test (not depending on the test setup). Change-Id: If272060ce9f6384821e4bd0bd9033925bd1efe9c PiperOrigin-RevId: 169080394
* Fix BEP to report SKIPPED with TargetCompletedId instead of ConfigurationIdGravatar Googler2017-09-18
| | | | PiperOrigin-RevId: 169067125
* RELNOTES: Fix documentation typo.Gravatar Googler2017-09-18
| | | | PiperOrigin-RevId: 169060289
* bazel_bootstrap_distfile_test: fix unbound varsGravatar laszlocsomor2017-09-18
| | | | | | | | | | When printing envvars, use "${FOO:-}" instead of "${FOO}", so the test won't fail if an envvar is undefined. See https://github.com/bazelbuild/bazel/issues/3618 PiperOrigin-RevId: 169059836
* Change param file arg string to a format string instead of a prefix string.Gravatar tomlu2017-09-18
| | | | | | Makes it easier to do Skylark param file support which uses a format string. PiperOrigin-RevId: 169019600
* Project reorg: move *ConfiguredTarget to new configuredtargets/ pathGravatar gregce2017-09-18
| | | | | | | Exempt RuleConfiguredTarget in this change because that's liable to touch a billion files. PiperOrigin-RevId: 168929827
* Remove LipoTransition (and replace remaining LIPO_COLLECTOR references).Gravatar gregce2017-09-18
| | | | | | | | Rules should now be configured directly with patch transitions. This brings down our transition interfaces to: Transition, ConfigurationTransition, SplitTransition, PatchTransition. PiperOrigin-RevId: 168927364
* Move PrenotCalculator from Bazel examples to rules_apple examples.Gravatar allevato2017-09-18
| | | | | | This also migrates the example to the new rules_apple ios_application rule, since the native Bazel rule is being deleted. PiperOrigin-RevId: 168902357
* Fix PlatformInfo to correctly report all duplicate constraints, not just the ↵Gravatar John Cater2017-09-18
| | | | | | | first. Change-Id: I3d78418d2c51d09e3862fbab1854ae73a0b3253c PiperOrigin-RevId: 168889865
* Add expectThrows to MoreAsserts until we can use JUnit 4.13.Gravatar jcater2017-09-18
| | | | PiperOrigin-RevId: 168883984
* Every rule class that uses a cc_toolchain also has knowledge of the label forGravatar cpeyser2017-09-18
| | | | | | the c++ toolchain type through an implicit attribute. PiperOrigin-RevId: 168864540
* Annotate legacy objc rulesGravatar cparsons2017-09-18
| | | | | RELNOTES: None PiperOrigin-RevId: 168862724
* PiperOrigin-RevId: 168854156Gravatar carmi2017-09-18
|
* Throw away the confusing UnparsedOptionValueDescription name.Gravatar ccalvarin2017-09-18
| | | | | | | | | | | | | | We get UnparsedValues after ... parsing the options. So that doesn't make sense. What was meant was that it wasn't converted to the final value. In an effort to make this distinction more clear, this change will make the terminology more consistent. The `--foo=bar` step is "parsing" and the `bar -> Object` step is "converting" (it is, in fact, done by Converters). RELNOTES: None. PiperOrigin-RevId: 168852847
* Shard AndroidLibraryTest.Gravatar ajmichael2017-09-18
| | | | | | | But not for Bazel because of #3719 RELNOTES: None PiperOrigin-RevId: 168836686
* Toolchain type labels for c++ are filegroups instead of toolchain_type.Gravatar cpeyser2017-09-18
| | | | PiperOrigin-RevId: 168835640
* Automated rollback of commit f26e8694ae78599b3e2004e3360eaf3443fa53a6.Gravatar hlopko2017-09-18
| | | | | | | | | | | | | | | | | | | | *** Reason for rollback *** Breaks clang_tidy. *** Original change description *** Introduce -c source_file -o output_file build variables Prior to this cl CompileCommandLine would (almost) unconditionally emit -c and -o flags. This cl removes this logic and relies on crosstool to emit these flags. This is another small step towards platform independent C++ rules. Memory use is not affected, since the build variables used by this cl are already exposed, this cl just forces crosstools to use it. RELNOTES: None. PiperOrigin-RevId: 168834576
* Bazel now can build dynamic library from cc_libraryGravatar Yun Peng2017-09-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Working towards: https://github.com/bazelbuild/bazel/issues/3311 When building dynamic library on Windows, Bazel builds an import library and a DLL. Bazel provides a feature called windows_export_all_symbols, if this feature is enabled(and no_windows_export_all_symbols is not) for a cc_library, then Bazel parses object files of that cc_library to generate a DEF file that will be used during linking time to export symbols from DLL. This feature can be specified at crosstool, package, target and command line level. A few differences from Unix platforms: 1. We don't build the shared library on Windows by default, users have to specifiy --output_groups=dynamic_library for building dynamic libraries. This output group is also available on other platforms. 2. By default, cc_test is dynamically linked on Unix, but it will be statically linked on Windows by default. (meaning the default value of linkstatic in cc_test is 1 on Windows, and 0 on other platforms) 3. For global data symbols, __declspec(dllimport) must still be used in source files. Remaining issues: 1. Extensions for import library and DLL are not correct yet. 2. DLLs are not guaranteed to be available during runtime yet. 3. Diamond problem If a cc_library A is specified as linkstatic=0, then no dynamic library will be built for it, so if another cc_library B depends on it, A will be statically linked into B, and if a cc_binary C depends on B, A will also be statically linked into C and B will be dynamically linked to C. This is wrong because A is duplicated in both B and C. It is essentially a diamond problem describled in C++ Transitive Library. (https://docs.google.com/document/d/1-tv0_79zGyBoDmaP_pYWaBVUwHUteLpAs90_rUl-VY8/edit?usp=sharing) Hopefully, we can avoid this by using cc_shared_library rule in future. Change-Id: I23640d4caf8afe65d60b1522af6368536d7a8408 PiperOrigin-RevId: 168829958
* Skylark doc: add table of contents hintsGravatar dmarting2017-09-18
| | | | PiperOrigin-RevId: 168818956
* PiperOrigin-RevId: 168816247Gravatar dmarting2017-09-18
|
* `repository_name()` and `package_name()` are available only in loading phaseGravatar laurentlb2017-09-18
| | | | | RELNOTES: None. PiperOrigin-RevId: 168815084