| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Dynamically Configured Resource Filtering change 3/6
Resource filtering behaves somewhat differently when dynamically configured.
Resources obtained from dependencies will have already been filtered and do not
need to be filtered again. Resources that were filtered out do not need to be
tracked since resource processing will never receive a reference to them
anyway.
Also, to make builds where ResourceFilter is dynamically configured, add equals
and hashCode methods (otherwise, the configuration code throws a
NullPointerException) and a global output prefix (otherwise, conflicts can
occur).
To ensure that the global output prefix (and the ResourceFilter object itself)
is the same regardless of the ordering of filters in the android_binary, build
the filters into a set, not a list, and sort them as part of creating the
ResourceFilter object. This way, for example, objects built with filters
"en,fr", "fr,en", and "en,en,fr" will all end up equal.
Finally, rename the getFilteredResources method to better reflect its new role,
and improve the isPrefiltering method to not try to prefilter if there are no
filters.
Add tests for all of this, and helper methods for all of those tests, including,
most notably, a makeResourceFilter method that instantiates a ResourceFilter
similarly to how it is actually created outside of tests (rather than directly
calling the constructor) and a fake implementation of AttributeMap to support
this.
RELNOTES: none
PiperOrigin-RevId: 162099178
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In this commit:
- remove unused methods and classes
- turn CustomCommandLine.ArgvFragment into an
interface
- remove the
CustomCommandLine.TreeFileArtifactArgvFragment
abstract class; it only had one remaining
subclass
- add @Nullable annotations where nulls are fine
- add Precondition checks for non-nullable args
- simplify the interface by removing add* methods
that can be composed of other add* methods; this
makes it easier to see what the callers do with
the Builder
- remove add* methods that add a single argument
followed by a list of other elements (or a
joined string of them); these had a bug in that
they didn't check if the collection was empty
(only that it was not null), and if it was empty
then the single argument was still added though
it was not followed by any value
- fix call sites of add* methods where we
previously could have added a flag with an empty
collection
- audit every affected call site
RELNOTES: none
PiperOrigin-RevId: 161957521
|
|
|
|
|
| |
RELNOTES: none
PiperOrigin-RevId: 161831232
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 160684786
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rollback of commit df366408188f0451bae9b2ed079c795a4beb2e2b.
In addition to undoing the rollback of my previous change, fix the bugs it
introduced and add tests for those bugs.
Always ignore empty filters. Empty filters are always useless or
counterproductive. Before the original change, empty filters as a single item
within the list of filters (e.g., ["en", ""]) were ignored, but empty filters
as a portion of a string in the list (e.g., ["en,"]) were not. I can't imagine
any reason people would actually want the empty filter (if it were handled
correctly, it would effectively tell Bazel to just ignore every other filter
the user passed in).
Since it makes more sense with the new code, represent the stringified filters
as a list of strings, rather than a single string of comma-seperated values.
Manually trim whitespace from each token. Before the original change, the code
trimmed whitespace following commas (e.g., ["en, es"] -> ["en,es"]) but not
otherwise. If we're allowing whitespace in filter strings anyway, there doesn't
seem to be any reason to allow it in some places but not others.
--
PiperOrigin-RevId: 151128685
MOS_MIGRATED_REVID=151128685
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 151000602
MOS_MIGRATED_REVID=151000602
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In addition to filtering android_binary resources by
resource_configuration_filters, we also filter by densities. Doing this in
analysis rather than execution should also result in a speed-up as there's no
need to copy files unwanted for actions to use.
This behavior is controlled by the same object and flags that already
control resource configuration filtering, simplifying the code.
--
PiperOrigin-RevId: 150871620
MOS_MIGRATED_REVID=150871620
|
|
|
|
|
|
|
|
| |
android_binary rules whose .apk artifacts get piped through appt to support split apks
--
PiperOrigin-RevId: 150701976
MOS_MIGRATED_REVID=150701976
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this change, resource_configuration_filters were only used to filter
resources out of android_binary targets during resource processing. Instead, we
can filter these unwanted resources out during analysis. This means we won't
have to copy these resources for use in execution, and that execution itself
will have a smaller set of inputs. This should produce a speed-up in
android_binary targets with resource_configuration_filters.
Also add a flag that controls this behavior. Currently, the flag defaults to
not doing this prefiltering. We'll change that after further testing.
Also, do some related cleanup:
- Replace repeated used of the constant "resource_configuration_filters" with
references to the new class
- Pass around instances of the new class rather that List<String> objects meant
to represent ResourceConfigurationFilters
--
PiperOrigin-RevId: 148353501
MOS_MIGRATED_REVID=148353501
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Rolling forward with fixes for the incremental tool.
*** Original change description ***
Automated [] rollback of commit d11d510c571b10787856395709f9ad945ca70bb2.
*** Reason for rollback ***
--
PiperOrigin-RevId: 146940409
MOS_MIGRATED_REVID=146940409
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
--
PiperOrigin-RevId: 146820790
MOS_MIGRATED_REVID=146820790
|
|
|
|
|
|
|
|
|
| |
This makes the code simpler as well as reducing the number of targets to build.
It also makes testing and profiling different action strategies vastly easier.
--
PiperOrigin-RevId: 146812659
MOS_MIGRATED_REVID=146812659
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 145686107
MOS_MIGRATED_REVID=145686107
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 144741831
MOS_MIGRATED_REVID=144741831
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This merges the AndroidResourceContainerBuilder (which it's not even clear is related to
the nested ResourceContainer!) into the newly generated ResourceContainer.Builder.
It also seemed ridiculous for ResourceContainer to get so large and still be subordinate
to AndroidResourcesProvider, especially when it's getting passed around in a lot of other
places (look how many imports needed fixing!). This CL makes it its own top level class.
This allows for easy modification of an existing instance: call toBuilder on it, set
the properties you want set, and then call build.
--
PiperOrigin-RevId: 143574468
MOS_MIGRATED_REVID=143574468
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is not yet exposed at the user level.
(https://developer.android.com/topic/libraries/data-binding/index.html).
See comments in DataBinding.java for the high-level overview of
how this works.
This does not yet work with
--experimental_use_parallel_android_resource_processing.
Exposing this at the user level additionally requires:
1) making the data binding support libraries available at an
expected place in the depot
2) Opting in android_binary / android_library rules through a new
"enable_data_binding" attribute.
--
MOS_MIGRATED_REVID=139797558
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=131832497
|
|
|
|
|
|
|
|
|
|
| |
Behind a flag. Flow is:
parse -> merge -> validate
\--> compile
With fewer deps across the merge steps.
--
MOS_MIGRATED_REVID=131634115
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Part 3 of the 3 new proposed android_library res
processing actions. Pulls a zip file from the
merging action, unpacks it, and then validates
the results with aapt. Get an R.txt and srcjar
w/ javadocs from aapt. In order to the get the
R.txt, I think you need to ask for the R.java
sources anyway.
Split the processResources() into a runAapt()
function that can be reused.
Hookup in bazel coming separately.
--
MOS_MIGRATED_REVID=131618410
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Part 2 of the 3 new proposed android_library res
processing actions. The primary and deps are all
assumed to be parsed+summarized in a protobuf.
Represent that with a new class (similar to
DependencyAndroidData but w/out R.txt).
Avoid having "manifest" artifacts as deps input,
and instead use "label", since that is only used
in a warning. DepAD still uses the manifest for
#asSymbolFileProvider, so we keep it there.
Move loading the primary out of the merge function
so that we can share the merge function with this
style of primary data, and the existing style of
of primary data (UnvalidatedAndroidData).
This produces an R class.jar and a zip file to
pass along to a future validation action. Images
are stubbed out since they are irrelevant to the
validation action.
--
MOS_MIGRATED_REVID=131604421
|
|
|
|
|
|
|
|
| |
This way they can be shared with a resource merge
spawn action builder (similar cmdline conventions).
--
MOS_MIGRATED_REVID=128804575
|
|
|
|
|
|
|
|
| |
Saves roughly 200ms per aapt invocation, when aapt is only used
for validation of resources.
--
MOS_MIGRATED_REVID=121863470
|
|
|
|
|
|
|
|
| |
Add bazel support for using the "aapt -D" command to generate a proguard
specification for components which need to be in the main dex.
--
MOS_MIGRATED_REVID=121531584
|
|
|
|
|
|
|
|
|
|
|
| |
This allows a user to turn off png crunching during
the final merge (with crunch_png = 0), but it does
not skip nine-patch processing.
RELNOTES: adds crunch_png attribute to android_binary
--
MOS_MIGRATED_REVID=119986498
|
|
|
|
|
|
|
| |
processing.
--
MOS_MIGRATED_REVID=119873729
|
|
|
|
|
|
|
|
|
| |
and specify --experimental_android_resource_shrinking on the command line.
RELNOTES: Specifying --experimental_android_resource_shrinking on the command line will enable a resource shrinking pass on android_binary targets that already use Proguard.
--
MOS_MIGRATED_REVID=116572863
|
|
|
|
|
|
|
| |
build tools version can be used to determine which features to use.
--
MOS_MIGRATED_REVID=114225514
|
|
|
|
|
|
|
| |
initial step toward changing the manifest merge to use the Gradle merger, as well as ensuring the custom library package is reflected in the manifest.
--
MOS_MIGRATED_REVID=112943820
|
|
|
|
|
|
|
| |
as a quote separated list and DensitySpecificResourceFilter missing some densities.
--
MOS_MIGRATED_REVID=108077692
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
deduplication of transitive and direct dependencies in the AndroidProcessingAction.
Change the resource dependency handling to separate between the transitive and direct resources from libraries.
This slightly increases the complexity of resource propagation. The initial algorithm was to simply merge all transitive ResourceContainers together with any new ResourceContainer and propagate them via the AndroidResourcesProvider. The new algorithm is encapsulated inside a new ResourceDependencies class which works as follows:
1. Collect resources from the deps into transitive and direct NestedSets
2. If a rule provides a ResourceContainer, merge the transitive and direct into a new transitive set
3. Export the provider
This results having a rule without resources "forward" the merged sets of transitive and direct resources to the next rule.
--
MOS_MIGRATED_REVID=105960655
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Breaks many android targets in the depot.
*** Original change description ***
Trying again with checking for the presence of the "resources" attribute.
Change the resource dependency handling to separate between the transitive and direct resources from libraries.
This slightly increases the complexity of resource propagation. The initial algorithm was to simply merge all transitive ResourceContainers together with any new ResourceContainer and propagate them via the AndroidResourcesProvider. The new algorithm is encapsulated inside a new ResourceDependencies class which...
***
ROLLBACK_OF=105631635
--
MOS_MIGRATED_REVID=105752015
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the resource dependency handling to separate between the transitive and direct resources from libraries.
This slightly increases the complexity of resource propagation. The initial algorithm was to simply merge all transitive ResourceContainers together with any new ResourceContainer and propagate them via the AndroidResourcesProvider. The new algorithm is encapsulated inside a new ResourceDependencies class which works as follows:
1. Collect resources from the deps into transitive and direct NestedSets
2. If a rule provides a ResourceContainer, merge the transitive and direct into a new transitive set
3. Export the provider
This results having a rule without resources "forward" the merged sets of transitive and direct resources to the next rule.
--
MOS_MIGRATED_REVID=105631635
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Breaks [].
*** Original change description ***
Change the resource dependency handling to separate between the transitive and direct resources from libraries.
This slightly increases the complexity of resource propagation. The initial algorithm was to simply merge all transitive ResourceContainers together with any new ResourceContainer and propagate them via the AndroidResourcesProvider. The new algorithm is encapsulated inside a new ResourceDependencies class which works as follows:
1. Collect resources from the deps into transitive and...
***
--
MOS_MIGRATED_REVID=105598448
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and direct resources from libraries.
This slightly increases the complexity of resource propagation. The initial algorithm was to simply merge all transitive ResourceContainers together with any new ResourceContainer and propagate them via the AndroidResourcesProvider. The new algorithm is encapsulated inside a new ResourceDependencies class which works as follows:
1. Collect resources from the deps into transitive and direct NestedSets
2. If a rule provides a ResourceContainer, merge the transitive and direct into a new transitive set
3. Export the provider
This results having a rule without resources "forward" the merged sets of transitive and direct resources to the next rule.
--
MOS_MIGRATED_REVID=105515074
|
|
|
|
|
|
|
|
|
|
|
| |
The headers were modified with
`find . -type f -exec 'sed' '-Ei' 's|Copyright 201([45]) Google|Copyright 201\1 The Bazel Authors|' '{}' ';'`
And manual edit for not Google owned copyright. Because of the nature of ijar, I did not modified the header of file owned by Alan Donovan.
The list of authors were extracted from the git log. It is missing older Google contributors that can be added on-demand.
--
MOS_MIGRATED_REVID=103938715
|
|
|
|
|
|
|
| |
the source tree when invoked from ApplicationManifest and AndroidLibrary.
--
MOS_MIGRATED_REVID=103648946
|
|
|
|
|
|
|
|
|
| |
Bazel unconditionally loads all the labels in configurations for now, and we don't want Android stuff to be loaded if the build doesn't have anything to do with Android. The alternative would be to fix this by not loading all configuration fragments, but this is the more expedient solution.
The SDK will be dealt with by binding //external:android/sdk to a dummy SDK unless overridden by an android_sdk_repository rule.
--
MOS_MIGRATED_REVID=97116824
|
|
|
|
|
|
|
| |
AndroidTools is not passed around anymore. This comes at the cost of having to remember to raise an error in every rule configured target factory, but I think this is preferable to shuttling a variable around.
--
MOS_MIGRATED_REVID=96746874
|
|
|
|
|
|
|
| |
be used to express the direct dependencies for resource processing.
--
MOS_MIGRATED_REVID=96037997
|
|
This is mostly a "[] mv", except for the extra constant that specifies the location of the Android SDK and moving the $zip attribute. They are minor enough to be included in this CL.
Tested by creating a Bazel tree, compiling it and verifying that the Android classes are in libblaze.jar. I also eyeballed the source as a final check that nothing sensitive gets leaked.
--
MOS_MIGRATED_REVID=93971892
|