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

@@ -0,0 +1,49 @@
// DO NOT EDIT. Auto-generated by the following:
// path/to/mainline_modules_sdks.sh
//
// Copyright (C) 2020 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
java_sdk_library_import {
name: "framework-wifi",
owner: "google",
prefer: true,
shared_library: false,
apex_available: [
"com.android.wifi",
"test_com.android.wifi",
],
public: {
jars: ["sdk_library/public/framework-wifi-stubs.jar"],
stub_srcs: ["sdk_library/public/framework-wifi.srcjar"],
current_api: "sdk_library/public/framework-wifi.txt",
removed_api: "sdk_library/public/framework-wifi-removed.txt",
sdk_version: "module_current",
},
system: {
jars: ["sdk_library/system/framework-wifi-stubs.jar"],
stub_srcs: ["sdk_library/system/framework-wifi.srcjar"],
current_api: "sdk_library/system/framework-wifi.txt",
removed_api: "sdk_library/system/framework-wifi-removed.txt",
sdk_version: "module_current",
},
module_lib: {
jars: ["sdk_library/module-lib/framework-wifi-stubs.jar"],
stub_srcs: ["sdk_library/module-lib/framework-wifi.srcjar"],
current_api: "sdk_library/module-lib/framework-wifi.txt",
removed_api: "sdk_library/module-lib/framework-wifi-removed.txt",
sdk_version: "module_current",
},
}

View File

@@ -0,0 +1,49 @@
// DO NOT EDIT. Auto-generated by the following:
// path/to/mainline_modules_sdks.sh
//
// Copyright (C) 2020 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
java_sdk_library_import {
name: "android.net.ipsec.ike",
owner: "google",
prefer: true,
shared_library: true,
apex_available: [
"com.android.ipsec",
"test_com.android.ipsec",
],
public: {
jars: ["sdk_library/public/android.net.ipsec.ike-stubs.jar"],
stub_srcs: ["sdk_library/public/android.net.ipsec.ike.srcjar"],
current_api: "sdk_library/public/android.net.ipsec.ike.txt",
removed_api: "sdk_library/public/android.net.ipsec.ike-removed.txt",
sdk_version: "module_current",
},
system: {
jars: ["sdk_library/system/android.net.ipsec.ike-stubs.jar"],
stub_srcs: ["sdk_library/system/android.net.ipsec.ike.srcjar"],
current_api: "sdk_library/system/android.net.ipsec.ike.txt",
removed_api: "sdk_library/system/android.net.ipsec.ike-removed.txt",
sdk_version: "module_current",
},
module_lib: {
jars: ["sdk_library/module-lib/android.net.ipsec.ike-stubs.jar"],
stub_srcs: ["sdk_library/module-lib/android.net.ipsec.ike.srcjar"],
current_api: "sdk_library/module-lib/android.net.ipsec.ike.txt",
removed_api: "sdk_library/module-lib/android.net.ipsec.ike-removed.txt",
sdk_version: "module_current",
},
}