Commit graph

20509 commits

Author SHA1 Message Date
Anton Hansson
ac103461a4 Improve the structure of the link check method
Match by name first, then by kind.

Bug: 157010342
Test: m
Change-Id: Ic337a073c3bd14ac03b1d899aeb612247a708495
2020-05-25 12:48:09 +01:00
Anton Hansson
83ef435005 Merge "Revert "Default annotations_enabled to true for sdk_library"" into rvc-dev 2020-05-25 09:50:36 +00:00
Anton Hansson
c9cc20cbe8 Revert "Default annotations_enabled to true for sdk_library"
This reverts commit a9a3173ee3.

Bug: 157010342
Reason for revert: broke ike
Exempt-From-Owner-Approval: clean revert
Change-Id: I592f50d0263ce78ea6d0d335cc7e0f493fcff800
2020-05-25 09:49:48 +00:00
Anton Hansson
933e19a587 Merge "Default annotations_enabled to true for sdk_library" into rvc-dev 2020-05-25 09:11:23 +00:00
Anton Hansson
601fdd97b6 Merge "Don't require merge_annotations_dir for annotations_enabled" into rvc-dev 2020-05-25 08:58:07 +00:00
Remi NGUYEN VAN
1834358aa5 Revert "java_sdk_library: Extract common stubs redirect code"
This reverts commit f97ca37fce.

Reason for revert: Broke presubmit: b/157231582

Change-Id: I10764cf843f2ab8d57fa93aaaef8b68d2793b9c4
2020-05-25 02:12:49 +00:00
Remi NGUYEN VAN
b71d7f8aac Revert "java_sdk_library: Add redirection to module-lib stubs"
This reverts commit fe82172afb.

Reason for revert: Broke presubmit: b/157231582

Change-Id: Ifec2d2cf58d00ed320db65069a49290e31f8bda4
2020-05-25 02:12:18 +00:00
Remi NGUYEN VAN
2ee93a5de9 Revert "java_sdk_library: Improve consistency with ..._import"
This reverts commit dce3fe78f0.

Reason for revert: Broke presubmit: b/157231582

Change-Id: I638e0e090f3242ed5a9a3134cbe380e872411247
2020-05-25 02:07:31 +00:00
Remi NGUYEN VAN
58e4165b60 Revert "java_sdk_library: Access outputs using tags"
Revert submission 11569833

Reason for revert:  Broke presubmit: b/157231582
Reverted Changes:
Ia99def91e:Improve tracking of exported sdk libraries
If91b4d106:java_sdk_library: Do not expose stubs implementati...
Id6d76e56c:java_sdk_library: Access outputs using tags

Change-Id: Icf7091bf0068ad16835013b1003527948a5c998f
2020-05-25 02:06:07 +00:00
Remi NGUYEN VAN
43e1734985 Revert "java_sdk_library: Do not expose stubs implementation jar"
Revert submission 11569833

Reason for revert:  Broke presubmit: b/157231582
Reverted Changes:
Ia99def91e:Improve tracking of exported sdk libraries
If91b4d106:java_sdk_library: Do not expose stubs implementati...
Id6d76e56c:java_sdk_library: Access outputs using tags

Change-Id: I87e459d45ee97e284a9d966d5446305f80627175
2020-05-25 02:05:54 +00:00
Remi NGUYEN VAN
ed0314270d Revert "Improve tracking of exported sdk libraries"
Revert submission 11569833

Reason for revert:  Broke presubmit: b/157231582
Reverted Changes:
Ia99def91e:Improve tracking of exported sdk libraries
If91b4d106:java_sdk_library: Do not expose stubs implementati...
Id6d76e56c:java_sdk_library: Access outputs using tags

Change-Id: I3a07d412e795df512c430e4d2ed221f4d17e904a
2020-05-25 02:05:07 +00:00
Remi NGUYEN VAN
31525dab95 Revert "java_sdk_library: Control shared library use"
This reverts commit e6428b4892.

Reason for revert: Broke presubmit: b/157231582

