Commit Graph

2286 Commits

Author SHA1 Message Date
Ramy Medhat
46bad760ec Add sourcepath to inputs of remoteable metalava action.
Bug: b/156613606
Test: presubmit
Change-Id: Idd77abddac0a676302226eb62883c74d5d7489af
Merged-In: Idd77abddac0a676302226eb62883c74d5d7489af
2020-06-11 17:55:36 +00:00
Ramy Medhat
1fb3cd8496 Add support for the remote execution of metalava actions.
Bug: b/156613606
Test: built aosp crosshatch userdebug with RBE_METALAVA=1
Change-Id: I3d42d75b4522f99ff95ce8c997ead782e4322f6e
Merged-In: I3d42d75b4522f99ff95ce8c997ead782e4322f6e
2020-06-11 00:52:07 -04:00
Jaewoong Jung
829b7135f3 Use Targets[Android] instead of DeviceArch funcs.
NDK prebuit script doesn't set device arch product variables, and so
causes SupportedAbis to panic.

Fixes: 158673325
Test: app_test.go, apex_test.go
Test: build-ndk-prebuilts.sh
Change-Id: I8331ef5bca12301318510ec9712770fd8d3a26a9
2020-06-10 12:30:51 -07:00
Paul Duffin
4754d4451c Merge "java_sdk_library: Add system-server scope" into rvc-dev 2020-06-10 13:01:31 +00:00
Alexander Smundak
feee554806 Merge "Cherrypick aosp/1318079 and aosp/1324841" into rvc-dev 2020-06-08 20:09:10 +00:00
TreeHugger Robot
50cea1a76e Merge "Include car project in grey list removed apis" into rvc-dev 2020-06-08 18:07:38 +00:00
Paul Duffin
5a757b1ebb java_sdk_library: Add system-server scope
Bug: 155164730
Test: m nothing
Change-Id: I49a2dab5c064b05f16691a3fae65f2b4ffc53bfd
2020-06-08 15:27:58 +01:00
Paul Duffin
a109682456 Merge "Copy removed.txt file to the snapshot correctly" into rvc-dev 2020-06-08 13:03:14 +00:00
Jiyong Park
afd3d11a79 dex_import that isn't available for platform isn't installed
This change fixes a bug that dex_import module is always installed to
the platform even when the module is not available to the platform.

Bug: 158284983
Test: OUT_DIR=/tmp/ndk build/soong/scripts/build-ndk-prebuilts.sh
Change-Id: I85570506e700be59ee63e4f1d7902a40e36df39c
2020-06-08 19:59:02 +09:00
Sasha Smundak
c4f0ff1d6c Cherrypick aosp/1318079 and aosp/1324841
Allow apex module to have android_app_set as its constituent.
Fix android_app_set documentation

Fixes: 157166068
Test: treehugger & manual
Change-Id: I9f91f1b761286f489d175eb0772f78f702e8a2d6
Merged-In: I9f91f1b761286f489d175eb0772f78f702e8a2d6
Merged-In: Id9b296d9301902deb463b299413491bc66d58944
2020-06-05 15:39:38 -07:00
Eric Jeong
9791efa3e8 Include car project in grey list removed apis
- Car framework has removed system APIs.
- These APIs should be tracked at run-time.

Bug: 154832144
Test: 1) android.signature.cts.api.AnnotationTest#testAnnotation
      2) diff $OUT/soong/hiddenapi/hiddenapi-flags.csv before and after this CL

Change-Id: I9813df4b514da41e82d45e6c0bc92643916fe0d8
2020-06-05 09:07:27 -07:00
Anton Hansson
d7fdfd6e77 Merge "dex_import can be added to apex" into rvc-dev 2020-06-05 10:05:50 +00:00
Paul Duffin
b178735155 Copy removed.txt file to the snapshot correctly
Previously, the code copied the current.txt file to both the
current_api and removed_api properties. This change copies the
removed.txt file to the removed_api property instead.

Bug: 157980685
Test: m nothing
Merged-In: Iad34e91051da43222d22c240c16f50887c43d73e
Change-Id: Iad34e91051da43222d22c240c16f50887c43d73e
(cherry picked from commit 3dbf9fd892)
2020-06-04 18:28:58 +01:00
Jiyong Park
2cd081cf06 dex_import can be added to apex
Bug:157886942
Test: m
Change-Id: Ida6f7bb784efe74cc1fa0e8d370eaee803f08b0f
Merged-In: Ida6f7bb784efe74cc1fa0e8d370eaee803f08b0f
2020-06-04 10:28:44 +01:00
Tej Singh
8383972ec0 Revert "Always run package check"
This reverts commit aa7359ab0c.

