Commit Graph

617 Commits

Author SHA1 Message Date
Jiyong Park f0d01b7c98 Add test_for property
This change adds 'test_for' property to cc_test_* types. The property is
used to mark a module as a test for one or more APEXes, in which case
the module has accecss to the private part of the listed APEXes. For
example, the module is linked with the actrual shared library in the
APEX instead of the stub of the shared library.

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

Bug: 129539670
Bug: 153046163
Test: m
Merged-In: I45ed0d7a15540b0d69b2a3b8d9c4cb202adff6f2
(cherry picked from commit 62304bbeec)
Change-Id: I45ed0d7a15540b0d69b2a3b8d9c4cb202adff6f2
2020-04-28 21:35:40 +09:00
Jiyong Park 5088a2cbd5 Set apex_available property
The marked library(ies) were available to the APEXes 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.

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

Bug: 150999716
Test: m
Merged-In: I11a4e877ee27f7c55e2f00371c6fa58daedb1a9f
(cherry picked from commit 601d31c234)
Change-Id: I11a4e877ee27f7c55e2f00371c6fa58daedb1a9f
2020-04-28 21:08:58 +09:00
Dario Freni 73b6c98e10 Merge "Allow building unsigned APEXs payload for testing." into rvc-dev 2020-04-28 07:13:07 +00:00
Jooyung Han d5c7ad63ec Merge "apex: file_contexts for override_apex flattened" into rvc-dev 2020-04-28 03:03:26 +00:00
Jiyong Park 28cb10ea68 Merge "mark platform un-availability" into rvc-dev 2020-04-28 02:29:55 +00:00
Jiyong Park 6a9ddc37a9 mark platform un-availability
A module is marked unavailable for platform when 1) it does not have
"//apex_available:platform" in its apex_available property, or 2)
it depends on another module that is unavailable for platform.

In that case, LOCAL_NOT_AVAILABLE_FOR_PLATFORM is set to true for the
module in the Make world. Later, that flag is used to ensure that there
is no module with the flag is installed to the device.

The reason why this isn't entirely done in Soong is because Soong
doesn't know if a module will be installed to the device or not. To
explain this, let's have an example.

cc_test { name: "mytest", static_libs: ["libfoo"]}
cc_library_static { name: "libfoo", static_libs: ["libbar"]}
cc_library { name: "libbar", apex_available: ["com.android.xxx"]}

Here, libbar is not available for platform, but is used by libfoo which
is available for platform (apex_available defaults to
"//apex_available:platform"). libfoo is again depended on by mytest
which again is available for platform. The use of libbar should be
allowed in the context of test; we don't want to make libbar available
to platform just for the dependency from test because it will allow
non-test uses of the library as well.

Soong by itself can't tell whether libfoo and libbar are used only in the
context of a test. There could be another module depending them, e.g.,

cc_library_shared { name: "mylib", static_libs: ["libfoo"] }

can exist and it might be installed to the device, in which case
we really should trigger an error.

Since Make has the knowledge of what's installed and what's not,
the check should be done there.

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

Bug: 153073816
Test: m
Test: remove "//apex_available:platform" from libmdnssd (it is currently
installed to /system/lib), and check that `m system_image` fails

Merged-In: Ia304cc5f41f173229e8a154e90cea4dce46dcebe
(cherry picked from commit 89e850ab84)
Change-Id: Ia304cc5f41f173229e8a154e90cea4dce46dcebe
2020-04-28 09:27:24 +09:00
TreeHugger Robot ba505df1c4 Merge "Remove libopus from apex_available whitelist" into rvc-dev 2020-04-27 23:54:39 +00:00
Colin Cross 01fd7ccbc7 Add sdk mutator for native modules
Compiling native modules against the NDK disables platform features
like ASAN.  For anything shipped on the system image there is no
reason to compile against the NDK.  Add a new mutator to Soong that
creates a platform and an SDK variant for modules that set
sdk_version, and ignore sdk_version for the platform variant.  The
SDK variant will be used for embedding in APKs that may be installed
on older platforms.  Apexes use their own variants that enforce
backwards compatibility.

Test: sdk_test.go
Test: TestJNIPackaging
Bug: 149591340
Change-Id: I7d72934aaee2e1326cc0ba5f29f51f14feec4521
Merged-In: I7d72934aaee2e1326cc0ba5f29f51f14feec4521
(cherry picked from commit 82e192c3ae)
2020-04-27 14:45:05 -07:00
Colin Cross 1c93c299fb Require apps built against the SDK to use JNI built against the NDK
Apps that expect to run on older platforms should use JNI libraries
that will also run on older platforms.  Require that apps that set
sdk_version have jni_libs modules that also set sdk_version, or
set jni_uses_platform_apis: true to bypass the check.

Fixes: 149591057
Test: app_test.go
Change-Id: I76b9b45fb5773bc4dfc10520108f4f3578723909
Merged-In: I76b9b45fb5773bc4dfc10520108f4f3578723909
2020-04-27 14:45:05 -07:00
Dario Freni 98410fd9d6 Allow building unsigned APEXs payload for testing.
Bug: 148447155
Test: built a testing apex with unsigned payload.
Change-Id: I95aa3f11ff1adc1421fcd7ed5a356ee531a0a818
2020-04-27 20:52:09 +01:00
Jooyung Han 6bfc04369b apex: file_contexts for override_apex flattened
Make-var APEX_FILE_CONTEXTS_INFOS should contain entries for
override_apex modules. Otherwise flattened override_apex modules can't
be correctly labeled.

Bug: 154031888
Test: lunch gsi_gms_arm64-userdebug
      m file_contexts.bin
      check ../file_contexts.bin_intermediates/file_contexts.concat.tmp
      if it contains entries for override_apex
