Commit Graph

3129 Commits

Author SHA1 Message Date
Dan Willemsen
4745007bb1 Add Darwin x86_64+arm64 universal binary support
This is configured from Make by setting up Darwin+Arm64 as a HOST_CROSS
target (which is largely true, as binaries can't be executed on X86_64
machines). On the Soong side, it's a bit blurier, as we don't current
have any other users that are the same OS but not natively executable
(Linux/musl is executable, Windows/x86 is a different OS).

Instead of requiring cc_binary/etc to become multi-architecture-aware
and using something like common_first/MultiTarget, this defaults all
non-multi-architecture-aware modules to be built with both
architectures. It then adds a dependency with the
DarwinUniversalVariantTag so that supporting modules can get the outputs
of the other variant.

Cc uses that dependency tag to run lipo on shared libraries and binaries
so that the output of the x86_64 variant is actually a fat binary
including both architectures.

Bug: 203607969
Test: build sdk-repo targets on a Mac
Change-Id: Icbddb0a177c0ba19d3e0d11f8cf568e0d1ea3245
2021-12-07 22:01:25 -08:00
Martin Stjernholm
43c44b00d6 Do not allow duplicate deapexer dependencies.
Without these errors, the last encountered deapexer would silently be
used. However with PRODUCT_INSTALL_APEXES there will only be deapexer
for installable APEXes, and we can assume only a single installable
APEX exists for each APEX variant, so make it an error if it isn't the
case.

Corresponding to http://ag/15156931.

Test: m nothing SOONG_CONFIG_art_module_source_build=true
Test: m nothing SOONG_CONFIG_art_module_source_build=false
Test: m nothing SOONG_CONFIG_art_module_source_build=false
  with installable:true for the com.android.art.debug prebuilt APEX -
  check that it fails with an "ambiguous duplicate deapexer" error
Bug: 192006406
Bug: 192542393
Change-Id: I44566fd26b12f82a8a67fe4a69e56303460756d0
2021-12-07 23:30:30 +00:00
Jiakai Zhang
204d111865 Merge "Add ART boot image profile to the ART APEX." am: e6f63be764 am: 255734a03a am: c0adf3ba1c am: 5195a30de9
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1904290

Change-Id: I9ceaeca0de9f290a41ba416eb862b7be147cb874
2021-12-07 16:29:34 +00:00
Jiakai Zhang
e6f63be764 Merge "Add ART boot image profile to the ART APEX." 2021-12-07 15:22:37 +00:00
Artur Satayev
6e8071d17a Merge "Add ModuleWithMinSdkVersionCheck type." am: a4fc08d204 am: 25f5783263 am: fe55ffd190 am: 44d0ef55da
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1907860

Change-Id: I147da371d445f09ca2f131df1be91545eba37772
2021-12-06 18:09:34 +00:00
satayev
b3fd411465 Add ModuleWithMinSdkVersionCheck type.
This is to help following refactor for individual modules to have their
own version of checking where needed.

For example, apk in apex may want to enforce it's own version of
CheckMinSdkVersion.

Bug: 205923322
Test: presubmit
Change-Id: Ia2fad6c52af39e21f65385bcb283f1e3adab5548
2021-12-06 12:05:48 +00:00
Jiyong Park
a119a182bd Merge "Add future_updatable to the apex module" am: 103d511117 am: 88589cf238 am: 82a851b155 am: d0ce5a0925
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1904291

Change-Id: I83e1efce2f1464a30eb3bad406ce4d96dd419630
2021-12-06 10:58:43 +00:00
Jiyong Park
f402058d2c Add future_updatable to the apex module
The new property is used to mimic some of the build behaviors that
currently are applied only when an APEX is `updatable: true`. This
property is helpful to minimize the sudden impact (e.g. change in size)
when an APEX becomes updatable.

Currently, the behavior that this property mimics is the disabling of
the size optimization.

Bug: 207336449
Test: m
Change-Id: I500306afa1221625fda3e89a8d12d5d341791a1f
2021-12-06 02:18:13 +00:00
Jiakai Zhang
49b1eb6b04 Add ART boot image profile to the ART APEX.
We will need the profile when we generate the primary boot image on
device.