Reason for revert: package-check.sh doesn't work on mac

Change-Id: Ia3dcee612c1f6b4121e1351c8710638ae41bc88a
Merged-In: I50af71d54d5f1f8b516bfcf1efbcf6217e89c83a
2020-06-03 18:45:54 +00:00
Jaewoong Jung
fccad6b098 Soong package structure refactoring
Give prebuilt_etc and sh_binary their own packages and split the
gigantic main Android.bp up to small, per-package ones.

(This is a cherry-pick change.)

Test: m nothing, TreeHugger
Bug: 156980228
Change-Id: I7b00cd344b9f16861f1ff39edf0029f016b853d0
Merged-In: I7b00cd344b9f16861f1ff39edf0029f016b853d0
2020-06-02 14:35:04 -07:00
Paul Duffin
aa7359ab0c Always run package check
Previously, the package check was only run when building checkbuild or
the phony target created for a specific module. It would not run when
building a module that depended upon a library with the
permitted_packages property. That was because the package check was
only run when the package-check.stamp file was built and that was only
added to the phony and checkbuild targets.

Instead of touching a separate package-check.stamp file to indicate
that the check has been performed this change copies the input jar file
to the package check to a separate ../package-check/<jar> file which is
then treated as the output of the library and is the input for any dex
processing. So, any modules that depend on this library will
transitively depend on the output file produced by the package check
command and so will ensure that the package check is always run.

Test: Removed "android.net" from the permitted_packages for
      "framework-tethering", build "framework-tethering" which
      triggered and failed the package check and
      "com.android.tethering" which did not.
      Made this change.
      Built "com.android.tethering" which triggered and then failed the
      package check.
      Removed change to "framework-tethering"
Bug: 157649935
Merged-In: Ib01aa09e13f80282218049270eb7a58ec5f9f605
Change-Id: Ib01aa09e13f80282218049270eb7a58ec5f9f605
(cherry picked from commit 91206d9ed1)
2020-06-02 14:05:34 +01:00
Kousik Kumar
c05da0a90e Add support for remote-execution / caching of jar/zip actions
Test: Ran a build with `RBE_JAR="true" RBE_JAR_EXEC_STRATEGY="remote"
RBE_ZIP="true" RBE_ZIP_EXEC_STRATEGY="remote" ... use_rbe m` and that
succeeded.

Bug: b/156765207
Change-Id: Ia17b532fbb282be414adf879914870082dd0841b
Merged-In: Ia17b532fbb282be414adf879914870082dd0841b
2020-05-30 19:59:10 +00:00
Kousik Kumar
15e9d0dbf8 Add support for remote-execution / caching of signapk actions
Test: "RBE_SIGNAPK=true RBE_SIGNAPK_EXEC_STRATEGY=remote ... use_rbe m" on crosshatch-userdebug and
signapk targets worked
Bug: b/156765091

Change-Id: I4b8c21320c2f38914ef39d3d8f036d885fab4e72
Merged-In: I4b8c21320c2f38914ef39d3d8f036d885fab4e72
2020-05-30 19:58:58 +00:00
Kousik Kumar
d8c3955119 Add support for remote-execution / caching of turbine actions
Test: Ran a sample turbine action with:
RBE_TURBINE_EXEC_STRATEGY="remote" RBE_TURBINE="true" ... use_rbe m out/soong/.intermediates/external/protobuf/libprotobuf-java-micro/android_common/turbine/libprotobuf-java-micro.jar
and checked in reproxy_log.txt that remote-metadata had status SUCCESS.

Bug: b/156765475
Change-Id: I85c334e6998c6dd2a68460b3580d50fffd900e6f
Merged-In: I85c334e6998c6dd2a68460b3580d50fffd900e6f
2020-05-30 12:58:20 -07:00
TreeHugger Robot
42ffc3f000 Merge "Refactor RBE support for Javac/R8/D8 to use the remoteexec package." into rvc-dev 2020-05-29 19:33:20 +00:00
TreeHugger Robot
5cfbb4332f Merge "Collect permitted packages from java_sdk_library instances" into rvc-dev 2020-05-29 13:18:05 +00:00
TreeHugger Robot
484129dfb9 Merge "Ensure package check is run for java_library in APEX" into rvc-dev 2020-05-29 11:40:19 +00:00
Paul Duffin
a105cf99d0 Collect permitted packages from java_sdk_library instances
Switching an updatable boot jar from java_library to java_sdk_library
changed the contents of the updatable-bcp-packages.txt due to the code
requiring the module to be *Library. This change updates that to allow
it to be any module that implements the
PermittedPackagesForUpdatableBootJars interface which is *Library and
anything that embeds that like *SdkLibrary.