Change-Id: I60fc3da1def0f5fe14cfeef32a4c2a07a65b056e
2020-04-27 22:18:19 +09:00
Jooyung Han ced674e0e2 enforce updatable apexes to set min_sdk_version
updatable APEXes should set min_sdk_version as well.

Bug: 152655956
Test: m
Merged-In: I8192086eb89fa958dd8ff1b731e43e24bf217ce2
Change-Id: I8192086eb89fa958dd8ff1b731e43e24bf217ce2
(cherry picked from commit 548640b55f)
2020-04-27 19:44:06 +09:00
Jooyung Han 8c3b035045 Remove libopus from apex_available whitelist
libopus sets its own apex_available property.

Bug: 150999716
Test: m
Merged-In: I4cff3ebb7e017a1fb629b18b72238acf3df0d26e
Change-Id: I4cff3ebb7e017a1fb629b18b72238acf3df0d26e
(cherry picked from commit 47db5adb06)
2020-04-27 18:27:59 +09:00
Jooyung Han b6e5e512de Merge "Revert "Apex: add NeverAllowRule for updatable"" into rvc-dev 2020-04-27 07:30:27 +00:00
Jooyung Han cf75798d8f Revert "Apex: add NeverAllowRule for updatable"
This reverts commit e17caa63a6.

Reason for revert: rewrite this in ag/11250335 without neverallow

Bug: 152655956
Change-Id: I24436720056ac1b9878e37c2ee45c5806714f3e9
2020-04-27 07:30:10 +00:00
Marco Nelissen 172e6fc12a Merge "com.android.media apex uses sonivox without jet" into rvc-dev 2020-04-25 14:49:51 +00:00
Jooyung Han 65cd0f0caa apex: respect filename property for apk-in-apex
android_app_import supports filename: property, which overrides .apk
filename.

Now, apex packaging rule respects it too.
(Previously, apex packaging ignored it)

Bug: 152163837
Test: m  (soong tests amended)
Merged-In: I72e2f1c923f4d01c42a87bf2232a025adca4c918
Change-Id: I72e2f1c923f4d01c42a87bf2232a025adca4c918
(cherry picked from commit 39ee119de2)
2020-04-25 02:25:39 +09:00
Jooyung Han 40b286ceea apex: Don't run apex mutators if disabled
apex_deps/apex/apex_flattened mutators don't have to run if module is
disabled.

For some branches which have no valid targets, apex modules are disabled
by the os mutator. e.g. aosp-build-tools

Some enforcement checks which run during those mutators may fail because
build-environment doesn't provide full context information.

For example, "Platform_version_all_codenames" config variable is not
set while apex.min_sdk_version uses one of those codenames.

Bug: 152655956
Test: m
Merged-In: I47e27d2d025ba4c36534708b113ce77c4cb2397b
Change-Id: I47e27d2d025ba4c36534708b113ce77c4cb2397b
(cherry picked from commit 49f6701e9a)
2020-04-25 02:22:28 +09:00
Marco Nelissen 917f1ca528 com.android.media apex uses sonivox without jet
which is now marked as apex_available in the sonivox Android.bp

Bug: 151448144
Test: build
Change-Id: Ie1e83e964aa544dced42db6a6a38303e27306faf
2020-04-24 10:21:54 -07:00
Paul Duffin f8b9e51f33 Remove conscrypt.module.intra.core.api.stubs from apex white list
It is no longer needed because non-static java_library dependencies are
not considered to be part of the depending APEX.

Bug: 153443117
Bug: 153306490
Test: m nothing
Merged-In: I7d58d1047b2d400395a253e492b35008284778ff
Change-Id: I7d58d1047b2d400395a253e492b35008284778ff
2020-04-22 12:51:53 +01:00
Paul Duffin 3766cb7b6a Ignore PrebuiltDepTag when processing APEX contents
When a source and a prebuilt module are present in the same build a
dependency is added from the source module to the prebuilt module.
Previously, the code for generating the APEX did not recognize that
tag and in some cases (e.g. for cc_(prebuilt_)library_shared) will
fail the build.

This change:
1) Adds a test to reproduce the problem.
2) Improves the debug message by pretty printing the tag.
3) Adds a new ExcludeFromApexContents interface that can be implemented
   by a tag to declare that it should be excluded from the APEX
   contents.
4) Ignores tags that implement that interface when generating APEX
   contents.
5) Implements that interface on prebuiltDependencyTag to fix the
   test.

Bug: 153326844
Bug: 153306490
Test: m nothing
Merged-In: I9dd4312c4f995c816c0a31d8d733eb5d7f56e1ea
Change-Id: I9dd4312c4f995c816c0a31d8d733eb5d7f56e1ea
2020-04-22 12:51:52 +01:00
Paul Duffin b20ad0a7d4 Stop requiring apex_available on java_library members of sdks
Previously, adding java_library to an sdk required that the names of
any APEXes that transitively compiled against it were added to its
apex_available property. This change removes that requirement.

Also corrects the dependency path in the TestApexAvailable_IndirectDep
error which previously passed through "shared from static" static
dependency tags even though those are explicitly NOT followed when
checking apex_available settings.

Bug: 152878661
Bug: 153306490
Test: m droid
Merged-In: I995ed38956c1bc210b09494812de012fed9f9232
Change-Id: I995ed38956c1bc210b09494812de012fed9f9232
2020-04-22 12:51:51 +01:00
Paul Duffin f020796cad Add dependency tags to apex available errors
Having dependency tags in the dependency path that shows why a specific
module is considered part of an apex makes it easier to understand why
that is the case and detect possible issues.