Change-Id: I176f9940dfa7bef74cdb450774c7d09c2f6b4007
2020-05-25 01:55:18 +00:00
Paul Duffin
e6428b4892 java_sdk_library: Control shared library use
Previously, all java_sdk_library instances were assumed to be usable as
shared libraries, i.e. referenced from <uses-library> in Android
manifest. However, that was not true for any instances that specified
api_only: true and will not be true for many of the new Android
modules.

One consequence of this assumption is that use of one of the api_only
instances could (but fortunately does not appear to) have lead to an
invalid library being referenced in an app's manifest which would
prevent the app from loading. That would have been done automatically
by the implicit sdk library tracking and manifest fixing mechanism and
there would have been nothing a developer could have done about it.

Changes:
1) Prevents api_only instances from participating in the automatic
   tracking which will prevent them from being added to Android
   manifests and breaking apps.

2) Add a new shared_library property that can have the same effect as
   api_only while still creating a runtime implementation library.

3) Renamed commonProperties to commonSdkLibraryProperties to
   disambiguate it from the ModuleBase.commonProperties field.

4) Extracts requiresRuntimeImplementationLibrary() to remove duplicate
   code accessing the Api_only property.

5) Tests for the api_only and shared_library behaviours.

Test: m nothing - added tests, tests broke, fixed code, tests passed.
Bug: 156723295
Merged-In: Iccf509e808d5ff53522188541a4c54d8f9ada93c
Change-Id: Iccf509e808d5ff53522188541a4c54d8f9ada93c
(cherry picked from commit dfa131e673)
2020-05-21 14:53:38 +01:00
Paul Duffin
442a475521 Improve tracking of exported sdk libraries
The build tracks the java_sdk_library/_import modules that are
referenced by libraries so that it can ensure that any Android app that
includes code that depends on one of those modules has the appropriate
<uses-library> entry in their manifest.

Unfortunately, there were a couple of issues with that:
1) It only tracks direct references to the java_sdk_library module
   itself, e.g. android.test.mock. Direct references to the stubs
   module, e.g. android.test.mock.stubs were not tracked. Making it
   possible for Android apps to reference libraries which would not be
   available at runtime.
2) The logic for determining whether something was a java_sdk_library
   was repeated in a number of places making it difficult to allow
   java_sdk_library/_import instances to determine whether they should
   be treated as an Android shared library.
3) It tracks (and could use) even those java_sdk_library instances
   which do not represent a shared library, e.g. the ones that set
   api_only: true. While this change will simplifty fixing that the
   actual issue will be fixed in a follow up change.

Changes:
* Added EmbeddableSdkLibraryComponent and embedded it into
  java_sdk_library/_import, java_library and java_import. It provides
  the common code to minimize duplication. It contains an
  SdkLibraryToImplicitlyTrack field that if set will cause any
  references to the containing module to add the SdkLibraryParent to
  the list of implicit sdk libraries being tracked.
* Changed code that assumed that anything that implemented
  SdkLibraryDependency required tracking to use the
  OptionalImplicitSdkLibrary() method to get the optional name of the
  sdk library to track. That will allow a follow up change to return
  nil from that method to exclude an sdk library from being tracked.
* Moved SdkLibraryDependency from java.go to sdk_library.go as that is
  a better place for it to be.
* Changed the stubs java_library/java_import creation code to initialize
  the SdkLibraryToImplicitlyTrack field with the name of the creating
  module.
* Initialized the SdkLibraryToImplicitlyTrack field in the
  java_sdk_library/_import so that direct references to them will be
  tracked too.
* Added tests to verify that direct access to the .stubs child of both
  java_sdk_library and java_sdk_library_import are tracked properly.

Test: atest CtsProviderTestCases - which relies on android.test.mock
      being implicitly tracked to verify that I had not broken
	  anything. Used aapt2 dump badging to read the manifest.
	  m nothing - to run the new tests which failed before fixing the
	  code.
