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
This commit is contained in:
Paul Duffin
2022-03-16 13:06:42 +00:00
parent 726f9ab1bf
commit ffa89fd0a0
5 changed files with 398 additions and 32 deletions

View File

@@ -56,7 +56,11 @@ function main() {
# provided by the build to ensure consistency across build environments.
export DIST_DIR OUT_DIR
prebuilts/build-tools/linux-x86/bin/py3-cmd -u "${py3script}" "$@"
# The path to this tool is the .sh script that lives alongside the .py script.
TOOL_PATH="${py3script%.py}.sh"
prebuilts/build-tools/linux-x86/bin/py3-cmd -u "${py3script}" \
--tool-path "${TOOL_PATH}" \
"$@"
}
init "$@"