Bug: 152762638
Bug: 153306490
Test: m nothing
Merged-In: Iba2a8a5a6abe03dadee456e760aa4373cd00c07b
Change-Id: Iba2a8a5a6abe03dadee456e760aa4373cd00c07b
2020-04-22 12:51:51 +01:00
Paul Duffin 03e7d0ca9c Extract DepIsInSameApex and RequiredSdks interfaces
The DepIsInSameApex() and RequiredSdks() methods were defined in a few
places to avoid having to depend on the whole ApexModule/SdkAware
interfaces directly. However, that has a couple of issues:
1) It duplicates functionality making it difficult to change, changes
   to the definitions outside the main interfaces do not cause compile
   time failures, instead they result in a runtime change in behavior
   which can be difficult to debug.
2) IDE navigation (specifically in Intellij) does not detect that the
   duplicate definitions can resolve to the definitions in the main
   interface.

This change extracts the methods into their own interfaces and reuses
those interfaces instead of duplicating the methods to fix both of
these issues.

Bug: 152878661
Bug: 153306490
Test: m nothing
Merged-In: I0cfdf342a14eb0bfb82b1bd17e0633d81c7facfb
Change-Id: I0cfdf342a14eb0bfb82b1bd17e0633d81c7facfb
2020-04-22 12:51:50 +01:00
Paul Duffin 133608f602 Allow walkPayloadDeps visitor to control walk flow
Delegate the responsibility for determining whether the
walkPayloadDeps() should visit a child dependency to its do function.
This is needed to allow the visitor in checkApexAvailability() to avoid
checking the apex_available setting after crossing the APEX boundary.

Bug: 152878661
Bug: 153306490
Test: m droid
Merged-In: If46a2f74b6eca670befc3aeae430650e85542346
Change-Id: If46a2f74b6eca670befc3aeae430650e85542346
2020-04-22 12:51:48 +01:00
Paul Duffin 868ecfde70 Improve missing apex_available message
The apex available check can traverse quite a long path (5+ steps) to
get from the apex to a module that is missing the apex from its
apex_available property. Understanding where that dependency came from
can often require examining the dependency path which can be difficult.
This change adds the path to the error to simplify that process.

Bug: 153306490
Test: m nothing
Bug: 152762638
Merged-In: Ic4eb169dc2026cd8339d49e23b25d6d1c3879750
Change-Id: Ic4eb169dc2026cd8339d49e23b25d6d1c3879750
2020-04-22 12:51:47 +01:00
Paul Duffin de7464cddc Split TestApexAvailable into separate tests
Having multiple tests within one method makes debugging specific
failures more difficult so this change split the TestApexAvailable
test into multiple separate tests.

Bug: 153306490
Test: m nothing
Bug: 152762638
Merged-In: I2b2408ef515fd79c078686ef29a6ee8fb0407e7e
Change-Id: I2b2408ef515fd79c078686ef29a6ee8fb0407e7e
2020-04-22 12:51:46 +01:00
Paul Duffin 404db3f4e8 Copy white listed apex available settings into snapshot
Makes sure that the module snapshots do not rely on the white list
of apex available settings so that when those lists are removed it is
not necessary to update any snapshots.

Bug: 142935992
Bug: 153306490
Test: m nothing
Merged-In: Iedcff7dfc2646a4da77258d16e06657dd2f411f9
Change-Id: Iedcff7dfc2646a4da77258d16e06657dd2f411f9
2020-04-22 12:51:37 +01:00
Paul Duffin 37a9aa24cc Remove special handling of test_ apexes
Test apexes no longer check to see whether their contents are available
so the special handling is no longer necessary.

Bug: 142935992
Bug: 153306490
Test: m nothing
Merged-In: Iecae7dcbb87908d19c672f74d3c1ed8810d4485b
Change-Id: Iecae7dcbb87908d19c672f74d3c1ed8810d4485b
2020-04-22 12:51:36 +01:00
Paul Duffin c23d9f652b Remove special handling of com.android.art.debug/release
The whitelistedApexAvailable used to map references to
com.android.art.debug/release to com.android.art before looking it up
in the white list. This change removed that mapping and simply added
both to the white list.

Bug: 142935992
Bug: 153306490
Test: m nothing
Merged-In: Ibad76fb73988688eb303e056197986ee9a6119ae
Change-Id: Ibad76fb73988688eb303e056197986ee9a6119ae
2020-04-22 12:51:35 +01:00
Jiyong Park d5e0ea25d1 Don't run apex_available check for coverage builds
Coverage build adds extra dependencies for the runtime libs. Marking
them and their transitive dependenciese with apex_available doesn't make
any value; it instead adds noise.

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

Bug: 150999716
Test: m
Merged-In: I08e51cec1de6ded624ef9d4c41c1e5b2e611ff38
(cherry picked from commit 58d1090032)
Change-Id: I08e51cec1de6ded624ef9d4c41c1e5b2e611ff38
2020-04-20 16:26:18 +09:00
Jiyong Park d182e5512f Remove some apex_available whitelist for the adbd APEX
The marked library(ies) were available to the adbd 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.

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

Bug: 150999716
Test: m
Merged-In: I6afbe905dda11056559521b937803dcd85b32fe5
(cherry picked from commit 3a0db5ef4e)
Change-Id: I6afbe905dda11056559521b937803dcd85b32fe5
2020-04-20 16:24:20 +09:00
Jiyong Park 24eec07f47 Make ndk_prebuilt_* be available to any apex
The NDK prebuilts are implicitly used when building with sdk_version set.
Make the module types be available to any apex so that we don't need to
manually add apex_available property to the module definitions manually.

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

Bug: 150999716
Test: m

Merged-In: I0870afa4c74b4a06ab1273dff84615778561ecc9
(cherry picked from commit e01e228270)
Change-Id: I0870afa4c74b4a06ab1273dff84615778561ecc9
2020-04-20 16:23:46 +09:00
Jiyong Park 2416c2903e Remove some apex_available whitelist
The marked library(ies) were available to the APEXes 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.

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