Bug: 203492478
Test: Run `banchan com.android.art x86_64 && m` and see
  `$ANDROID_PRODUCT_OUT/apex/com.android.art/etc/boot-image.prof`.
Test: Run `lunch aosp_cf_x86_64_phone-userdebug && m` and see both
  `$ANDROID_PRODUCT_OUT/apex/com.android.art/etc/boot-image.prof` and
  `$ANDROID_PRODUCT_OUT/system/etc/boot-image.prof`, in different
  sizes.
Test: Start Cuttlefish with the built image and see both
  `/apex/com.android.art/etc/boot-image.prof` and
  `/system/etc/boot-image.prof` on device.
Change-Id: Id879dc49b234133dfbb9563814328661a1f4a6c0
2021-12-03 20:02:10 +00:00
Daniel Norman
6879cf5c53 Merge "Forbid updatable: true on vendor APEXes." am: 7260025670 am: c046926ac5 am: ab360daa03 am: 917cdf20b3
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1908986

Change-Id: Ic4df53e320891a24c5798f897ce10db8caec778a
2021-12-03 19:07:56 +00:00
Daniel Norman
6910911c64 Forbid updatable: true on vendor APEXes.
Vendor APEXes do not formally support updates outside of the main OTA
process. We should clarify this at build time.

Test: set vendor apex to updatable, observe failure
Test: apex_test.go
Change-Id: Ife8d242a42415ebf00d7dced72c07cda1fde1839
2021-12-02 12:53:12 -08:00
Liz Kammer
01cebf606b Merge "Support empty strings in bp2build" am: a9351ef6e6 am: 7cb87525ef am: 3044f94f32 am: 8ac1619830
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1907331

Change-Id: I510c1b3e833a4d279fea7e2a34d125b6c5e6842d
2021-12-02 17:27:12 +00:00
Liz Kammer
a9351ef6e6 Merge "Support empty strings in bp2build" 2021-12-02 15:35:10 +00:00
Treehugger Robot
1e168fece0 Merge "Add Sh_binaries property" am: abd43ec406 am: eea12c1be9 am: e5d333f7e1 am: 9839c0cf56
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1899131

Change-Id: Iff3cdfe7c26af27ddb46adbacdc73f0fc82e6b90
2021-12-02 02:18:03 +00:00
Treehugger Robot
abd43ec406 Merge "Add Sh_binaries property" 2021-12-02 00:52:23 +00:00
Benjamin Brittain
aedf01bd62 Merge "Add support for Rust JNI Libraries" am: 7c721018bb am: 9915e2dfc6 am: f842076481 am: 66ddbf9e23
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1906713

Change-Id: I399a929010ecc54ea62542f5d64c2d279aec2dc9
2021-12-01 15:36:45 +00:00
Liz Kammer
46fb7aba4d Support empty strings in bp2build
Previously, could not set an empty string as a value of an attribute;
however, this is necessary in some cases. To not unnecessarily create an
empty string, use string pointers for attributes rather than strings.

Test: go test bp2build tests
Change-Id: I03b3a3567452d455246d22d81f86c317d06b7c39
2021-12-01 10:14:49 -05:00
Benjamin Brittain
7c721018bb Merge "Add support for Rust JNI Libraries" 2021-12-01 14:12:34 +00:00
Jiakai Zhang
c9ff3dc68a Merge "Add entries for STANDALONE_SYSTEMSERVER_JARS to systemserverclasspath.pb" am: 2258b889bf am: 1d7dad1f09 am: 0cb50b1036 am: 33ea009498
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1876173

Change-Id: I9c1f63b38f151fface4001dd98800488b91e6926
2021-12-01 13:13:19 +00:00
Benjamin Brittain
9edc375a06 Add support for Rust JNI Libraries
Test: Verified Rust JNI lib is in apex

Change-Id: Icb013d7b2f4c5d8ec009ea4937185689cc0cac16
2021-11-30 13:38:15 -05:00
Jiakai Zhang
cee9e19a51 Add entries for STANDALONE_SYSTEMSERVER_JARS to systemserverclasspath.pb
This CL updates platform_systemserverclasspath,
systemserverclasspath_fragment, and
prebuilt_systemserverclasspath_fragment to write entries for
STANDALONE_SYSTEMSERVER_JARS to systemserverclasspath.pb. A new property
`standalone_contents` is aded to `systemserverclasspath_fragment` and
`prebuilt_systemserverclasspath_fragment` to list the standalone system
server jars in the APEX, and entries will be written to
systemserverclasspath.pb accordingly at build time.

