From 5c2114591503d6b320f4a613619fb2e42c17d069 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Thu, 15 Jul 2021 12:42:44 +0100 Subject: [PATCH] Revert "Export implementation class jars for java_boot_libs" This reverts commit 22ff0aaf51bdd9409eafe74151decb58f47308bc. The workaround to support hidden API generation with prebuilts by passing the full implementation jars through to the SDK snapshot is no longer needed as the monolithic hidden API flag generation uses the prebuilt flag files that are already part of the snapshot. This change reverts that previous workaround. Bug: 192868581 Test: - Update the prebuilts DIST_DIR=$PWD/dist TARGET_BUILD_VARIANT=userdebug art/build/build-art-module.sh --skip-apex packages/modules/ArtPrebuilt/update-art-module-prebuilts.py --local-dist=dist --skip-cls --skip-apex - Build hidden API flags to make sure it does not fail Change-Id: Idb3fde6f7dcb171677316d8794a4af91ede1f7e0 --- android/sdk.go | 6 ++++++ java/java.go | 18 +++++++++++++----- sdk/bootclasspath_fragment_sdk_test.go | 16 ++++++++-------- sdk/java_sdk_test.go | 7 ++++--- sdk/update.go | 16 ++++++++++++++++ 5 files changed, 47 insertions(+), 16 deletions(-) diff --git a/android/sdk.go b/android/sdk.go index e70003144..da740f3cd 100644 --- a/android/sdk.go +++ b/android/sdk.go @@ -239,6 +239,12 @@ type SnapshotBuilder interface { // to the zip CopyToSnapshot(src Path, dest string) + // Return the path to an empty file. + // + // This can be used by sdk member types that need to create an empty file in the snapshot, simply + // pass the value returned from this to the CopyToSnapshot() method. + EmptyFile() Path + // Unzip the supplied zip into the snapshot relative directory destDir. UnzipToSnapshot(zipPath Path, destDir string) diff --git a/java/java.go b/java/java.go index bd059b563..e20ef9e06 100644 --- a/java/java.go +++ b/java/java.go @@ -130,11 +130,19 @@ var ( PropertyName: "java_boot_libs", SupportsSdk: true, }, - // Temporarily export implementation classes jar for java_boot_libs as it is required for the - // hiddenapi processing. - // TODO(b/179354495): Revert once hiddenapi processing has been modularized. - exportImplementationClassesJar, - sdkSnapshotFilePathForJar, + func(ctx android.SdkMemberContext, j *Library) android.Path { + // Java boot libs are only provided in the SDK to provide access to their dex implementation + // jar for use by dexpreopting and boot jars package check. They do not need to provide an + // actual implementation jar but the java_import will need a file that exists so just copy an + // empty file. Any attempt to use that file as a jar will cause a build error. + return ctx.SnapshotBuilder().EmptyFile() + }, + func(osPrefix, name string) string { + // Create a special name for the implementation jar to try and provide some useful information + // to a developer that attempts to compile against this. + // TODO(b/175714559): Provide a proper error message in Soong not ninja. + return filepath.Join(osPrefix, "java_boot_libs", "snapshot", "jars", "are", "invalid", name+jarFileSuffix) + }, onlyCopyJarToSnapshot, } diff --git a/sdk/bootclasspath_fragment_sdk_test.go b/sdk/bootclasspath_fragment_sdk_test.go index 724f9a80b..efd2b5bd9 100644 --- a/sdk/bootclasspath_fragment_sdk_test.go +++ b/sdk/bootclasspath_fragment_sdk_test.go @@ -147,7 +147,7 @@ java_import { prefer: false, visibility: ["//visibility:public"], apex_available: ["com.android.art"], - jars: ["java/mybootlib.jar"], + jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"], } `), checkVersionedAndroidBpContents(` @@ -174,7 +174,7 @@ java_import { sdk_member_name: "mybootlib", visibility: ["//visibility:public"], apex_available: ["com.android.art"], - jars: ["java/mybootlib.jar"], + jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"], } sdk_snapshot { @@ -190,7 +190,7 @@ sdk_snapshot { .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv -.intermediates/mybootlib/android_common/javac/mybootlib.jar -> java/mybootlib.jar +.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar `), snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot), @@ -345,7 +345,7 @@ java_import { prefer: false, visibility: ["//visibility:public"], apex_available: ["myapex"], - jars: ["java/mybootlib.jar"], + jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"], permitted_packages: ["mybootlib"], } @@ -429,7 +429,7 @@ java_import { sdk_member_name: "mybootlib", visibility: ["//visibility:public"], apex_available: ["myapex"], - jars: ["java/mybootlib.jar"], + jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"], permitted_packages: ["mybootlib"], } @@ -499,7 +499,7 @@ sdk_snapshot { .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv -.intermediates/mybootlib/android_common/javac/mybootlib.jar -> java/mybootlib.jar +.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar .intermediates/myothersdklibrary.stubs/android_common/javac/myothersdklibrary.stubs.jar -> sdk_library/public/myothersdklibrary-stubs.jar .intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt .intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt @@ -851,7 +851,7 @@ java_import { prefer: false, visibility: ["//visibility:public"], apex_available: ["myapex"], - jars: ["java/mybootlib.jar"], + jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"], permitted_packages: ["mybootlib"], } @@ -886,7 +886,7 @@ my-unsupported-packages.txt -> hiddenapi/my-unsupported-packages.txt .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv .intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv -.intermediates/mybootlib/android_common/javac/mybootlib.jar -> java/mybootlib.jar +.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar .intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar .intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt .intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go index 813dcfd6d..9efb3a49a 100644 --- a/sdk/java_sdk_test.go +++ b/sdk/java_sdk_test.go @@ -453,7 +453,7 @@ java_import { prefer: false, visibility: ["//visibility:public"], apex_available: ["//apex_available:platform"], - jars: ["java/myjavalib.jar"], + jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"], permitted_packages: ["pkg.myjavalib"], } `), @@ -465,7 +465,7 @@ java_import { sdk_member_name: "myjavalib", visibility: ["//visibility:public"], apex_available: ["//apex_available:platform"], - jars: ["java/myjavalib.jar"], + jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"], permitted_packages: ["pkg.myjavalib"], } @@ -474,9 +474,10 @@ module_exports_snapshot { visibility: ["//visibility:public"], java_boot_libs: ["myexports_myjavalib@current"], } + `), checkAllCopyRules(` -.intermediates/myjavalib/android_common/withres/myjavalib.jar -> java/myjavalib.jar +.intermediates/myexports/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar `), ) } diff --git a/sdk/update.go b/sdk/update.go index 6da3756be..3ec1bfaf4 100644 --- a/sdk/update.go +++ b/sdk/update.go @@ -1029,6 +1029,9 @@ type snapshotBuilder struct { filesToZip android.Paths zipsToMerge android.Paths + // The path to an empty file. + emptyFile android.WritablePath + prebuiltModules map[string]*bpModule prebuiltOrder []*bpModule @@ -1079,6 +1082,19 @@ func (s *snapshotBuilder) UnzipToSnapshot(zipPath android.Path, destDir string) s.zipsToMerge = append(s.zipsToMerge, tmpZipPath) } +func (s *snapshotBuilder) EmptyFile() android.Path { + if s.emptyFile == nil { + ctx := s.ctx + s.emptyFile = android.PathForModuleOut(ctx, "empty") + s.ctx.Build(pctx, android.BuildParams{ + Rule: android.Touch, + Output: s.emptyFile, + }) + } + + return s.emptyFile +} + func (s *snapshotBuilder) AddPrebuiltModule(member android.SdkMember, moduleType string) android.BpModule { name := member.Name() if s.prebuiltModules[name] != nil {