Bug: 150999716
Test: m
Merged-In: I91d1b1076733a949ca2a959ba640ce34d0233492
(cherry picked from commit 541142ce6b)
Change-Id: I91d1b1076733a949ca2a959ba640ce34d0233492
2020-04-20 16:22:56 +09:00
TreeHugger Robot 89030a315a Merge "Clean com.android.neuralnetworks APEX whitelist" into rvc-dev 2020-04-14 12:21:42 +00:00
Jooyung Han 84026389e7 apex: remove compat symlinks to vndk apex
For R+, symlinks from /system/lib to VNDK APEX are not necessary. (Note
that, symlinks to older VNDK are still necessary because older vendor
may access old locations.)

Hence, do not make symlinks for R+ VNDK APEX.

Bug: 142911355
Test: m # check /system/lib[64]/ for symlinks
        # cf should contain 28/29 symlinks but no symlinks for R
Change-Id: I852fad7edebed3e4edc03c374b3643da6b053fed
2020-04-14 14:22:31 +09:00
Ulya Trafimovich cc21bba967 Forbid generating boot image files for jars in updatable modules.
This is to guard against the potential situation when someone adds
updatable modules to the list of boot jars by mistake.

Test: aosp_walleye-userdebug builds.

Test: Manually break the checks and observe the errors:
  - move updatable module 'conscrypt' from
    PRODUCT_UPDATABLE_BOOT_JARS to ART_APEX_JARS:
      internal error: module 'conscrypt' from updatable apex 'com.android.conscrypt' is not allowed in the ART boot image

  - add updatable module 'conscrypt' to ART_APEX_JARS
    (but do not remove it from PRODUCT_UPDATABLE_BOOT_JARS):
      error: A jar in PRODUCT_UPDATABLE_BOOT_JARS must not be in PRODUCT_BOOT_JARS, but conscrypt is.

  - move updatable module 'framework-tethering' from
    PRODUCT_UPDATABLE_BOOT_JARS to PRODUCT_BOOT_JARS:
      internal error: module 'framework-tethering' from updatable apex 'com.android.tethering' is not allowed in the framework boot image

  - add non-updatable (in AOSP) module 'android.net.ipsec.ike'
    to PRODUCT_BOOT_JARS:
      internal error: failed to find a dex jar path for module 'com.android.ipsec.ike', note that some jars may be filtered out by module constraints

Bug: 147579140

Exempt-From-Owner-Approval: cherry-pick, approved in AOSP.

Change-Id: I25ca2f52530fcfa1f9823b2cfa3485db9c0d0db1
Merged-In: I25ca2f52530fcfa1f9823b2cfa3485db9c0d0db1
(cherry picked from commit b28cc3758c)
2020-04-09 14:50:21 +01:00
Jooyung Han e17caa63a6 Apex: add NeverAllowRule for updatable
to enforce that apexes that set updatable: true also set min_sdk_version

Bug: 152655956
Test: m
Change-Id: I0d2e9f9b3234873de073ab82d91211faedd16498
2020-04-08 05:20:11 +00:00
Jooyung Han 3978d03fb7 Merge "Build VNDK APEX for VNDK-Lite" into rvc-dev 2020-04-07 16:49:39 +00:00
Przemysław Szczepaniak 2bce0e8002 Clean com.android.neuralnetworks APEX whitelist
Test: coral-userdebug build
Bug: 148593574
Change-Id: I1babea6c221dec1cd5364250d09f5ea541494942
Merged-In: I1babea6c221dec1cd5364250d09f5ea541494942
2020-04-06 12:05:53 +00:00
Jooyung Han 95148f607e Merge "Apex: support codenames for min_sdk_version" into rvc-dev 2020-04-05 00:14:37 +00:00
Bill Peckham 1c610cfed1 Include partition tag in apexkeys.txt.
The partition tag helps merge_target_files.py determine
which apexkeys.txt to select from the framework partial
target files and which to select from the vendor partial
target files. The partition tag is the pysical partition
name, for example, a system_ext module on a device where
system_ext is at system/system_ext has a system
partition tag.

Bug: 138942268
Change-Id: Ia07887b34f1aa77dae94ef23610dfef83c1a5849
Merged-In: Ia07887b34f1aa77dae94ef23610dfef83c1a5849
2020-04-02 17:15:47 +00:00
Jooyung Han 29e91d2121 Apex: support codenames for min_sdk_version
Apex can use codenames like "Q", "R" for its min_sdk_version property.
Also, cc_library can use codenames for its stubs.versions.

Bug: 152655956
Test: vendor/google/build/build_mainline_modules.sh
Change-Id: I077ad7b2ac5d90b4c8708921e43846206f05ba70
2020-04-02 23:26:41 +09:00
Jooyung Han 42d7718086 Merge "Enforce apex.min_sdk_version for bundled builds" into rvc-dev 2020-04-01 15:37:23 +00:00
Jooyung Han 65d8a6262c Build VNDK APEX for VNDK-Lite
For VNDK-Lite devices, which doesn't define BOARD_VNDK_VERSION, VNDK
APEX is built with only VNDK-Sp libraries with core variants.

Bug: 141908078
Bug: 152353068
Bug: 151635128
Test: TH
Change-Id: I0d08d32473368fd158818d4c2c72fc4cfad68ce6
2020-03-27 23:23:32 +09:00
Jaewoong Jung 37ca4a1e0d Add code coverage support to android_app JNI libs.
This is a cherry-pick change.

Test: Built mainline module coverage data
Bug: 152117890
Change-Id: I47bf3e5d6e78c4518729bdb52616e248156d3cec
Merged-In: I47bf3e5d6e78c4518729bdb52616e248156d3cec
2020-03-27 13:06:12 +00:00
Jooyung Han 7406660685 Enforce apex.min_sdk_version for bundled builds
Previously, when Q-targeting apexes are bundled-built, they are built
against the latest stubs.

