Commit Graph

36 Commits

Author SHA1 Message Date
Paul Duffin
7a561d6ed1 mainline_modules_sdks.py: Reformat am: 2ef33a4d65
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2047365

Change-Id: I0fa0e0d947aee5959058539e0f2d907eaed4f522
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-03-30 17:46:46 +00:00
Paul Duffin
2ef33a4d65 mainline_modules_sdks.py: Reformat
Test: atest --host mainline_modules_sdks_test
      pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py
      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py
Change-Id: I7f7b5f6e41c6a8cec02ec547a9b61c7922700880
2022-03-30 09:44:02 +00:00
Martin Stjernholm
b3f8ed74cb Merge changes I8bc68d10,Ie6182fa4 am: 8fa5ddae14
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2046463

Change-Id: Ia46c9466fdd242f69bec23b39006e09d82eeaa3e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-03-29 09:59:26 +00:00
Martin Stjernholm
576e65c512 Add support for building SDKs for bundled modules and platform SDKs for
Mainline.

These are used in the ART thin manifest. They are added here to allow
using the common module build scripts for them as well.

The Python script is extended to work for these modules, and their SDKs
end up in DIST_DIR/bundled-mainline-sdks, so DIST_DIR/mainline-sdks
only carries the SDKs for unbundled modules that are to be distributed
to partners etc.

This change has the effect to (re)enable building these SDKs in CI.

Test: env TARGET_BUILD_APPS="com.android.i18n com.android.runtime com.android.tzdata" \
        packages/modules/common/build/mainline_modules_sdks.sh \
        --build-platform-sdks-for-mainline --build-release=latest
  Replace SDK snapshots under prebuilts/runtime/mainline with
  those produced in out/dist/bundled-mainline-sdks
  in a master-art tree, with https://r.android.com/2046463 applied,
  then `banchan com.android.art && m`
Test: env -u TARGET_BUILD_APPS \
        packages/modules/common/build/mainline_modules_sdks.sh \
        --build-release=latest
  Check that all SDKs are built, and that the bundled SDKs get copied
  to out/dist/bundled-mainline-sdks so the contents of
  out/dist/mainline-sdks and out/dist/stubs remain unchanged.
Test: env -u TARGET_BUILD_APPS \
        packages/modules/common/build/mainline_modules_sdks.sh \
        --build-release=S
  Check that out/dist/bundled-mainline-sdks isn't producted.
Test: env -u TARGET_BUILD_APPS \
        vendor/google/build/mainline_modules_sdks.sh
  Check that all SDKs are built, and that the bundled SDKs get copied
  to out/dist/bundled-mainline-sdks so the contents of
  out/dist/mainline-sdks and out/dist/stubs remain unchanged.
Test: atest --host mainline_modules_sdks_test
Bug: 216762037
Change-Id: Ie6182fa42dc9c2c7f35ed95a040c05be0f0e878a
2022-03-28 12:30:46 +01:00
Paul Duffin
a1f299e3ab Generate sdk snapshots for the R build am: ffa89fd0a0
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2032133

Change-Id: Ib62d90c195a606d33457d68ec44a304324e542f9
2022-03-24 15:57:24 +00:00
Paul Duffin
ffa89fd0a0 Generate sdk snapshots for the R build
This change replicates the behavior of the generate_ml_bundle.sh that
creates an Android.bp file along with the necessary file structure for
an R build.

It adds the information needed to a ForRBuild object which is set on
those MainlineModules that need to provide SDKs for R. That includes
a list of SdkLibrary objects each of which has a name and a flag that
indicates whether it is a shared library.

The R BuildRelease creator function builds the sdk snapshots as normal
and then extracts information from those snapshot files to construct
snapshots suitable for an R build. It then passes the directory
containing those new snapshot files to populate_dist() which will then
copy them into the correct location in the dist directory.

For each MainlineModule that provides an SDK for R the following is
created in the out/soong/mainline-sdks/for-R-build directory:
* A sub-directory using the apex name containing:
 * An Android.bp file with definitions for each SdkLibrary.
 * A file structure containing API txt file, removed API txt file,
   a srcjar containing the stub sources and a stubs jar.
* A zip file containing the contents of the previous directory whose
  name is <sdk-name>-current.zip, to match the files that are
  generated by Soong when building sdk snapshots.

As R does not support the Soong config boilerplate code that
transformation is disabled for R.

Test: atest --host mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py
      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py
Change-Id: I70001782496a3e9805bf56181c0e08419e31e191
2022-03-23 15:45:15 +00:00
Paul Duffin
6e6569d1ab Merge "Decouple population of the dist dir from the SnapshotBuilder" am: 726f9ab1bf
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2032132