Bug: 155164730
Test: m droid and check the contents of system/etc/updatable-bcp-packages.txt
Change-Id: I464af74628da311734f102f77ec8158daec5b32d
2020-05-29 12:35:18 +01:00
Jooyung Han
de58c39bd6 Merge changes from topic "apk-jni-enforce" into rvc-dev
* changes:
  Use sdkSpec to compare sdk_versions of APK/JNI
  Reland "enforce sdk_version for JNI libs for updatable APKs"
2020-05-29 10:33:59 +00:00
Paul Duffin
c552427032 Ensure package check is run for java_library in APEX
Package checks were not being run for java libraries that were in an
APEX and not on the platform. This change fixes that and updates the
script to report all failing classes to make it easier to update the
list of packages.

Test: m java
Bug: 157633658
Change-Id: I28044e08d3a40e9f3464bb2158ef6a28d57264d1
(cherry picked from commit 63d8febd35)
2020-05-29 09:18:13 +01:00
Paul Duffin
a84756c827 java_sdk_library: Propagate shared_library to snapshot
Passes the shared_library property through to the snapshot. It does not
optimize away the default value in order to make it easier to invert
the default value in future. The current default value was only chosen
for convenience because most existing usages were already treated as
shared libraries. It would be safer if modules had to opt in to be used
as shared libraries.

Bug: 155164730
Test: m nothing
Merged-In: I33c7323f2389b44ed49cebe517ae2cce349117f1
Change-Id: I33c7323f2389b44ed49cebe517ae2cce349117f1
(cherry picked from commit d7eb1c2a76)
2020-05-29 09:16:11 +01:00
Jiyong Park
27fc414b84 Add default_to_stubs option to java_sdk_library
Previously, when a lib that doesn't have sdk_version property set
depends on a java_sdk_library, the impl library was used for linking.
This might be too permissive because the client lib might be using empty
sdk_version because it needed some private APIs from the platform, but
not from the java_sdk_library. This actually happend for some of the CTS
tests. They don't set sdk_version, but were directly depending on
android.test.[base|runner|mock].stubs libraries. If we switch the
references to the stub libraries into the corresponding java_sdk_library
modules (e.g. aandroid.test.[base|runner|mock]), then we would be
allowing private APIs to the CTS tests, which is not good.

To solve this problem, default_to_stub property is introduced. It when set
to true prevents the impl lib from being used for linking. When a module
that doesn't have sdk_version depends on it, the widest API surface that
the java_sdk_library provides is linked instead.

Bug: 157007292
Test: m
Merged-In: Id2acc3cafb71d1e90d4fdc9c0c70a73983355e0f
Change-Id: Id2acc3cafb71d1e90d4fdc9c0c70a73983355e0f
(cherry picked from commit 932cdfeb06)
2020-05-29 09:15:09 +01:00
Jiyong Park
ed50ca8dd8 apex respects stem of java_library modules
apex now respects stem of java_library modules.

As a follow-up we need to suppor the same for other types of modules.

Exempt-From-Owner-Approval: cherry-pick from AOSP

Bug: 157638999
Test: m
Merged-In: Iaf5023020b5440f1ffd4f5414b5a7864655fc22a
(cherry picked from commit a62aa23990)
Change-Id: Iaf5023020b5440f1ffd4f5414b5a7864655fc22a
2020-05-29 14:15:36 +09:00
Jooyung Han
9d2c0f7af2 Use sdkSpec to compare sdk_versions of APK/JNI
"current" is converted to int differently if we use
sdkSpec.effectiveVersion for APK and android.ApiStrToNum for JNI.
For example, in REL branch, "current" is equiv to PlatformSdkVersion
for APK, but 10000(FutureApiVersion) for JNI.

Use sdkSpec.effectiveVersion to compare APK.min_sdk_version and
JNI.sdk_version.

Bug: 145796956
Test: m
Change-Id: I2c4dbb79ae8712004dc3a9e647aa53cd5de7b508
2020-05-28 23:08:04 +00:00
Jooyung Han
af7f91fc9d Reland "enforce sdk_version for JNI libs for updatable APKs"
JNI libs for "updatable" APKs or APKs in "updatable" APEXes should set
sdk_version which is equal to or less than APK's min_sdk_version.