It was because unwinder is linked dynamically in R and APIs are provided
by libc while Q apexes should run on Q where libc doesn't provide those
APIs. To make Q apexes run on Q device, libc++ should be linked with
static unwinder. But, because libc++ with static unwinder may cause problem
on HWASAN build, Q apexes were built against the latest stubs for bundled
build.

However, Q apexes should be built against Q stubs.

Now, only for HWASAN builds, Q apexes are built against the latest stubs
(and native modules are not linked with static unwinder).

Bug: 151912436
Test: TARGET_SANITIZE=hwaddress m
      => Q apexes(media, resolv, ..) are linked with the latest stubs
      m
      => Q apexes are linked with Q stubs,
         and Q apexes' libc++ is linked with static unwinder
Change-Id: If32f1b547e6d93e3955c7521eec8aef5851f908c
2020-03-27 02:58:20 +09:00
Jooyung Han c3e9263d7e Pass min_sdk_version to cc __ANDROID_SDK_VERSION__
The macro is required only for apex variants regardless of useVndk.
Before the enforcement of LLNDK sdk version, the macro was not passed to
vendor variants.

Bug: 151689896
Test: TARGET_BUILD_APPS=com.android.media.swcodec m
      libbase in swcodec apex is linked with liblog#29
      (compiled with __ANDROID_SDK_VERSIO__=29)

Merged-In: I57fa4afe027eb39b98bd94d534be9ebe11713f19
Change-Id: I57fa4afe027eb39b98bd94d534be9ebe11713f19
(cherry picked from commit 24282778ee)

Exempt-From-Owner-Approval: cp from aosp
2020-03-25 23:23:26 +00:00
Jooyung Han 67a96cd7cb Enforce min_sdk_version of apex(use_vendor:true)
Even though use_vendor:true is prohibited, there is media.swcodec apex
which is still use_vendor: true and also needs to support Android10.
(min_sdk_version: 29)

Because LLNDK stubs were provided only for the current VNDK version,
media.swcodec couldn't be built against min_sdk_version: 29.

This change introduces additional versions for LLNDK stubs which are
enforced when an apex with use_vendor: true sets min_sdk_version.

To make things easier, the versions of LLNDK stubs are borrowed from its
implementation libraries.

Bug: 147450930
Bug: 149591522
Test: TARGET_BUILD_APPS=com.android.media.swcodec m
      (with min_sdk_version: 29 set)
      check if liblog/libc/libm/libdl stubs are 29
      check if 29 stubs don't have new symbols.

Merged-In: I79946cbb4da6617138a96d2b254349d3a298e77b
Change-Id: I79946cbb4da6617138a96d2b254349d3a298e77b
(cherry picked from commit 380fc3615c)
2020-03-25 10:40:41 +09:00
Jiyong Park 162e844c40 track static deps when gatherint notices for apex
This change fixes a bug that license info for statically linked
libraries are absent in the merged notice for APEX. The problem was that
we were iterating over the apexFiles list that represents actual files
(not Soong modules) that are included in the APEX. The problem is now
fixed by iterarting the all the modules that directly or indirectly
contribute to the APEX using walkPayloadDeps() function.

Bug: 149455933
Test: m
Merged-In: I38655da62b590b669ab4649815b61a5a8e314154
(cherry picked from commit 9918e1afd7)
Change-Id: I38655da62b590b669ab4649815b61a5a8e314154
2020-03-18 12:45:50 +09:00
Jiyong Park 79505fbf22 Merge "Remove libselinux from the apex_available whitelist" into rvc-dev 2020-03-17 08:29:46 +00:00
Jiyong Park 7e5576a7b1 Remove libselinux from the apex_available whitelist
libselinux no longer is included in any APEX. Only the platform variant
of it (/system/lib/libselinux.so) exists and APEXes link to it.

Removing the lib name from the whitelist to make it clear that the
library is not available to any APEX.

Bug: 151053366
Bug: 150999716
Test: m

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

Merged-In: Id4fb933141ad32ff5217a58f1c7d689cc657e9ea
(cherry picked from commit 1731f6ae3f)
Change-Id: Id4fb933141ad32ff5217a58f1c7d689cc657e9ea
2020-03-17 05:25:31 +00:00
Baligh Uddin cb6aa122d8 Allow for overriding container packagename for an Apex.
Test: go test ./... -test.v -run TestOverrideApex
BUG: 148198056
Merged-In: If49042a7acbf9f0dcb505664863d97805902e459
Change-Id: If49042a7acbf9f0dcb505664863d97805902e459
2020-03-16 16:41:11 -07:00
TreeHugger Robot e989a8cb42 Merge "Add __ANDROID_SDK_VERSION__=<ver> macro" into rvc-dev 2020-03-16 16:07:17 +00:00
Jooyung Han 61c4154ca6 Add __ANDROID_SDK_VERSION__=<ver> macro
sdk_version is passed for relevant variants.
If not specified or "current",
it maps to "10000" for platform variants, and
"min_sdk_version" of the apex for apex variants.

Bug: 150860940
Test: m (soong test)
      manually check build.ninja
Merged-In: I5102ab0c5086b5ad29d16ac45af55d32062167b4
Change-Id: I5102ab0c5086b5ad29d16ac45af55d32062167b4
(cherry picked from commit ccce2f2c23)

Exempt-From-Owner-Approval: cp from aosp
2020-03-16 16:07:07 +00:00
TreeHugger Robot e1ededc88f Merge "Make __ANDROID_APEX_<NAME>__ macro optional" into rvc-dev 2020-03-16 16:06:49 +00:00
Jooyung Han 68e511e4fd Make __ANDROID_APEX_<NAME>__ macro optional
This is rarely used feature but cost alot for the local build and build
inra.

