| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
|
| |
build API to a global environment.
RELNOTES: None.
PiperOrigin-RevId: 197742427
|
|
|
|
|
|
|
| |
during filesystem operations.
RELNOTES: None.
PiperOrigin-RevId: 197740585
|
|
|
|
|
|
|
| |
This abstraction is not needed anymore.
RELNOTES: None.
PiperOrigin-RevId: 197739700
|
|
|
|
|
|
|
|
|
|
| |
the mobile-install aspect to pickup and desugar+dex only runtime jars without
running a manual filter step (which breaks transitive_runtime_jars depset at
every level).
NOTE: The method that this one wraps was originially created for the native dex
aspect which will eventually be migrated to Skylark too.
PiperOrigin-RevId: 197739483
|
|
|
|
|
|
|
| |
This is needed for re-writing match_clif in Skylark.
RELNOTES:none
PiperOrigin-RevId: 197738067
|
|
|
|
|
| |
RELNOTES: none
PiperOrigin-RevId: 197735344
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 197731580
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BusyBoxActionBuilder makes much cleaner action builders while making it harder
to do Bad Things (like collapsing NestedSets in analysis, or adding an artifact
to one of the command line and the inputs but not both).
Also:
- In merging, simplify the code somewhat by removing unneeded conditionals -
for example, the parsed merging action will always be built given the current
code.
- In the few builders where we aren't doing so already, parameter files should
always be shell quoted and always be used when the OS is Windows. The BusyBox
should always support the former and require the latter (although
sufficiently large inputs may have masked this by triggering parameter files
in Windows anyway).
- In the builder for linking (within validation), no longer collapse the
NestedSet of transitiveCompiledSymbols when adding them to the inputs. Using
the new BusyBoxActionBuilder code, trying to do this would throw an
IllegalStateException.
RELNOTES: none
PiperOrigin-RevId: 197728382
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the C++ runfiles library so it can use the
runfiles manifest (if present) and the runfiles
directory (if present) simultaneously.
If the Runfiles object fails to look up a runfile
from the manifest (or the manifest didn't exist or
wasn't found) then it looks it up from the
runfiles directory.
This change allows using the same binary with and
without a runfiles tree, which is often what sets
local and remote runs apart.
https://github.com/bazelbuild/bazel/issues/4460
Change-Id: Iae879ff084ba084fcd7c111638ddeae4c6754f4f
Closes #5235.
Change-Id: Iae879ff084ba084fcd7c111638ddeae4c6754f4f
PiperOrigin-RevId: 197726412
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove java support from proto_library.
NEW: Allow java_* rules to depend on proto_libraries via runtime_deps and exports. This should avoid the breakage that caused the original rollback. The edges are no-ops and could be removed.
*** Reason for rollback ***
Targets in the repository are still able to depend on proto_library rules
even after the --noemit_proto_java_outputs flag flip. Removal of the Java
support from proto_library breaks them.
PiperOrigin-RevId: 197725926
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Change introduced flakiness in //src/test/java/com/google/devtools/build/lib:actions_test
Verified the culprit commit using:
bazel test //src/test/java/com/google/devtools/build/lib:actions_test --runs_per_test=100 --notest_keep_going -t-
See https://github.com/bazelbuild/bazel/issues/5242.
*** Original change description ***
Relax the threshold for calling getDigestInExclusiveMode().
If the policy goal is to minimize disk seeks, this should be equally good.
RELNOTES: None.
PiperOrigin-RevId: 197720793
|
|
|
|
|
|
|
|
| |
http_jar is another version of the native http_archive. So add it
to the Skylark-implementation as well.
Change-Id: Icbaafe18d4836e14b0f5eb09dc3ab0607f9e391d
PiperOrigin-RevId: 197719717
|
|
|
|
|
|
|
|
| |
Related issue: https://github.com/bazelbuild/bazel/issues/1013
Fix https://github.com/bazelbuild/bazel/issues/5243
RELNOTES:
PiperOrigin-RevId: 197715690
|
|
|
|
|
|
|
| |
support.
RELNOTES: None.
PiperOrigin-RevId: 197708692
|
|
|
|
|
| |
RELNOTES: None.
PiperOrigin-RevId: 197707463
|
|
|
|
|
|
|
|
| |
The constructors which don't accept an action environment should not be called,
with the exception of subclasses that don't run any subprocesses, and therefore
don't need an environment.
PiperOrigin-RevId: 197706734
|
|
|
|
|
|
|
|
|
|
| |
Prune down the list of attributes to the explicitly set ones when reporting
the original attributes. The attribute list also contains attributes implicitly
added from default values, but the original attributes are intended to record
the original way the rule was invoked from the WORKSPACE file.
Change-Id: I918656159850a52e9afc9f045701b0ea065f4125
PiperOrigin-RevId: 197702283
|
|
|
|
|
|
|
|
|
|
| |
This is in preparation for removing the AbstractAction constructors that do
not accept an action environment (with the exception of the first one, which
is intended for use by actions which don't need an environment at all, e.g.,
file write actions).
SKIP_CI=Flaky windows test (see #5242)
PiperOrigin-RevId: 197701713
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Baseline: fdee70e6e39b74bfd9144b1e350d2d8806386e05
Cherry picks:
+ f083e7623cd03e20ed216117c5ea8c8b4ec61948:
windows: GetOutputRoot() returns GetHomeDir()
+ fa36d2f48965b127e8fd397348d16e991135bfb6:
Automated rollback of commit
4465dae23de989f1452e93d0a88ac2a289103dd9.
+ 4abd2babcc50900afd0271bf30dc64055f34e100:
Add error message on empty public resources
+ 2c957575ff24c183d48ade4345a79ffa5bec3724:
test-setup: remove leading "./" from test name
+ e6eaf251acb3b7054c8c5ced58a49c054b5f23b1:
Sort entries by segment when building a parent node to prevent
unordered directory structures.
Important changes:
- Remote Execution: Fixes a regression that produces directories with unsorted file/directory lists
|
|
|
|
|
|
| |
visibility in Skyframe classes.
PiperOrigin-RevId: 197665817
|
|
|
|
|
|
| |
Having it in there makes serializing events harder.
PiperOrigin-RevId: 197648233
|
|
|
|
|
|
| |
Makes it easier to serialize Events.
PiperOrigin-RevId: 197640007
|
|
|
|
|
|
|
|
| |
message in build_event_stream.proto.
This gets in the way of serializing TargetCompleteEvent.
PiperOrigin-RevId: 197630444
|
|
|
|
|
|
|
| |
This dramatically improves documentation generation for JavaInfo and it makes it far more maintainable and extensible going forward.
RELNOTES: None.
PiperOrigin-RevId: 197619040
|
|
|
|
|
|
| |
Also consolidate code with getattr so getattr now also gets typo detection.
PiperOrigin-RevId: 197612666
|
|
|
|
|
|
|
| |
If the policy goal is to minimize disk seeks, this should be equally good.
RELNOTES: None.
PiperOrigin-RevId: 197611813
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BusyBoxActionBuilder makes much cleaner action builders while making it harder
to do Bad Things (like collapsing NestedSets in analysis, or adding an artifact
to one of the command line and the inputs but not both).
Remaining action builders will be moved in the next change.
Add old manifest merger tool to AndroidDataContext.
RELNOTES: none
PiperOrigin-RevId: 197607155
|
|
|
|
|
|
| |
through SerializationContext, to save a byte.
PiperOrigin-RevId: 197597779
|
|
|
|
|
|
|
|
|
| |
Remove all references to `Token` (except one) in the parser. In particular,
remove the mechanism to push tokens back. This change will make possible for
the lexer to reuse tokens instead of allocating new objects each time.
RELNOTES: None.
PiperOrigin-RevId: 197585185
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Many of the Busybox action building classes rely heavily on RuleContext. While
we're migrating them to AndroidDataContext, we may as well also move them to
use the BusyBoxAxtionBuilder, which removes a lot of boilerplate and makes bad
practices (like collapsing NestedSets) harder to do by accident. The
BusyBoxActionBuilder needs some more methods to cover all the behavior seen in
various action builders, so update it in one change now rather than scattering
these changes across many different reviews.
RELNOTES: none
PiperOrigin-RevId: 197584157
|
|
|
|
|
|
|
|
| |
New names are dynamicLibrariesForLinkingStatically and
dynamicLibrariesForLinkindDynamically respsectively.
RELNOTES: None.
PiperOrigin-RevId: 197579028
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 197578417
|
|
|
|
|
|
|
|
| |
With this change, the parser explicitly asks the lexer to give the next token.
To avoid changing the lexer too much, the tokenize() method populates a queue (it may add multiple tokens at the same time). While this reduces the peak memory usage, further work is needed to actually improve the performance.
RELNOTES: None.
PiperOrigin-RevId: 197576326
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that the AndroidDataContext is passed everywhere, we can begin modifying
action builders.
This includes removing Label information from Proguard artifact paths.
getUniqueDirectoryArtifact() already included label earlier in the path, so
this information was redundant anyway.
RELNOTES: none
PiperOrigin-RevId: 197576210
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The difference between them is that user_link_flags will stay after we remove
legacy fields from the crosstool.
This is an encore of https://github.com/bazelbuild/bazel/commit/2661abb96b1fe51fb726a63eb08698564a82eb20 after mitigating the memory regression.
Original cl regressed 12mb (on a big enough internal project :):
objsize chg instances space KB class name
------------------------------------------------------
24 +0 190265 4459 KB com.google.common.collect.ImmutableMapEntry
40 +0 95154 3716 KB com.google.common.collect.RegularImmutableMap
47 -2 95154 2230 KB [Ljava.util.Map$Entry;
44 -1 95154 2230 KB [Lcom.google.common.collect.ImmutableMapEntry;
24 +0 95149 2230 KB com.google.devtools.build.lib.rules.cpp.CcToolchainVariables$MapVariables
16 +0 95149 1486 KB com.google.devtools.build.lib.rules.cpp.CcToolchainVariables$StringSequence
89 +0 3188 176 KB [B
64 -8 0 -743 KB com.google.devtools.build.lib.rules.cpp.LinkCommandLine
76 +0 -1918 -1323 KB [Ljava.lang.Object;
24 +0 -95149 -2230 KB com.google.devtools.build.lib.rules.cpp.CcToolchainVariables$SingleVariables
------------------------------------------------------
The reason was that before legacy_link_flags were the only build variable
patched because of thinlto in CppLinkActionBuilder, so it used optimized
SingleVariables subclass. With the split, the patched variables instance had 2
variables therefore it received the full blown Variables instance. That
accounted for the ~7mb.
The fix was to move the patching logic to the initial link variables creation
and not to create patched variables at all. Now the regression is ~4.8mb, which
is perfectly expected since I introduce another variable and this is the
overhead of additional hashmap entry:
objsize chg instances space KB class name
------------------------------------------------------
24 +0 190418 4462 KB com.google.common.collect.ImmutableMapEntry
44 +1 31 1487 KB [Lcom.google.common.collect.ImmutableMapEntry;
16 +0 95149 1486 KB com.google.devtools.build.lib.rules.cpp.CcToolchainVariables$StringSequence
47 +0 31 744 KB [Ljava.util.Map$Entry;
89 +0 5723 315 KB [B
24 +0 5721 134 KB java.lang.String
64 -8 0 -743 KB com.google.devtools.build.lib.rules.cpp.LinkCommandLine
76 +0 -2387 -840 KB [Ljava.lang.Object;
24 +0 -95149 -2230 KB com.google.devtools.build.lib.rules.cpp.CcToolchainVariables$SingleVariables
------------------------------------------------------
I'll pay this dept back once we get rid of legacy crosstool fields (= removal of
legacy_link_flags variable).
RELNOTES: None.
PiperOrigin-RevId: 197574153
|
|
|
|
|
|
|
|
| |
Instead, internally look up the correct context by mnemonic. This simplifies
all the callers. We still need a little bit of special casing when constructing
the action context map.
PiperOrigin-RevId: 197572357
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Manifest processing methods are particularly messy for this migration, since
the old ApplicationManifest class is still around. Anyway, pass around
AndroidDataContext instead of RuleContext everywhere we can.
Note that the built-in expander does not seem able to be modified to support
decoupling attributes and other information, and thus really can't be done once
we get rid of RuleContext. Instead, for Skylark rules, document that expansion
must happen outside of the Android data Skylark method calls (for example, for
manifest_values and nocompress_extensions).
RELNOTES: none
PiperOrigin-RevId: 197567541
|
|
|
|
|
|
|
|
| |
As before, actual action builders will be changed in a future CL; this just
starts moving AndroidDataContext in so it's available.
RELNOTES: none
PiperOrigin-RevId: 197561737
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the first step towards using AndroidDataContext in all of Android data
processing.
This change does not actually modify the asset and resource processing action
builders themselves - they will be migrated in an upcoming change.
Also, add AndroidSemantics to some rules so they can make an
AndroidDataContext.
RELNOTES: none
PiperOrigin-RevId: 197555938
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change makes Bazel respect artifact name patterns specified in
CROSSTOOL.
Users cannot specify any arbitrary name pattern, it must ends with allowed
extensions. For example, for dynamic library, it can only ends with .so,
.dylib or .dll, otherwise Bazel throws an error.
Change-Id: I21d9e6fa7c3a282e1a9b8ff29679b00925cddb33
PiperOrigin-RevId: 197553413
|
|
|
|
|
|
|
| |
Taken from https://releases.bazel.build/bazel-toolchains.html
RELNOTES: None
PiperOrigin-RevId: 197551496
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new object wraps Label, ActionConstructionContext, and various
data-related tools (currently, just the resource Busybox and the Android SDK).
All three of these things are required for creating pretty much any action for
working with Android assets, resources, and manifests, so it makes sense to
pass them around together.
Eventually, we'll use this class instead of RuleContext in any code called from
the Skylark APIs. For now, though, just have it wrap a RuleContext - the
migration away from that will happen in future changes.
Change the current Skylark API to take this class, rather than a
SkylarkRuleContext. This is the first step towards not passing RuleContext (or
SkylarkRuleContext) into the Skylark API.
RELNOTES: none
PiperOrigin-RevId: 197549155
|
|
|
|
| |
PiperOrigin-RevId: 197545650
|
|
|
|
|
|
|
|
| |
In particular, fix its use of client make variables.
Fixes #4750.
PiperOrigin-RevId: 197545415
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new method discovers the runfiles manifest and
runfiles directory using the values of the
RUNFILES_MANIFEST_FILE and RUNFILES_DIR envvars
(if specified), and if needed, also looks for them
next to sys.argv[0].
This commit is a copy of https://github.com/bazelbuild/bazel/commit/9f2b052d93bfd188687f28fe6771f390d3626936
ported from C++ to Python.
See https://github.com/bazelbuild/bazel/issues/4460
Change-Id: I6916366ca73575703fe39ce69020eec3b54457bf
Closes #5233.
Change-Id: I6916366ca73575703fe39ce69020eec3b54457bf
PiperOrigin-RevId: 197544480
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Compute the list of environment variables when
creating the runfiles library instead of computing
it on-demand.
Since we already have the manifest and directory
path from Runfiles::PathsFrom, creating the vector
is cheap, though we have to store it even if we
don't use it later.
In a subsequent change I'll merge the manifest-
and directory-based implementations into
RunfilesImpl, and collapse RunfilesImpl into the
Runfiles base class. The point of that is to make
the runfiles library be able to handle both the
directory-based and the manifest-based case
simultaneously, dependening on what is available
to it in the filesystem.
See https://github.com/bazelbuild/bazel/issues/4460
Change-Id: I56310423528df2d0f7494f45904150193368e2d6
Closes #5218.
Change-Id: I73d1f44611c4b0a73c41162319d0ba7a8a4ae6d7
PiperOrigin-RevId: 197543865
|
|
|
|
|
|
|
|
|
| |
New names are dynamicLibrariesForLinking and
dynamicLibrariesForRuntime respectively. This is just a cleanup to make the
code more understandable.
RELNOTES: None.
PiperOrigin-RevId: 197535811
|
|
|
|
| |
PiperOrigin-RevId: 197508159
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 197504627
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, if there are non-suppressed errors during aapt2 processing, Bazel does not print them.
This helps with debugging https://github.com/bazelbuild/bazel/pull/5222
With this, I get:
```
ERROR: /usr/local/google/home/jingwen/code/android_scratch_project/examples/android/java/bazel/BUILD:16:1: Processing Android resources for //examples/android/java/bazel:hello_world failed (Exit 1)
May 21, 2018 5:31:01 PM com.google.devtools.build.android.ResourceProcessorBusyBox main
SEVERE: java.io.IOException: Is a directory
Target //examples/android/java/bazel:hello_world failed to build
```
instead of just:
```
ERROR: /usr/local/google/home/jingwen/code/android_scratch_project/examples/android/java/bazel/BUILD:16:1: Processing Android resources for //examples/android/java/bazel:hello_world failed (Exit 1)
Target //examples/android/java/bazel:hello_world failed to build
```
RELNOTES: None.
PiperOrigin-RevId: 197493881
|