In fact, we'd better check if min_sdk_version of JNI libs matches(or is
earlier than) min_sdk_version of the APK. But for now the build system
can't handle sdk_version/min_sdk_version correctly for JNI libs. That's
why sdk_version of JNI libs is enforced to match with min_sdk_version
of APK in this change.

(original commit: 98c4750f39)

Bug: 145796956
Test: m
Merged-In: I08543ccee7dfda0559a1fca108ceb5c28f84943f
Change-Id: I08543ccee7dfda0559a1fca108ceb5c28f84943f
(cherry picked from commit bbc3fb780b)
2020-05-28 23:06:52 +00:00
Anton Hansson
9e0264c379 Merge "java_sdk_library: Add annotations_enabled property" into rvc-dev 2020-05-28 10:15:23 +00:00
Anton Hansson
1733d6acf8 Merge "Correct link type for module stubs" into rvc-dev 2020-05-28 08:49:30 +00:00
TreeHugger Robot
b676ead4e1 Merge "Add test_mainline_modules to the auto-gen test config(AndroidJUnitTest only)." into rvc-dev 2020-05-28 06:12:35 +00:00
Paul Duffin
f675264e3c Merge "java_sdk_library: Create separate impl library" into rvc-dev 2020-05-28 01:38:09 +00:00
Jaewoong Jung
0feed89b7c Make android_app_import multi targets arch module.
I made a mistake and only fixed android_test_import in my previous
change, I5bbb2d2b733bbd6b868898285683ba5ff45be10b.

(This is a cherry-pick change.)

Bug: 154281342
Test: TreeHugger
Test: chromium-webview
Change-Id: I1575d9ef3f8596f1eb8db0867db09de08945d711
Merged-In: I1575d9ef3f8596f1eb8db0867db09de08945d711
2020-05-27 14:45:37 -07:00
Artur Satayev
07d215215b Merge changes I4ab7e1a3,Ib525b2f5,I2d4c54fb into rvc-dev
* changes:
  Generate combined deps-info for all updatable modules.
  Remove ApexBundleDepsInfo.MinSdkVersion()
  Add "updatable" property to ApexModule interface.
2020-05-27 20:58:27 +00:00
TreeHugger Robot
753c739e2f Merge "Add preprocessed property for android_test_import" into rvc-dev 2020-05-27 17:21:19 +00:00
Paul Duffin
9d582cc985 java_sdk_library: Create separate impl library
Most dependencies on java_sdk_library instances (JSL) simply reference
them by name and rely on the build to pick the correct part, impl,
stubs for a specific scope, headers or implementation jars or dex jars.
Generally, the build gets that decision right. If it does not the for
most of the components of the JSL there is a way to reference them
directly. However, that is not true for the implementation library as
that is created the JSL itself.

Access to the implementation library should be avoided as it opens up
the possibility that use will be made of an API that is not tracked and
maintained which could lead to compatibility issues. However, there is
a case where use of the implementation library is required and safe.
That is when it is being used from other libraries within the same APEX
as the JSL. In that case the JSL and its dependencies will be updated
together so compatibility is not an issue.

This change adds a new <module>.impl java_library that compiles the
implementation library in the same way as the JSL itself does. This will
allow the modules that are blocked from converting to JSL because of
this limitation to progress. Initially the library is only for use
for compiling but follow up changes will switch the rest of the build
from using the implementation library created by JSL to the separate
module.

It also adds the ability to give the separate .impl library a more
restrictive visibility than the JSL further limiting misuse.

Bug: 156618935
Test: m droid, flash, atest CtsProviderTestCases - sniff test
      tested that it fixes compilation issues with mainline module
Merged-In: Ifc4799feb4ada9dec8021efc13fe6a953bf2edd3
Change-Id: Ifc4799feb4ada9dec8021efc13fe6a953bf2edd3
(cherry picked from commit 5df793011d)
2020-05-27 18:15:57 +01:00
Paul Duffin
2ce1e81b3e java_sdk_library: Add annotations_enabled property
Passes it through to droidstubs.

Bug: 155164730
Test: m droid
Change-Id: I8b23a959ce33716dfc4572488a1fd3f6bab73a17
2020-05-27 17:52:53 +01:00
Artur Satayev
2b4b7bbe82 Generate combined deps-info for all updatable modules.
Introduce a singleton apex rule to merge contents of individual
deps-info results into a single output file.