Bug: 156723295
Merged-In: Ia99def91e9b74d2ed0a777de04b476c00ea0393d
Change-Id: Ia99def91e9b74d2ed0a777de04b476c00ea0393d
(cherry picked from commit 859fe961b0)
2020-05-21 14:53:38 +01:00
Paul Duffin
5b429197d1 java_sdk_library: Do not expose stubs implementation jar
The stubs header jar is optimized for use as a dependency for others
to use. It only changes if there is a significant difference in the
externals of the classes, i.e. anything that a library being compiled
against depends upon. So changes to implementations of method or the
addition/removal of private methods, fields will have no impact.

As there is no benefit in returning the implementation of the stubs
jar this change removes it. The implementation is still used when
taking a snapshot as the header jar is an internal build artefact
that is not suitable for long term snapshot.

Bug: 155164730
Test: m droid
Merged-In: If91b4d106683f23788547c537228c58be2867174
Change-Id: If91b4d106683f23788547c537228c58be2867174
(cherry picked from commit 23970f4285)
2020-05-21 14:53:38 +01:00
Paul Duffin
f7a4660428 java_sdk_library: Access outputs using tags
Previously, in order to access say the public stubs source jar it was
necessary to directly reference the module by name. This change adds
support for accessing them indirectly via tags.

Test: nothing
Bug: 155164730
Merged-In: Id6d76e56c7b46944b2d2a44a2163fb05a5b03de9
Change-Id: Id6d76e56c7b46944b2d2a44a2163fb05a5b03de9
(cherry picked from commit 46dc45aba9)
2020-05-21 14:53:38 +01:00
Paul Duffin
dce3fe78f0 java_sdk_library: Improve consistency with ..._import
The scopePaths struct is used by both java_sdk_library and its prebuilt
but was not populated in the same way. This change addresses those
discrepancies in preparation for a follow up change which will allow
access to some of those fields through OutputFileProvider.

Changes:
* Document the scopePaths field and struct.
* Switch those fields that may not be fully populated from Paths to
  OptionalPath to make that 100% clear and protect against unchecked
  use.
* Switch java_sdk_library_import to use the dependency extraction
  mechanism driven by the dependency tag. This should actually have
  been part of the change that added that mechanism.
* Only create prebuilt_stubs_sources if sources have been provided.
* Add dependencies from java_sdk_library_import on its stubs source
  child modules if sources have been provided. That will ensure the
  stubsSrcJar field is updated.
* Updates current/removedApiFilePath if provided for the scope in
  java_sdk_library_import.
* Extracts ApiStubsSrcProvider from ApiStubsProvider to allow it to
  be implemented by PrebuiltStubsSources so that it can provide access
  to the stubs src jar that it creates.

Test: m nothing
Bug: 148080325
Bug: 155164730
Merged-In: Ic5bf884b2b1e79841843e7c3b4642796ecd49f5d
Change-Id: Ic5bf884b2b1e79841843e7c3b4642796ecd49f5d
(cherry picked from commit 0f8faffdc0)
2020-05-21 14:53:38 +01:00
Paul Duffin
fe82172afb java_sdk_library: Add redirection to module-lib stubs
Previously, when using sdk_version: "module_current" any direct
reference to an sdk library would use the public not module-lib stubs.
This change corrects that.

Prior to the addition of the module-lib api scope almost all
java_sdk_library instances supported all the scopes to which a request
for jars could be redirected, i.e. public, system and test. The
exceptions to that are a few special instances that were used with
sdk_version: "none" and so were either caught by the java_sdk_library
special cases or dropped through to public.

The addition of module-lib, plus the flexible control over which scopes
are generated means that is no longer true. It is possible for a
java_sdk_library to be requested for a scope it does not have which
would have resulted in an empty set of paths being returned leading to
confusing compilation errors.

To avoid that this change also adds support for using the inheritance
hierarchy defined by the apiScope.extends field to fall back to the
closest available surface.

Test: m nothing
Bug: 155164730
Merged-In: I6aab75a772433ee0a36b6f1758a4aec4be2f9a49
Change-Id: I6aab75a772433ee0a36b6f1758a4aec4be2f9a49
(cherry picked from commit 803a9565cd)
2020-05-21 14:53:38 +01:00
Paul Duffin
f97ca37fce java_sdk_library: Extract common stubs redirect code
The java_sdk_library and java_sdk_library_import redirect a request for
header and implementation jars to broadly the same place although the
java_sdk_library does have some special code that is mixed in with the
common code.