Bug: 150506627
Test: m
Merged-In: Iec3ada4a97c7b228f2818563fa0e81b407f2715a
Change-Id: Iec3ada4a97c7b228f2818563fa0e81b407f2715a
(cherry picked from commit c87a059c88)

Exempt-From-Owner-Approval: cp from aosp
2020-03-16 16:06:31 +00:00
Jooyung Han 23b0adf4ce apex: Deprecate legacy_android10_support prop
min_sdk_version = 29 implies that the module should support Android10.

Bug: 150431944
Test: m
Merged-In: Iad90a239898f59456900ae7816b90379b1b43406
Change-Id: Iad90a239898f59456900ae7816b90379b1b43406
(cherry picked from commit 5417f775e5)

Exempt-From-Owner-Approval: cp from aosp
2020-03-16 10:57:51 +00:00
Jooyung Han 8d8906c64f apex: fix a test util (ensureExactContents)
ensureExactContents shouldn't return immediately when it finds a match
from expected list of files.

Bug: 151491839
Test: m nothing
Merged-In: Ie15c811f9cfcae7ede28dee0fcf203cee24659a0
Change-Id: Ie15c811f9cfcae7ede28dee0fcf203cee24659a0
(cherry picked from commit e6436d7bf0)
2020-03-14 04:39:56 +00:00
Jooyung Han 0c4e016428 apex: choose stub according to min_sdk_version
Native modules within APEX should be linked with proper stub version
according to its min_sdk_version.

For example, when min_sdk_version is set to "29", libfoo in the apex
would be linked to libbar of version 29 from platform, even if it has
a newer version like 30.

Bug: 145796956
Test: m nothing (soong tests)
Merged-In: I4a0b2002587bc24b7deeb5d59b6eeba5e1db5b1f
Change-Id: I4a0b2002587bc24b7deeb5d59b6eeba5e1db5b1f
(cherry picked from commit 03b5185b88)

Exempt-From-Owner-Approval: got ORV already.
2020-03-12 14:07:05 +00:00
Jiyong Park 9f14b9b5df Runtime deps to a stubs lib crosses APEX boundary
When there is a runtime depedency (via runtime_libs property) to a
library providing stable C APIs, the dependency is considered as
crossing APEX boundary. Therefore, the requested lib doesn't need to be
made available to the APEX where the requesting lib is in.

Exempt-From-Owner-Approval: cherry-pick from aosp, approved there.

Bug: 147813447
Test: m
Merged-In: I9cf8a5877850fb85b92c851e15fac921b8b7641b
(cherry picked from commit 323a4c3ab3)
Change-Id: I9cf8a5877850fb85b92c851e15fac921b8b7641b
2020-03-12 03:28:54 +00:00
Jooyung Han b8fa86ad6f Fix apex_available
Checking apex_available was missing some corner cases.
For example, the deps of share deps of cc_library modules are missed
while those from cc_library_shared are correctly tracked.

This was due to..

* calling DepIsInSameApex in WalkDeps: both work fine separately, but
when they are used together, it fails to work. It's due to how WalkDeps
works. (We might fix this bug too risky since it is used very widely)
* incorrect receiver for DepIsInSameApex in apex_deps mutator: receiver
is supposed to be parent, but child was used before. Interestingly lots
of deps are within the same group of module types(cc to cc, java to
java), it has worked. (note that receiver's DepIsInSameApex
implementation can be different).

This change fixes them by..

* walkPayloadDeps is now relying on ApexVariation, which is calculated
correctly by TopDown apex_deps mutator.
* use correct receiver for DepIsInSameApex in apex_deps mutator, which
requires for java.SdkLibrary to override the method and for
java.Library/Import to use passed dep instead of receiver to check its
membership of sdk.

Exempt-From-Owner-Approval: cherry-pick from aosp/master

Bug: 151071238
Test: build/boot
Merged-In: I0569ef4bb8e79635e4d97a89f421a8d8b7d26456
(cherry picked from commit 5e9013be22)
Change-Id: I0569ef4bb8e79635e4d97a89f421a8d8b7d26456
2020-03-11 16:38:21 +09:00
Jiyong Park 7bd9444b0f Apex_available check failure reveals dependency
When the check for apex_available has failed, the build system now shows
the module that brought the unavailable module into the APEX.

Bug: 151051671
Test: m
Change-Id: Id1a3fda67fe56fdc2dc90ec800d10689415de4d6
2020-03-09 14:29:18 +09:00
TreeHugger Robot bc4df10016 Merge "DO NOT MERGE: Remove AppSearch from Android R." into rvc-dev 2020-03-05 21:09:00 +00:00
Colin Cross 7365eaafd5 Add min_sdk_version property to apexes
Add a min_sdk_version property apexes.  Currently a noop, but will
be used to enforce that dependencies are compatible with the
specified version.

Test: m checkbuild
Bug: 149591522
Merged-In: I923773c90fe15becbffae3986791aa9edde8f8f6
Change-Id: I923773c90fe15becbffae3986791aa9edde8f8f6
(cherry picked from commit 50317874ff)
2020-03-05 14:40:28 +09:00
Nikita Ioffe 307dd9f4a5 Merge "Always use "${codename}.${sha}" if UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT=true" into rvc-dev 2020-03-04 21:54:26 +00:00
Jiyong Park e95000a35e Merge "PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES is applicable to override_apex" into rvc-dev 2020-03-04 02:50:48 +00:00
Nikita Ioffe 934c4f2acc Always use "${codename}.${sha}" if UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT=true
Test: m checkbuild
Test: DIST_DIR=/tmp/r-on-q/prod/ TARGET_BUILD_VARIANT=userdebug \
  vendor/google/build/build_mainline_modules_prod.sh -j120
Test: DIST_DIR=/tmp/r-on-q/rsha/ TARGET_BUILD_VARIANT=userdebug \
  vendor/google/build/build_mainline_modules.sh -j120