To add more context, these entries will be consumed by derive_classpath
in order to generate an environment variable
PRODUCT_STANDALONE_SYSTEM_SERVER_JARS. The environment variable will
then be comsumed by odrefresh to determine what jars to preopt on early
boot.

Note that the variable should not end with "CLASSPATH" because the list
is not used by runtime as a classpath. It is just a colon-separated list
of jars. System server loads the jars separately with paths hardcoded in
the code.

Bug: 203198541
Test: manual -
  1. Add some jars to PRODUCT_STANDALONE_SYSTEM_SERVER_JARS
  2. Add some other jars to PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS
     and standalone_contents.
  3. Build an image.
  4. Flash the image to a device.
  5. adb shell echo \$STANDALONE_SYSTEMSERVER_JARS
  6. See the correct list of jars.
Change-Id: I09a6fd1d3db85c194330da9b751702a9bf069e26
2021-11-30 10:51:10 +00:00
Sundong Ahn
80c04891de Add Sh_binaries property
The sh_binary module is not supported the vendor variant. So, even if
there is "vendor: true" in sh_binary module, the image variant is
"image:" instead of "image:vendor.Tiramisu".
But the vendor APEX has vendor variant, so vendor APEX module and
sh_binary module have different variants and the sh_binary cannot be
added to vendor apex.
So the Sh_binaries property is added, and the image variant is removed
at DepsMutator.

Bug: 205065320
Test: make -j40 && sh_binary is added to vendor APEX && install check
Change-Id: I30e2d96a73b45e7b06eff24550542cb010008c41
2021-11-25 03:43:57 +00:00
Pedro Loureiro
c362142438 Perform validation of shared library attributes
Perform consistency checks as per http://go/updatable-shared-libraries

These include:
  * no attribute can specified can be less than T
  * max-device-sdk can't be less than min-device-sdk
  * min and max-device-sdk need to be at least the module's
  min_sdk_version
  * using on-bootclasspath-before implies that the module's
  min_sdk_version is at least T or the library has min-device-sdk of at
  least T

Test: m nothing

Bug: 191978330

Change-Id: Iaca5cf23fb0bc7e65effb3529c8e829560894c2e
Merged-In: Iaca5cf23fb0bc7e65effb3529c8e829560894c2e
(cherry picked from commit f9e584dd20)
2021-11-24 17:09:19 +00:00
Pedro Loureiro
9956e5e281 Add support for new permissions library tag attributes
We are expanding PackageManager's supported attributes and this change
enables the developer to define them in the .bp file.

Test: m nothing

Bug: 191978330

Change-Id: I01d579190fb585662086a7fc456f3b33cb89fb57
Merged-In: I01d579190fb585662086a7fc456f3b33cb89fb57
(cherry picked from commit 826863c8e0)
2021-11-24 17:09:18 +00:00
Martin Stjernholm
93f5a8d1a7 Don't pass ":=" in variable name to AndroidMkEntries.SetString. am: ae44fd8032 am: 7263046919 am: 471116c036 am: 3514941226
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1900777

Change-Id: I4f5bd0b59f06a2dee68fd6e7b25a34081a902e75
2021-11-24 03:39:52 +00:00
Martin Stjernholm
ae44fd8032 Don't pass ":=" in variable name to AndroidMkEntries.SetString.
Fixes typos in https://r.android.com/1897972.

Test: m SOONG_CONFIG_art_module_source_build=false nothing
Bug: 204136549
Change-Id: I768c21bc99bfb4978fcf7f4f3631eef866e76764
2021-11-23 23:17:33 +00:00
Sophie Zheng
a42e367be8 Merge "NDK API coverage" am: 1469ff6ece am: 0ea8eee571 am: b2e9e69499 am: 6e6b076f1e
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1899591