This change separates the java_sdk_library special code from the common
code and moves the common code into its own method for use by both
module types. That makes the special behavior clearer and ensures the
common behavior remains consistent in future.

Test: m nothing
Bug: 155164730
Merged-In: I53e41a18792488aefd6a886c587559e90b3c4fde
Change-Id: I53e41a18792488aefd6a886c587559e90b3c4fde
(cherry picked from commit b05d4295de)
2020-05-21 14:53:38 +01:00
Anton Hansson
a9a3173ee3 Default annotations_enabled to true for sdk_library
This turns out retention of Nullable annotations, which is almost
certainly what every user wants. Also add the "stub-annotations" lib to
the stub libs property, to make sure the nullability annotations
resolve properly.

Bug: 157010342
Test: m
Change-Id: I905144add4ef6f85445eedd1ba5169445f6005e0
2020-05-21 13:36:49 +01:00
Jooyung Han
e0937418a9 Merge "apex: Make android_library support APEX variants" into rvc-dev 2020-05-21 11:48:56 +00:00
Anton Hansson
c5e13279ad Don't require merge_annotations_dir for annotations_enabled
As far as I can tell, annotations_enabled does not require use of
merge_annotations_dir (although it may have done in the past).

Bug: 157010342
Test: m
Change-Id: I6705522774203b4566f58679bbc2f0c17422c1dd
2020-05-21 11:29:22 +01:00
Jooyung Han
11c2093ea3 apex: Make android_library support APEX variants
The android_library module type can be used within an android_app that
can itself be added to an apex but android_library does not call
android.InitApexModule(module) and so it does not support apex variants
and so is treated as if it cannot be part of an APEX even though it
actually is.

Now, android_library supports AEPX variants.

Due to this change, the whilelist for apex_available got bigger.

Bug: 156978407
Test: m
Merged-In: I3a21d653fe9c4159e3a89791fe1a8597865eeae6
Change-Id: I3a21d653fe9c4159e3a89791fe1a8597865eeae6
2020-05-20 21:49:30 +00:00
Alexander Smundak
c6088b2d08 Merge "Handle universal APK case in extract_apks" into rvc-dev 2020-05-20 19:55:44 +00:00
Nikita Ioffe
b029f03191 Merge "Always set targetSdkLevel to DefaultAppTargetSdk" into rvc-dev 2020-05-20 10:39:07 +00:00
Sasha Smundak
06fcac6f24 Handle universal APK case in extract_apks
Bug: 157081961
Test: manual and builtin
Change-Id: I5ac64c845328a54024171da41c369050243462b0
2020-05-20 00:38:02 -07:00
Nikita Ioffe
5f6771e160 Always set targetSdkLevel to DefaultAppTargetSdk
Test: m
Bug: 156914912
Change-Id: Ibe63352c2fc474dd816d87ac79b31a56d32b35d2
2020-05-20 00:20:00 +01:00
TreeHugger Robot
bf5c640aa5 Merge "Add --no-force-assign-all for java_sdk_library" into rvc-dev 2020-05-19 23:08:47 +00:00
Paul Duffin
31b84c83bf Add --no-force-assign-all for java_sdk_library
Previously, the flag was only added for java_library modules that were
being instrumented. This will also add if for java_sdk_library modules
too.

Bug: 156705688
Test: TARGET_BUILD_VARIANT=userdebug PRODUCT=mainline_modules_x86 EMMA_INSTRUMENT=true NATIVE_COVERAGE=true ./vendor/google/build/build_unbundled_coverage_mainline_module.sh -j8
Change-Id: I5d06ec037007b1770748df24a2e2e8691f177f4f
2020-05-19 21:18:05 +01:00
Jeff Tinker
999cff9a36 Merge "Revert "Generate the ART boot image for host as well (used by ART tests)."" into rvc-dev 2020-05-19 18:10:51 +00:00
Jeff Tinker
74cc81c399 Revert "Generate the ART boot image for host as well (used by ART tests)."
This reverts commit e920d2d0c5.