Change-Id: Iebaf30eb3d8b4b8435d6ed201229ed3a44a4e058
2022-03-23 09:50:25 +00:00
Paul Duffin
f319429eae Merge "Move populate_stubs into LEGACY BuildRelease" am: 2a5e1b5e4e
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2032131

Change-Id: I3ca94c8308138e7a3a467e671fc86db137237a28
2022-03-23 09:50:13 +00:00
Paul Duffin
fbcf0717cc Extract unzip_current_stubs from SdkDistProducer am: dc0c4c5d3f
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2032130

Change-Id: I7455692f354b4feb729c5c5934cef1a1a61310ff
2022-03-21 14:24:27 +00:00
Paul Duffin
aee5bf605a Add --build-release option to mainline_modules_sdks.sh am: 14c6bd8c38
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2032129

Change-Id: I754e7e884cf926e8657d9c8b176628bb780da9d9
2022-03-21 14:24:18 +00:00
Paul Duffin
48e7f7d7d0 Decouple population of the dist dir from the SnapshotBuilder
Previously, the code for populating the dist directory, e.g.
populate_dist and create_legacy_dist_structures assumed that the sdk
snapshot files they needed could be found in the directory referenced
by SnapshotBuilder.mainline_sdks_dir. This change removes that
assumption and instead passes the snapshot_dirs directory into the
populate_dist method and uses it in the create_legacy_dist_structures
function.

This refactoring is needed to allow a follow up change to construct a
set of sdk snapshot files in a different directory while still using
the populate_dist method to copy them into the correct location in the
dist directory.

Bug: 218685706
Test: atest --host mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py
      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py
Change-Id: I9fb659df28d7688b3f081bf84f5fae8ee85dc534
2022-03-21 12:53:16 +00:00
Paul Duffin
04b51993d5 Move populate_stubs into LEGACY BuildRelease
Previously, the populate_stubs was handled specially in produce_dist.
However, it is LEGACY behavior and so it makes sense to move the
code into the LEGACY BuildRelease's creator function.

While testing, the script failed because the LEGACY BuildRelease does
not build the snapshots, it assumes that the LEGACY is always run after
LATEST. This change makes the LEGACY build the snapshots. In normal use
it will not cause any increase in build time as it will always run
after LATEST and build the snapshots with the same environment turning
the build command into a no-op.

Bug: 218685706
Test: rm -fr out/soong/mainline-sdks
      packages/modules/common/build/mainline_modules_sdks.sh --build-release=LEGACY
      # Before this change it fails due to missing files, after it works.
      pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py
      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py
Change-Id: Iaa2f9f71dd5085965d3ad32110b324453df87ee6
2022-03-21 12:53:16 +00:00
Paul Duffin
dc0c4c5d3f Extract unzip_current_stubs from SdkDistProducer
A minor refactoring that generalizes the method, making it usable for
other cases and decouples it from SdkDistProducer and SnapshotBuilder.

Bug: 218685706
Test: atest --host mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py
      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py
Change-Id: I885b7d0e792691f7028cdfb91e72896be48333a1
2022-03-21 12:53:16 +00:00
Paul Duffin
14c6bd8c38 Add --build-release option to mainline_modules_sdks.sh
This change makes it easier to test the behavior of specific build
releases.

Bug: 218685706
Test: atest --host mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      packages/modules/common/build/mainline_modules_sdks.sh --build-release=S --build-release=latest
      pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py
      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py
Change-Id: Ib9ef2f35d27d10cd960c4b6225417d930cb10afc
2022-03-21 12:53:14 +00:00
Paul Duffin
54573b92c4 Improve testing of mainline_modules_sdks.py am: de60aeb525
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2032128

Change-Id: Id3c26e1876d532a398eec54013349c1834eea99f
2022-03-21 12:00:34 +00:00
Paul Duffin
1a02635227 Cleanup pylint errors in mainline_modules_sdks*.py am: 4f192a156b
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2032127

Change-Id: Iad68e03c056473f19ea146de2417c0abc7848623
2022-03-21 12:00:31 +00:00
Paul Duffin
de60aeb525 Improve testing of mainline_modules_sdks.py
Adds a test for a com.google name module and makes the structure of the
test snapshot created by FakeSnapshotBuilder.create_snapshot_file()
match the names used in an actual sdk snapshot.

Bug: 218685706
Test: atest --host mainline_modules_sdks_test
      pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py
      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py