Change-Id: I63ab3eceda65c2f6bab1edac83269c243ec9d59d
2021-11-23 18:50:17 +00:00
Sophie Zheng
1469ff6ece Merge "NDK API coverage" 2021-11-23 17:38:08 +00:00
Jooyung Han
09925634f5 Remove libsync from apex_available allowlist am: 9876c5eaab am: 6f323db66b am: 57440917f1 am: 7fb5afdd2a
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1899132

Change-Id: I3b0ae777ef2584d2fe7b8f07bd94b5da3cca9536
2021-11-23 04:51:12 +00:00
Jooyung Han
9876c5eaab Remove libsync from apex_available allowlist
As libsync is NDK/LLNDK, it doesn't need to be aded to allowlist as
apex_available.

Bug: n/a
Test: m
Change-Id: I16cfb258a24bde4def428f1e6277f5d3c95c228c
2021-11-23 11:06:16 +09:00
sophiez
3691097ba9 NDK API coverage
Fixed typo in dist path for backed by.

Test: TARGET_BUILD_APPS=com.android.adbd m dist apps_only

Change-Id: Ic67c0bd5644dec11829f0dc2535016fec788a067
2021-11-22 11:49:49 -08:00
Colin Cross
cf96429713 Merge "Move apex module installation into Soong" am: ab6db81276 am: a0c4b45669 am: e5046710c6 am: 4431bebf1f
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1897972

Change-Id: Ib5501953f604920391965150fe0f67d1c6fa4502
2021-11-22 18:29:50 +00:00
Colin Cross
de6cbce98f Merge "Revert "Move apex module installation into Soong"" am: 500bba1b20 am: d4ce0c64f5 am: 85d3c93a85 am: 834649db81
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1897971

Change-Id: I9551b9160616b509f7a3b609f3bf7f9530f13d94
2021-11-20 02:45:58 +00:00
Colin Cross
377f028841 Merge "Move apex module installation into Soong" am: 50f6f869a2 am: a3675380c6 am: 0cc52a39ba am: 0118e502de
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1896051

Change-Id: I312ee4233409590097b4461ded2cc6846fb15d03
2021-11-20 02:44:38 +00:00
Colin Cross
6340ea50d4 Move apex module installation into Soong
Move apex module installation rules into Soong by overriding
InstallBypassMake.

Soong installs don't support post install commands, so move the
symlinks into separate rules and add dependencies on them.

This relands If65d283abc86f18ad266da0bf16fe95971a0bf9c with fixes
to install files into $OUT/apex and I606286e971b55d9d1fc4dcd0fbd476962de5fa79
with a fix for reversed logic.

Bug: 204136549
Test: m checkbuild
Change-Id: Ie65c53ebc7911efacdb8e11ba49059448f03c658
2021-11-19 13:37:36 -08:00
Colin Cross
555c52491d Revert "Move apex module installation into Soong"
This reverts commit 246e3eed67.

Reason for revert: broke aosp_bonito-userdebug build

Change-Id: Ib613f8f22532fe4588d3ec96aa001de869f8a633
2021-11-19 21:32:54 +00:00
Colin Cross
ea52a9204c Merge changes from topic "app_set" am: 25f15a18e5 am: cf0dd40fb3 am: 80547efe96 am: 6bf007ed59
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1893517

Change-Id: Idd87ffac9012edc088dbc48cbea33241a591d128
2021-11-19 03:31:26 +00:00
Colin Cross
246e3eed67 Move apex module installation into Soong
Move apex module installation rules into Soong by overriding
InstallBypassMake.

Soong installs don't support post install commands, so move the
symlinks into separate rules and add dependencies on them.

This relands If65d283abc86f18ad266da0bf16fe95971a0bf9c with fixes
to install files into $OUT/apex.

Bug: 204136549
Test: m checkbuild
Change-Id: I606286e971b55d9d1fc4dcd0fbd476962de5fa79
2021-11-18 13:13:44 -08:00
Colin Cross
ffbcd1d8a0 Extract primary apk from apk set zip
Extract and install the primary apk normally, and then unzip the rest
of them as a post install command.