Reason for revert: b/157053931 - Broken test:
com.android.devicehealthchecks.SystemAppCheck#system_app_native_crash
on git_rvc-dev on crosshatch-userdebug at 6510182

This CL is the only change in this build range so seems likely to be
the culprit.

Build break bug number:
bug:157053931

Original CL bug numbers:
Bug: 147817558
Bug: 147819342
Bug: 156649984

Change-Id: If8bf2f646789b583adcbfbc5df263ce953c05b76
2020-05-19 18:08:01 +00:00
TreeHugger Robot
47df9bc10d Merge "Add support for remotely executing header-abi-dumper actions." into rvc-dev 2020-05-19 16:27:38 +00:00
Ulyana Trafimovich
b3b814cbdd Merge "Generate the ART boot image for host as well (used by ART tests)." into rvc-dev 2020-05-19 14:13:16 +00:00
Treehugger Robot
35a91836e4 Add support for remotely executing header-abi-dumper actions.
Bug: b/156613606
Test: built with and without RBE_ABI_DUMPER set.
Change-Id: Ie752c07325453076d191813eaa50da03e3a0c2d8
Merged-In: Ie752c07325453076d191813eaa50da03e3a0c2d8
2020-05-19 09:55:36 -04:00
Ramy Medhat
9adb15e4d3 Merge "Add implicit outputs to link actions Bug: b/154733231" into rvc-dev 2020-05-19 13:43:06 +00:00
David Srbecky
e920d2d0c5 Generate the ART boot image for host as well (used by ART tests).
This will allow us to remove the core.art image compiled in make.

Test: lunch aosp_x86_64 && m test-art-host-gtest
Bug: 147817558
Bug: 147819342
Bug: 156649984
Change-Id: I864f72198d875dc1421c9c029a683bafbe7b71ac
Merged-In: I864f72198d875dc1421c9c029a683bafbe7b71ac
(cherry picked from commit 7f8dac1254)
2020-05-19 09:44:51 +01:00
Stephen Hines
13b041d6ea Merge "Default to zero-initialization instead of pattern." into rvc-dev 2020-05-18 22:18:21 +00:00
Liz Kammer
2bc57f6afe Add signing linage support for android_app_import
Test: app_test
Bug: 153366049
Change-Id: I260f198637a1a0f8b3373250413356785c56588a
2020-05-18 10:46:19 -07:00
Paul Duffin
c8f2f186d1 Extract common behavior between Module and Import
Although the duplication being eliminated here is minimal follow up
changes will add more functionality that is common to Module and
Import.

Test: m nothing
Bug: 156723295
Merged-In: I1733405526764272beba63470a9bc8a958d41024
Change-Id: I1733405526764272beba63470a9bc8a958d41024
(cherry picked from commit 0d3c2e136b)
2020-05-18 11:31:53 +01:00
Paul Duffin
c5d954a48d java_sdk_library: Remove unnecessary qualification of fields
Fields in embedded structures can be accessed without qualifying them
by the type of the embedded structure.

This reduces the size of follow up changes that switch java_sdk_library
from embedding Library.

Bug: 156618935
Test: m nothing
Merged-In: I84f294c6f02d5089055130c63f5fb0538a1f21b9
Change-Id: I84f294c6f02d5089055130c63f5fb0538a1f21b9
(cherry picked from commit a18abc2a61)
2020-05-18 11:30:19 +01:00
TreeHugger Robot
53754e3592 Merge "Remove apex_available whitelist for the extservices APEX" into rvc-dev 2020-05-17 15:17:58 +00:00
Paul Duffin
dc424ffdf8 Merge "Remove unnecessary copying of common properties" into rvc-dev 2020-05-17 13:04:23 +00:00
Jiyong Park
db4ce6e80a Remove apex_available whitelist for the extservices APEX
The marked library(ies) were available to the APEX via the
hand-written whitelist in build/soong/apex/apex.go. Trying to remove the
whitelist by adding apex_available property to the Android.bp of the
libraries.