Test: checked target sdk version is correct for both builds
Bug: 149733822
Change-Id: I3e1beeb721f7e87bc6adda61861fa962ec892360
2020-03-03 12:06:30 +00:00
Jiyong Park a519c54dd3 PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES is applicable to override_apex
apex { name: "foo" }
override_apex { name: "override_foo", base:"foo" }

PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES := foo:com.android.foo

Previously, the override was done only for the overridden package "foo",
but not for "override_foo". Fixing this issue by using ctx.ModuleName()
when finding the package name to use.

Bug: 150645663
Test: m
Change-Id: I2947e5c75369216a4bbce8749503236be86771c3
2020-03-03 11:45:41 +09:00
Dario Freni 18423788cb Pass apex_build_info to bundle base.zip file
Fix: 150077028
Test: manual inspection of com.android.wifi-base.zip
Change-Id: Id201a3410a46e0c88a77e6f88e5b85906c7a6c8b
2020-03-02 22:31:01 +00:00
Jiyong Park af8998cba6 bundle config contains (path,manifest) pairs of embedded APKs
If an APEX contains APKs and the manifest package name of the APKs are
overridden (either via override_android_app
orPRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES), that the path to the APK
(relative in the APEX) and the overridden manifest package name is
recorded in the bundle config file.

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

Bug: 148002117
Test: m

Merged-In: Ibb90bcefb77fa6b2dad77cb2facc6079de9ab154
(cherry picked from commit cfaa1643e8)
Change-Id: Ibb90bcefb77fa6b2dad77cb2facc6079de9ab154
2020-03-01 03:59:11 +00:00
Jiyong Park d93e1b1e66 bundle config for apexes are auto-generated
bundle config file for apexes are auto-generated. It is included in the
<apex>-base.zip file, which is expected to be extracted and then fed
into the bundletool.

This change is in preparation for the upcoming change to include
information about embedded apks in the bundle confir file.

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

Bug: 148002117
Test: m

Merged-In: If25d75e0f62036dc777faf8593ed8eb9a74950b0
(cherry picked from commit bd15961043)
Change-Id: If25d75e0f62036dc777faf8593ed8eb9a74950b0
2020-03-01 03:56:51 +00:00
Colin Cross 30ec3c97d2 Merge "Only dist apex sizes for checkbuild" into rvc-dev 2020-02-29 03:31:05 +00:00
Colin Cross cd33fa2668 Only dist apex sizes for checkbuild
Using $(call dist-for-goals,droidcore,...) for every apex
installed-files.txt causes every apex to be built for all builds,
causing a signficiant regression in build time.  For now only
dist them in checkbuilds, which were going to build all of them
anyways.

Ideally we would like to dist the installed-files.txt only if
the apex was already built, but there is not currently a way to
express that.

Test: treehugger
Bug: 149979076
Change-Id: I21edbc90980f94ad6d497cb86ee80223dd782fe1
Merged-In: I21edbc90980f94ad6d497cb86ee80223dd782fe1
(cherry picked from commit 1c85e8e019)
2020-02-28 10:43:10 -08:00
Jiyong Park 73fa54e7a4 Merge "No symlink for host APEXes" into rvc-dev 2020-02-27 03:22:01 +00:00
Jiyong Park 9b96418dfe No symlink for host APEXes
Symlinking doesn't make sense for host APEXes.

Bug: 150255435
Test: m com.android.art.host and inspect the built APEX; there is
no symlink.

Change-Id: I28492dfaaef471117a430be05255fbef76e557b0
2020-02-26 18:27:19 +09:00
Jooyung Han 650417966c apex: do not follow jni_libs from android_app
Because APK-in-APEX embeds its jni_libs in it. We don't have to follow
deps of jni_libs.

Bug: 146992436
Test: m com.android.tethering
      deapexer extract com.android.tethering.apex apex
      ls apex # there should be no /lib dir

Merged-In: Ifa1a6430a420ae7376b155cd59b8ece462cced7e
Change-Id: Ifa1a6430a420ae7376b155cd59b8ece462cced7e
(cherry picked from commit b7bebe2616)
2020-02-26 14:10:23 +09:00
Alexander Dorokhine c9c7116721 DO NOT MERGE: Remove AppSearch from Android R.
Test: presubmit
Bug: 150249538
Change-Id: I0a87b9d893bc76acf5ac5e8684f450b9a4f2a0cd
2020-02-25 17:16:41 -08:00
Automerger Merge Worker f9c738d084 Allow for setting a logging_parent for an Apex. am: 004d717158 am: f4fa3fe81e am: 833162725c
Change-Id: Ifa85d785453e5e363b4b374ce0ea1d12963cafbb
2020-02-21 18:05:12 +00:00
Baligh Uddin 004d717158 Allow for setting a logging_parent for an Apex.
Test: go test ./... -test.v -run TestOverrideApex
BUG: 148198056
Change-Id: Ib3749e59f5e31903f2dbe75f86534738147a55ec
2020-02-21 16:59:26 +00:00
Nikita Ioffe 19fed2b4b9 Merge "For Q APEXes default target_sdk_version and min_sdk_version to 29" 2020-02-20 22:10:50 +00:00
Automerger Merge Worker 96574500db Merge changes from topic "soong_tests_ndk" am: 53fe467c67 am: 563533c0e6 am: 56f90a17fe
Change-Id: Ia267936ad071f362b92a788fb49b1dcb2ae44d3f
2020-02-20 21:36:00 +00:00
Nikita Ioffe db10c13bdf For Q APEXes default target_sdk_version and min_sdk_version to 29
This will allow installing Q launched APEXes built from master on Q
devices.