Change-Id: Ia11cbb2da717218ba0b2da9a2238856dc8cebf8f
2022-03-18 15:59:33 +00:00
Paul Duffin
4f192a156b Cleanup pylint errors in mainline_modules_sdks*.py
Bug: 218685706
Test: atest --host mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py
      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py
Change-Id: I5ba3da7dcde6d44b1855b41bac8eb80e0f3a593c
2022-03-18 15:58:57 +00:00
Cole Faust
fb6f9fe611 Merge "Don't explicitly mention SOONG_CONFIG_ variables" am: 9f8ee5f71f
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2002776

Change-Id: Ied2313893373aa3810c28e578813964c2c79b625
2022-03-02 19:20:06 +00:00
Cole Faust
2f9bf4a102 Don't explicitly mention SOONG_CONFIG_ variables
The soong config variables should be controlled via
$(call soong_config_set/get) instead of using the
underlaying variable. Update the comments in the
auto generated makefiles to reflect that.

Bug: 220940864
Test: m mainline_modules_sdks_test && /ssd/aosp-master/out/host/linux-x86/nativetest64/mainline_modules_sdks_test/mainline_modules_sdks_test
Change-Id: I8907d89ceb12e0a1e9ce53220a784e4a69502687
2022-02-28 16:51:32 -08:00
Paul Duffin
8aae79f5c7 Add Tiramisu build release am: 654d81ef49
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/1990896

Change-Id: I8bee2fd4f162120b28620466aa70572ca1aca36b
2022-02-18 16:05:39 +00:00
Paul Duffin
654d81ef49 Add Tiramisu build release
Bug: 204763318
Test: atest mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      tree out/dist/mainline-sdks out/dist/stubs
      - check that it adds the for-Tiramisu-build directory but is
        otherwise identical to what was produced before this change.
      - check that the for-Tiramisu-build directory contains zip
        files that include the new in T annotations property.
Change-Id: I4bd8c1350101d84644a7a63f2632634b8c9a488b
2022-02-18 14:28:36 +00:00
Paul Duffin
6df607c0d0 Merge "Support building build target specific snapshots" am: 27aef8152b
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/1958805

Change-Id: Ic6d998f91943e25964b3e2868dfc304a2f80089b
2022-02-10 14:40:23 +00:00
Paul Duffin
01ea57c593 Support building build target specific snapshots
This changes adds support for building target build release specific
snapshots.

It adds a BuildRelease class that defines the characteristics of the
build release, e.g. name, how to create it, etc. It also adds a
first_release field to MainlineModule which specifies the first
BuildRelease for which a snapshot of the module is required and
initializes that field for each module.

After these changes this script will generate:
1. A legacy set of snapshots that match the file structure that was
   generated without this change. This is intended to allow existing
   consumers of the generated artifacts to continue to work while they
   are modified to make use of target build release specific snapshots.

2. The set of snapshots for the latest build release, i.e. the build
   release containing the source from which the snapshots are produced.
   This includes snapshots for all the modules.

3. For each build release from S onwards a set of snapshots for the
   modules it supports.

It does not currently generate snapshots for Q and R releases as Soong
cannot generate a compatible snapshot for them. If it is necessary to
generate snapshots for those target build releases (similar to what the
packages/modules/common/generate_ml_bundle.sh would produce) then a
follow up change will add that capability to this script.

Bug: 204763318
Test: atest mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      tree out/dist/mainline-sdks out/dist/stubs
      - check that it adds the for-latest-build directory but is
        otherwise identical to what was produced before this change.
Change-Id: I48eb0b69cbe8664106b826ee0898557c98e039c2
2022-02-07 14:12:17 +00:00
Paul Duffin
19e34a43a1 Move MAINLINE_MODULE_BY_APEX into the test file am: 300ec921e5
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/1957400

Change-Id: I67d0b71ba28450ea254080e293d5a5994d7f9fbe
2022-01-24 14:06:33 +00:00
Paul Duffin
13e3e100e1 Split populate_stubs out of populate_dist am: 661845d4ec
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/1957399

Change-Id: If7b7efe09606f7fa2f9219d360baa74fcada825e
2022-01-24 14:06:32 +00:00
Paul Duffin
86ef162110 Extract logic for building the snapshots to improve testability am: f5245ce53d
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/1954695

Change-Id: Ia8be7376929a0cc29074b31562c7e888fce371d5
2022-01-24 14:06:31 +00:00
Paul Duffin
d2b40e7550 Extract subprocess run calls into SubprocessRunner am: b349358ae2
Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/1954694