Bug: 149622332
Test: m
Change-Id: I4ab7e1a3527fead97a81a5a2cb0e1e93a429117c
Merged-In: I4ab7e1a3527fead97a81a5a2cb0e1e93a429117c
Exempt-From-Owner-Approval: cp from aosp
(cherry picked from commit 849f844252)
2020-05-27 17:51:18 +01:00
Ulya Trafimovich
c0eb0b1ae5 Add "updatable" property to ApexModule interface.
For a given variant of a module that implements ApexModule interface,
the "updatable" property tests if this variant comes from an updatable
apex. For platform variants it is always false.

Test: lunch aosp_walleye-userdebug && m nothing
Bug: 138994281
Merged-In: I2d4c54fb397e29dc9b3203be7fb17be4536529f7
Change-Id: I2d4c54fb397e29dc9b3203be7fb17be4536529f7
Exempt-From-Owner-Approval: cp from aosp
(cherry picked from commit 7c140d828a)
2020-05-27 17:50:51 +01:00
Liz Kammer
3d8779dd6f Merge "Add signing lineage for runtime_resource_overlay" into rvc-dev 2020-05-27 16:39:20 +00:00
Anton Hansson
5e8c81a91d Merge "Improve the structure of the link check method" into rvc-dev 2020-05-27 11:09:53 +00:00
Paul Duffin
174b26e7d3 Switch droiddoc to use SdkHeaderJars()
Previously, droiddoc was using SdkImplementationJars() to get a JAR to
add to the classpath in order to resolve unknown references in the
source.

Given that SdkHeaderJars() returns jars created by Turbine which are
(for compilation at least) functionally identical to the implementation
jars there is no point in using the implementation jars.

Bug: 148080325
Test: m nothing
Merged-In: I2b718cc1445c04e849dcb0b1f53bba2b0bd90c95
Change-Id: I2b718cc1445c04e849dcb0b1f53bba2b0bd90c95
(cherry picked from commit 649dadfb87)
2020-05-27 07:41:18 +01:00
Paul Duffin
bf19a97965 java_sdk_library: Expose implementation within APEX
Access to the implementation JARs is restricted to avoid code from
depending on implementation details that could change from one release
to the next which could cause compatibility issues. That is not a
problem when referenced from within the APEX that contains the
java_sdk_library.

As references from within the same APEX often need to access
implementation specific details of the java_sdk_library and doing that
from within the same APEX is safe this change all references to a
java_sdk_library made within the same APEX to use the implementation
jars instead of stub jars.

Bug: 155164730
Test: m droid
Change-Id: If239059690de61683c2ad2d8a0ce2e47286a3637
(cherry picked from commit 9b879594ed)
2020-05-27 07:41:18 +01:00
Paul Duffin
2e7ed65fc4 java_sdk_library: Only expose impl jars when they are built
The implementation jars are not built if api_only: true. In that case
the jar paths must not be exposed implicitly as they will be nil and
they will just be ignored.

This change ensures that stubs are returned when the implementation
jars are not built.

Bug: 155164730
Test: m droid
Change-Id: Ic495982a5dcb2754916260e7d91d921a5da288ae
(cherry picked from commit daaa332827)
2020-05-27 07:41:18 +01:00
Paul Duffin
96d9fb7d33 Merge "java_sdk_library: Simplify SdkLibrary.sdkJars" into rvc-dev 2020-05-27 06:37:56 +00:00
TreeHugger Robot
6270b775de Merge "Allow the user to explicitly set the java Uncompress_dex property." into rvc-dev 2020-05-27 04:30:37 +00:00
Paul Duffin
00b206ee23 java_sdk_library: Simplify SdkLibrary.sdkJars
The expression !sdkVersion.specified() is equivalent to the following:
    !sdkVersion.valid() || sdkVersion.kind == sdkPrivate

That means that the else if clause "sdkVersion.kind == sdkPrivate" will
never be reached so it was removed.

There is also no need to check sdkVersion.valid() as that will already
have been checked, and an error reported, before this code has been
called. Therefore that has been removed.

Bug: 148080325
Test: m nothing
Merged-In: Ib7c544b48dfb53bad3e15f9f73f71bd05cff9b49
Change-Id: Ib7c544b48dfb53bad3e15f9f73f71bd05cff9b49
(cherry picked from commit c91f5d0cc7)
2020-05-26 20:20:23 +01:00