Test: m com.android.conscrypt
Test: see another CL in topic
Test: lunch blueline-userdebug
Test: TARGET_BUILD_APPS=com.android.resolv m
Test: installed on Q blueline, verified installation succeeded
Bug: 149733822
Change-Id: Ia863b5701716ef4022b470ee758368ea4fffb1d4
2020-02-20 13:34:01 +00:00
Colin Cross f9aabd719a Make apex use cc.GatherRequiredDepsForTests
Remove the duplicated native modules from apex_test.go.

Test: all soong tests
Change-Id: Ib88af058d23cf37446d7a4bb571edfb1e0880854
2020-02-19 19:07:11 -08:00
Automerger Merge Worker 7094cbc872 Merge "have a per-module switch to turn the symlinking optimizaiton off" am: eb9b9f23ec am: 67a0970d4f am: 279f6f1c80
Change-Id: Iae286618eb0206d7d9b0c40369048e5f38fb6084
2020-02-20 02:22:14 +00:00
Jiyong Park eb9b9f23ec Merge "have a per-module switch to turn the symlinking optimizaiton off" 2020-02-20 01:47:57 +00:00
Automerger Merge Worker ddf8057250 Merge "Permissions XML file for java_sdk_library is mutated for APEX" am: 2d6d5d8995 am: dcf5cfaea5 am: ba87e454cb
Change-Id: If143ba1b41e7374d2c92e91c5a5906370ce1f6c4
2020-02-20 00:50:53 +00:00
Jiyong Park 2d6d5d8995 Merge "Permissions XML file for java_sdk_library is mutated for APEX" 2020-02-19 23:57:14 +00:00
Jiyong Park 9d677206d1 have a per-module switch to turn the symlinking optimizaiton off
The optimization is confusing syshealth because the modules will use
more memory when they are switched to the prebuilt (unbundled) or
updated via Play.

Let's have a per-module switch to control the behavior and turn it on
only for non-updatable modules like ART.

Bug: 149805758
Test: m
Change-Id: Ieb842c47f31f3b06e403b1e1f9e463c3e5524107
2020-02-19 20:16:25 +09:00
Jiyong Park e383388f98 Permissions XML file for java_sdk_library is mutated for APEX
This change fixes a regression that was introduced with
I597bccbb177b6b6320c3a3edeff467243230d384. With the change, the content
of the permissions XML file for a java_sdk_library was determined before
the java_sdk_library is mutated for an APEX. As a result, the file path
to the implementation jar library was always set to
/system/framework/*.jar regardless of whether the java_sdk_library is
part of an APEX or not.

This change fixes the problem, by creating the permissions XML file via
a new module type. The content of the xml file is determined after the
xml file is mutated for APEXes.

Bug: 149600642
Test: m

Change-Id: Id21f8d8285df49b0b3be1daf0f101f2bc978eeb0
2020-02-19 09:47:37 +09:00
Automerger Merge Worker e81fff6889 Merge "Statically link the unwinder into binaries packaged into an unbundled APEX with legacy_android10_support: true." am: d8b80bc683 am: 4b20d12832 am: 7fe957e171
Change-Id: Ic27432ee08f3acd6052ceeacb56249077a5edf65
2020-02-18 21:48:42 +00:00
Peter Collingbourne dc4f986b2a Statically link the unwinder into binaries packaged into an unbundled APEX with legacy_android10_support: true.
Bug: 149075752
Test: tapas com.android.conscrypt com.android.tethering arm64
Test: m out/target/product/generic_arm64/{,symbols/}apex/com.android.{tethering,conscrypt}/lib64/libc++.so
Test: Verified that unwinder was dynamically linked to tethering's
Test: libc++ and statically linked to conscrypt's.
Test: lunch flame-userdebug && m
Test: Verified that unwinder was dynamically linked to /system/lib64/libc++.so
Change-Id: I98eed7cb4316962b19b5c12e150c224c25d0e91d
2020-02-13 22:29:44 -08:00
Jeffrey Huang 946f7d4600 Merge "Remove liblog from whitelist" am: 7d8ecd0bc1 am: e7f62e9019 am: 7fc4e23f00
Change-Id: Ib57efd0d3f3e36059edd92a5f9722c4b4623e5fd
2020-02-14 01:30:42 +00:00
Jeffrey Huang 7d8ecd0bc1 Merge "Remove liblog from whitelist" 2020-02-14 00:45:22 +00:00
Treehugger Robot cf56a70cd2 Merge "apexDepsMutator is a top-down mutator" am: 680afd7bc7 am: 933fb89a3f am: c798bcde06
Change-Id: I4695d3aa1231ff40d4a6570a0973360ebd9bf01d
2020-02-13 22:59:40 +00:00
Treehugger Robot 680afd7bc7 Merge "apexDepsMutator is a top-down mutator" 2020-02-13 22:29:23 +00:00
Jeffrey Huang f0ae6ccaa7 Remove liblog from whitelist
Bug: 145923087
Test: m -j
Change-Id: Ib1b711c01262ce9466cdd49daa3cc7142376004c
2020-02-13 12:33:39 -08:00
Automerger Merge Worker 2bd5ffa8d4 Update apex.go to remove libutils am: 9401b187f8 am: 8aac3e3c0d am: 762abb8e1c
Change-Id: Ib964dc1b1dbc1e3c724c6174bc1e36763fe777b4
2020-02-13 06:48:23 +00:00
Jeffrey Huang 9401b187f8 Update apex.go to remove libutils
Bug: 145922701
Test: m -j
Change-Id: I13078f43129a7a9478b9bb97bb94c2c70fdb148c
2020-02-12 17:35:59 -08:00
Automerger Merge Worker 8014e606dd Merge "Update apex dependency even for test and non-installable APEXes" am: 4e29184a4e am: ee239878f4 am: 088d5cf1cb
Change-Id: I68fe4bcf81ccc2cd9b16857c59cc1d484a006547
2020-02-12 08:11:23 +00:00