Bug: 204136549
Test: app_set_test.go
Change-Id: I17437ff27f49df6bc91bdbbea6173b46c7d3ec4e
2021-11-17 19:55:33 -08:00
Daniel Norman
aabdbd31e1 Revert "Revert "Adds multi_install_skip_symbol_files field (defa..." am: 6cfb37af56 am: 33f4a18254 am: 79454a7405 am: a4aab6c90d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1894202

Change-Id: Ief8ef8b15dbb3d3c97b60c98bfddb2053bb803c2
2021-11-17 23:04:25 +00:00
Daniel Norman
6cfb37af56 Revert "Revert "Adds multi_install_skip_symbol_files field (defa..."
Revert submission 1893459-revert-1869814-vapex-multi-config-VKODFOVCWY

Reason for revert: Fix-forward in https://r.android.com/1894088
Reverted Changes:
I087bfe0dc:Revert "Adds a new prop context for choosing betwe...
I27a498506:Revert "Load persist props before starting apexd."...
Ib5344edc0:Revert "Allow users to choose between multi-instal...
If09bf590e:Revert "Adds multi_install_skip_symbol_files field...
I905dac14c:Revert "Demonstrate multi-installed APEXes."

Change-Id: I33210c8d3199338f9c898d719ed1797b629317af
2021-11-17 19:12:21 +00:00
Oriol Prieto Gasco
2c4a96375a Make 'Compressible' an overridable property
This is needed to allow the Android Go versions of modules
(com.google.android.go.*) to select a different compression toggle than
their non-Go (com.google.android.*) conterparts. go/go-updatability

Bug: 203024418
Test: Preloaded go variants on wembley, booted Android.
Change-Id: Ic96aff5fafb65fbd08e8a69d47c994532e27819e
2021-11-16 21:49:02 +00:00
Owen Kim
d96921eb6f Merge "Revert "Adds multi_install_skip_symbol_files field (default fals..."" am: a10ebe60ab am: dcf7a82e43 am: 4c51ab52a6 am: eda61e7ead
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1893457

Change-Id: Ia3c97cd817f7b3fc171d9602614d50cbe60d6f25
2021-11-16 09:50:55 +00:00
Owen Kim
a10ebe60ab Merge "Revert "Adds multi_install_skip_symbol_files field (default fals..."" 2021-11-16 08:39:27 +00:00
Owen Kim
065fbeb146 Revert "Adds multi_install_skip_symbol_files field (default fals..."
Revert submission 1869814-vapex-multi-config

Bug: 206551398
Reason for revert: DroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/tests/view?invocationId=I55600009996329947&testResultId=TR93527797572038984, bug b/206551398
Reverted Changes:
I0cd9d748d:Adds multi_install_skip_symbol_files field (defaul...
I5912a18e3:Demonstrate multi-installed APEXes.
I0e6881e3a:Load persist props before starting apexd.
I932442ade:Adds a new prop context for choosing between multi...
I754ecc3f7:Allow users to choose between multi-installed vend...

Change-Id: If09bf590e3ad93e14fbf89299f80d497c9604a78
2021-11-16 07:08:15 +00:00
Daniel Norman
ab5d708f3f Merge "Adds multi_install_skip_symbol_files field (default false) to apex." am: f012790f32 am: 6ddcbb7b26 am: 3e1d66958d am: 1417a11d82
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1874413

Change-Id: Ia60d798366671bca001ae70ba93f8163fdae5239
2021-11-16 01:44:45 +00:00
Daniel Norman
f012790f32 Merge "Adds multi_install_skip_symbol_files field (default false) to apex." 2021-11-16 00:45:32 +00:00
Ivan Lozano
b535eb0e8d Merge "Use new soong_cc_rust_prebuilt.mk" am: 3e1bc6cc0d am: 7e68fdef86 am: c7a2d4b4aa am: 61bd087651
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1890877

Change-Id: Ifde67fcb6c5aff56ddd635db3174ebb0a2cefcf0
2021-11-15 23:24:20 +00:00
Ivan Lozano
3e1bc6cc0d Merge "Use new soong_cc_rust_prebuilt.mk" 2021-11-15 22:19:46 +00:00
Sophie Zheng
8e0dadadba Merge "Java APIs used by Mainline modules." am: 7b5fa4277f am: 2a27e47fbd am: 587dbb8553 am: a31ea43aaa
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1887228

Change-Id: I1d3842b422b1de4faa5d0fd7b3b3035006f0d75d
2021-11-15 07:37:18 +00:00