Bug: 150999716
Test: m
Merged-In: I827d604c7e5a469a8b8a6d5a4b7917f2eaca48ca
Change-Id: I827d604c7e5a469a8b8a6d5a4b7917f2eaca48ca
2020-05-17 21:23:08 +09:00
Paul Duffin
f8e08b20d6 java_sdk_library: Propagate naming_scheme to snapshot
Bug: 155164730
Test: m nothing
Merged-In: Iec7c52d2102b6294540090f3c1e32bd9d8cc7da8
Change-Id: Iec7c52d2102b6294540090f3c1e32bd9d8cc7da8
(cherry picked from commit f7a6433bab)
2020-05-16 18:36:08 +01:00
Paul Duffin
d41712d365 Remove unnecessary copying of common properties
The (Soc/Device/Product/System_ext)_specific are all properties in
ModuleBase.commonProperties. Initially, they were explicitly copied
from the parent to the child. Since then the CreateModule() method
was modified to automatically copy all the commonProperties from the
parent to the child so this code is no longer necessary.

Bug: 156618935
Test: m nothing
      checked that it does not change the generated xml permissions
	  file for a java_sdk_library that sets soc_specific: true and
	  is in the vendor partition.
Merged-In: I8c985b50cb6b6c019b33a4652de482ded689fee4
Change-Id: I8c985b50cb6b6c019b33a4652de482ded689fee4
(cherry picked from commit 1dbe3ca254)
2020-05-16 17:55:23 +01:00
Martin Stjernholm
57029c07bf Include runtime-module-sdk in the SDK build.
Test: build/soong/scripts/build-mainline-modules.sh
Bug: 152255951
Merged-In: I39f9024205a198ef8ce19e2c70e3b9dced54add1
Change-Id: I39f9024205a198ef8ce19e2c70e3b9dced54add1
(cherry picked from commit 6ee5f754fe)
2020-05-16 12:14:08 +01:00
Nicolas Geoffray
36469f7121 Add conscrypt-module-host-exports to the list.
// Added for rvc-dev. Used this bug as it is the bug that needs all the build changes.
Bug: 155164730

Test: build-mainline-modules.sh
Merged-In: I9ca14cc37a69b1172f52412297977dd03c6ca1a0
Change-Id: I9ca14cc37a69b1172f52412297977dd03c6ca1a0
(cherry picked from commit 0a2e297206)
2020-05-16 12:14:08 +01:00
Martin Stjernholm
f39ef8aa10 Reduce the number of Soong invocations, and various other minor script fixes.
-  We can pass all targets at once to build-aml-prebuilts.sh.
-  Less noise from build-mainline-modules.sh.
-  Default to the same out directory in both build scripts.
-  Addressed post-submit comments on https://r.android.com/1170907.
-  Various minor cleanups.

// Added for rvc-dev. Used this bug as it is the bug that needs all the build changes.
Bug: 155164730

Test: build/soong/scripts/build-mainline-modules.sh
Merged-In: Id21ef80c2334462836e217032fc5bf63b7cd04e1
Change-Id: Id21ef80c2334462836e217032fc5bf63b7cd04e1
(cherry picked from commit 691503ea0b)
2020-05-16 12:14:08 +01:00
Nicolas Geoffray
168ea3d4e1 Use FORCE_BUILD_LLVM_COMPONENTS.
And remove the allow missing dependencies flag.

// Added for rvc-dev. Used this bug as it is the bug that needs all the build changes.
Bug: 155164730

Test: build-mainline-modules.sh
Merged-In: I6ba8892ef66eeb42c7bd3abc989a80ad4b6a1cf9
Change-Id: I6ba8892ef66eeb42c7bd3abc989a80ad4b6a1cf9
(cherry picked from commit 7cad0f860b)
2020-05-16 12:14:08 +01:00
Nicolas Geoffray
7356fffd6d Add linux_bionic cross compilation for mainline SDKs.
ART requires linux bionic prebuilts.

Bug: 142935992
Test: build-mainline-modules.sh
Merged-In: If0f97e58d2afccbc3f5d0b2e7dabac51330cc5c7
Change-Id: If0f97e58d2afccbc3f5d0b2e7dabac51330cc5c7
(cherry picked from commit 71233e4732)
2020-05-16 12:14:08 +01:00