Change-Id: I5f65d36f33595f90f24f565a7c2dc9eceb602ac2
2022-01-24 14:06:31 +00:00
Paul Duffin
300ec921e5 Move MAINLINE_MODULE_BY_APEX into the test file
The variable is only used by the tests.

Test: atest mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      tree out/dist/mainline-sdks out/dist/stubs
      - check that it is identical to before this change
Bug: 204763318
Change-Id: I38c4ce218825d79de831868af814c43ce8a6d60f
2022-01-21 19:36:46 +00:00
Paul Duffin
661845d4ec Split populate_stubs out of populate_dist
Separates the logic from populate_dist which handles the legacy stubs
directory into its own populate_stubs directory. That is in preparation
for calling populate_dist multiple times to create sdk snapshots for
different build releases.

Test: atest mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      tree out/dist/mainline-sdks out/dist/stubs
      - check that it is identical to before this change
Bug: 204763318
Change-Id: Idada531b7f88dee3fea861a059a0773bc983853d
2022-01-21 19:36:46 +00:00
Paul Duffin
f5245ce53d Extract logic for building the snapshots to improve testability
Previously, the produce_dist() method of SdkDistProducer was not
testable because it attempted to invoke Soong to build the sdk
snapshots. So, the TestPopulateDist tested the populate_dist() method
instead. That was a problem because it meant that future changes to
the produce_dist() method could not be tested, at least not without
duplicating its functionality.

This change extracts the logic for building the snapshots (i.e. the
code that invokes soong to build the snapshot files) from the
SdkDistProducer into a separate SnapshotBuilder class. That allows
the test to substitute a FakeSnapshotBuilder that generates some fake
sdk snapshot zip files and call produce_dist() instead of calling
populate_dist() and populate_stubs().

It also renames the test to TestProduceDist to reflect that change.

This is part of a larger refactoring to improve the testability of the
mainline_modules_sdks.py file in preparation for adding support for
building build release specific snapshots.

Test: atest mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      tree out/dist/mainline-sdks out/dist/stubs
      - check that it is identical to before this change
Bug: 204763318
Change-Id: Icf2e4b0200cc53863e45cf68208fbc8ec13c6f2c
2022-01-21 19:36:46 +00:00
Paul Duffin
b349358ae2 Extract subprocess run calls into SubprocessRunner
The SdkDistProducer has special stdout/stderr objects to pass to the
subprocess.run. This change extracts the handling of stdout/stderr into
the SubprocessRunner class to allow it to be more easily reused.

This is part of a larger refactoring to improve the testability of the
mainline_modules_sdks.py file in preparation for adding support for
building build release specific snapshots.

Test: atest mainline_modules_sdks_test
      packages/modules/common/build/mainline_modules_sdks.sh
      tree out/dist/mainline-sdks out/dist/stubs
      - check that it is identical to before this change
Change-Id: If40199551934b0620953a2e4e3cefcb61282f051
2022-01-21 19:36:46 +00:00
Paul Duffin
092b9fdcfc Add internal only modules to standard module list
Adds the com.android.uwb and com.android.scheduling modules to the
standard list of modules. This ensures that when they are released to
AOSP that the packages/modules/common/build/mainline_modules_sdks.sh
build script will build them correctly.

Ignore-AOSP-First: internal only changes.

Bug: 204763318
Test: vendor/google/build/mainline_modules_sdks.sh
      atest mainline_modules_sdks_test
Merged-In: Idd83a71c477422ddf35d32f0f72293ac6f8626cd
Change-Id: Idd83a71c477422ddf35d32f0f72293ac6f8626cd
(cherry picked from commit adb67d1944)
2022-01-19 12:41:41 +00:00
satayev
5511d9becd Simplify main function for mainline_modules_sdks.py
Bug: 205100626
Test: presubmit
Change-Id: I2fdd371aad6a9c37703a190754604da2d86975b2
Merged-In: I2fdd371aad6a9c37703a190754604da2d86975b2
(cherry picked from commit a584ab5dc0)
2021-11-26 12:36:52 +00:00
satayev
a584ab5dc0 Simplify main function for mainline_modules_sdks.py
Bug: 205100626
Test: presubmit
Ignore-AOSP-First: internal topic. will cp later
Change-Id: I2fdd371aad6a9c37703a190754604da2d86975b2
2021-11-24 18:58:21 +00:00
satayev
51133ffa60 Add mainline_modules_sdks to packages/modules/common/.
Change the list of modules to match AOSP list.

Bug: 205100626
Test: atest mainline_modules_sdks_test
Change-Id: I250c4aafcda5c3c1d636dac27ff5ffaa78b69b2a
2021-11-04 14:48:39 +00:00