Revert "Improve error reporting when depending on prebuilt implementation jar"
This reverts commit c61783b20d70789d657dcb82050369480cc443c7.
Bug: 257969510
Reason for revert: b/255275437 - breaks checkbuild target
Change-Id: I01f88053cc24dbc1a4eb5c009f15473bdff3d565
diff --git a/android/sdk.go b/android/sdk.go
index fc0a84e..bd2f5d1 100644
--- a/android/sdk.go
+++ b/android/sdk.go
@@ -232,6 +232,12 @@
// relative path) and add the dest to the zip.
CopyToSnapshot(src Path, dest string)
+ // EmptyFile returns 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
+
// UnzipToSnapshot generates a rule that will unzip the supplied zip into the snapshot relative
// directory destDir.
UnzipToSnapshot(zipPath Path, destDir string)
@@ -258,14 +264,6 @@
// See sdk/update.go for more information.
AddPrebuiltModule(member SdkMember, moduleType string) BpModule
- // AddInternalModule creates a new module in the generated Android.bp file that can only be
- // referenced by one of the other modules in the snapshot.
- //
- // The created module's name is constructed by concatenating the name of this member and the
- // nameSuffix, separated by "-". It also has the visibility property set to "//visibility:private"
- // to prevent it from being inadvertently accessed from outside the snapshot.
- AddInternalModule(properties SdkMemberProperties, moduleType string, nameSuffix string) BpModule
-
// SdkMemberReferencePropertyTag returns a property tag to use when adding a property to a
// BpModule that contains references to other sdk members.
//
@@ -924,12 +922,6 @@
//
// Contains common properties that apply across many different member types.
type SdkMemberPropertiesBase struct {
- // The name of the member.
- //
- // Ignore this property during optimization. This is needed because this property is the same for
- // all variants of a member and so would be optimized away if it was not ignored.
- MemberName string `sdk:"ignore"`
-
// The number of unique os types supported by the member variants.
//
// If a member has a variant with more than one os type then it will need to differentiate
@@ -953,10 +945,6 @@
Compile_multilib string `android:"arch_variant"`
}
-func (b *SdkMemberPropertiesBase) Name() string {
- return b.MemberName
-}
-
// OsPrefix returns the os prefix to use for any file paths in the sdk.
//
// Is an empty string if the member only provides variants for a single os type, otherwise
@@ -982,8 +970,6 @@
// Base returns the base structure.
Base() *SdkMemberPropertiesBase
- Name() string
-
// PopulateFromVariant populates this structure with information from a module variant.
//
// It will typically be called once for each variant of a member module that the SDK depends upon.
diff --git a/java/invalid_implementation_jar.sh b/java/invalid_implementation_jar.sh
deleted file mode 100755
index 3820058..0000000
--- a/java/invalid_implementation_jar.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-
-# Copyright 2022 Google Inc. All rights reserved.
-#
-# 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.
-
-# Script to detect and report an attempt to access an invalid implementation
-# jar.
-
-MOD=$1
-
-cat <<EOF
-
- $MOD is a java_library that generates a jar file which must not be accessed
- from outside the mainline module that provides it. If you are seeing this
- message it means that you are incorrectly attempting to use the jar file
- from a java_import prebuilt of $MOD.
-
- This is most likely due to an incorrect dependency on $MOD in an Android.mk
- or Android.bp file. Please remove that dependency and replace with
- something more appropriate, e.g. a dependency on an API provided by the
- module.
-
- If you do not know where the extraneous dependency was added then you can
- run the following command to find a list of all the paths from the target
- which you are trying to build to the target which produced this error.
-
- prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-\${TARGET_PRODUCT}.ninja -t path <target> <invalid-jar>
-
- Where <target> is the build target you specified on the command line which
- produces this error and <invalid-jar> is the rule that failed with this
- message. If you are specifying multiple build targets then you will need to
- run the above command for every target until you find the cause.
-
- The command will output one (of the possibly many) dependency paths from
- <target> to <invalid-jar>, one file/phony target per line. e.g. it may
- output something like this:
-
- ....
- out/soong/.intermediates/acme/broken/android_common/combined/broken.jar
- out/soong/.intermediates/prebuilts/module_sdk/art/current/sdk/prebuilt_core-libart/android_common/combined/core-libart.jar
- out/soong/.intermediates/prebuilts/module_sdk/art/current/sdk/art-module-sdk_core-libart-error/gen/this-file-will-never-be-created.jar
-
- The last line is the failing target, the second to last line is a dependency
- from the core-libart java_import onto the failing target, the third to last
- line is the source of the dependency so you should look in acme/Android.bp
- file for the "broken" module.
-
-EOF
-
-exit 1
diff --git a/java/java.go b/java/java.go
index 3471abb..b6fc6b8 100644
--- a/java/java.go
+++ b/java/java.go
@@ -86,11 +86,11 @@
var (
// Supports adding java header libraries to module_exports and sdk.
javaHeaderLibsSdkMemberType = &librarySdkMemberType{
- SdkMemberTypeBase: android.SdkMemberTypeBase{
+ android.SdkMemberTypeBase{
PropertyName: "java_header_libs",
SupportsSdk: true,
},
- jarToExportGetter: func(_ android.SdkMemberContext, j *Library) android.Path {
+ func(_ android.SdkMemberContext, j *Library) android.Path {
headerJars := j.HeaderJars()
if len(headerJars) != 1 {
panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
@@ -98,8 +98,8 @@
return headerJars[0]
},
- snapshotPathGetter: sdkSnapshotFilePathForJar,
- onlyCopyJarToSnapshot: copyEverythingToSnapshot,
+ sdkSnapshotFilePathForJar,
+ copyEverythingToSnapshot,
}
// Export implementation classes jar as part of the sdk.
@@ -113,12 +113,12 @@
// Supports adding java implementation libraries to module_exports but not sdk.
javaLibsSdkMemberType = &librarySdkMemberType{
- SdkMemberTypeBase: android.SdkMemberTypeBase{
+ android.SdkMemberTypeBase{
PropertyName: "java_libs",
},
- jarToExportGetter: exportImplementationClassesJar,
- snapshotPathGetter: sdkSnapshotFilePathForJar,
- onlyCopyJarToSnapshot: copyEverythingToSnapshot,
+ exportImplementationClassesJar,
+ sdkSnapshotFilePathForJar,
+ copyEverythingToSnapshot,
}
snapshotRequiresImplementationJar = func(ctx android.SdkMemberContext) bool {
@@ -143,11 +143,11 @@
// necessary. The java_boot_libs property to allow those modules to be exported as part of the
// sdk/module_exports without exposing any unnecessary information.
javaBootLibsSdkMemberType = &librarySdkMemberType{
- SdkMemberTypeBase: android.SdkMemberTypeBase{
+ android.SdkMemberTypeBase{
PropertyName: "java_boot_libs",
SupportsSdk: true,
},
- jarToExportGetter: func(ctx android.SdkMemberContext, j *Library) android.Path {
+ func(ctx android.SdkMemberContext, j *Library) android.Path {
if snapshotRequiresImplementationJar(ctx) {
return exportImplementationClassesJar(ctx, j)
}
@@ -156,9 +156,9 @@
// 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 nil
+ return ctx.SnapshotBuilder().EmptyFile()
},
- snapshotPathGetter: func(ctx android.SdkMemberContext, osPrefix, name string) string {
+ func(ctx android.SdkMemberContext, osPrefix, name string) string {
if snapshotRequiresImplementationJar(ctx) {
return sdkSnapshotFilePathForJar(ctx, osPrefix, name)
}
@@ -168,7 +168,7 @@
// 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: onlyCopyJarToSnapshot,
+ onlyCopyJarToSnapshot,
}
// Supports adding java systemserver libraries to module_exports and sdk.
@@ -182,27 +182,27 @@
// necessary. The java_systemserver_libs property to allow those modules to be exported as part of
// the sdk/module_exports without exposing any unnecessary information.
javaSystemserverLibsSdkMemberType = &librarySdkMemberType{
- SdkMemberTypeBase: android.SdkMemberTypeBase{
+ android.SdkMemberTypeBase{
PropertyName: "java_systemserver_libs",
SupportsSdk: true,
// This was only added in Tiramisu.
SupportedBuildReleaseSpecification: "Tiramisu+",
},
- jarToExportGetter: func(ctx android.SdkMemberContext, j *Library) android.Path {
+ func(ctx android.SdkMemberContext, j *Library) android.Path {
// Java systemserver libs are only provided in the SDK to provide access to their dex
// implementation jar for use by dexpreopting. 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 nil
+ return ctx.SnapshotBuilder().EmptyFile()
},
- snapshotPathGetter: func(_ android.SdkMemberContext, osPrefix, name string) string {
+ func(_ android.SdkMemberContext, 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_systemserver_libs", "snapshot", "jars", "are", "invalid", name+jarFileSuffix)
},
- onlyCopyJarToSnapshot: onlyCopyJarToSnapshot,
+ onlyCopyJarToSnapshot,
}
// Supports adding java test libraries to module_exports but not sdk.
@@ -232,7 +232,7 @@
ImplementationAndResourcesJars android.Paths
// ImplementationJars is a list of jars that contain the implementations of classes in the
- // module.
+ //module.
ImplementationJars android.Paths
// ResourceJars is a list of jars that contain the resources included in the module.
@@ -718,8 +718,7 @@
android.SdkMemberTypeBase
// Function to retrieve the appropriate output jar (implementation or header) from
- // the library, if this returns nil then it is assumed that the snapshot must not provide access
- // to the jar.
+ // the library.
jarToExportGetter func(ctx android.SdkMemberContext, j *Library) android.Path
// Function to compute the snapshot relative path to which the named library's
@@ -756,11 +755,7 @@
type librarySdkMemberProperties struct {
android.SdkMemberPropertiesBase
- JarToExport android.Path `android:"arch_variant"`
-
- // The path to a script to use when the jar is invalid.
- InvalidJarScript android.Path
-
+ JarToExport android.Path `android:"arch_variant"`
AidlIncludeDirs android.Paths
// The list of permitted packages that need to be passed to the prebuilts as they are used to
@@ -771,15 +766,7 @@
func (p *librarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) {
j := variant.(*Library)
- memberType := ctx.MemberType().(*librarySdkMemberType)
- p.JarToExport = memberType.jarToExportGetter(ctx, j)
-
- // If no jar was provided for export then disallow access to it completely.
- if p.JarToExport == nil {
- // Copy the script to prevent access to the jar into the snapshot.
- p.InvalidJarScript = android.PathForSource(ctx.SdkModuleContext(),
- "build/soong/java/invalid_implementation_jar.sh")
- }
+ p.JarToExport = ctx.MemberType().(*librarySdkMemberType).jarToExportGetter(ctx, j)
p.AidlIncludeDirs = j.AidlIncludeDirs()
@@ -802,21 +789,6 @@
propertySet.AddProperty("jars", []string{snapshotRelativeJavaLibPath})
}
- if scriptSrc := p.InvalidJarScript; scriptSrc != nil {
- // Copy the script to prevent access to the jar into the snapshot.
- scriptDest := filepath.Join("scripts", scriptSrc.Base())
- builder.CopyToSnapshot(scriptSrc, scriptDest)
-
- // Generate a genrule module that will invoke the script passing in the module name.
- genrule := builder.AddInternalModule(p, "genrule", "error")
- genRuleName := genrule.Name()
- genrule.AddProperty("out", []string{"this-file-will-never-be-created.jar"})
- genrule.AddProperty("tool_files", []string{scriptDest})
- genrule.AddProperty("cmd", fmt.Sprintf("$(location %s) %s", scriptDest, p.Name()))
-
- propertySet.AddPropertyWithTag("jars", []string{":" + genRuleName}, builder.SdkMemberReferencePropertyTag(true))
- }
-
if len(p.PermittedPackages) > 0 {
propertySet.AddProperty("permitted_packages", p.PermittedPackages)
}
@@ -1678,7 +1650,7 @@
}
func (j *Import) commonBuildActions(ctx android.ModuleContext) {
- // TODO(b/231322772) these should come from Bazel once available
+ //TODO(b/231322772) these should come from Bazel once available
j.sdkVersion = j.SdkVersion(ctx)
j.minSdkVersion = j.MinSdkVersion(ctx)
@@ -2281,7 +2253,7 @@
resources.Append(android.BazelLabelForModuleSrc(ctx, m.properties.Java_resources))
}
- // TODO(b/179889880) handle case where glob includes files outside package
+ //TODO(b/179889880) handle case where glob includes files outside package
resDeps := ResourceDirsToFiles(
ctx,
m.properties.Java_resource_dirs,
@@ -2429,7 +2401,7 @@
}
epEnabled := m.properties.Errorprone.Enabled
- // TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable
+ //TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable
if Bool(epEnabled) {
javacopts = append(javacopts, m.properties.Errorprone.Javacflags...)
}
@@ -2665,7 +2637,7 @@
HeaderJars: android.PathsIfNonNil(i.combinedClasspathFile),
ImplementationAndResourcesJars: android.PathsIfNonNil(i.combinedClasspathFile),
ImplementationJars: android.PathsIfNonNil(i.combinedClasspathFile),
- // TODO(b/240308299) include AIDL information from Bazel
+ //TODO(b/240308299) include AIDL information from Bazel
})
i.maybeInstall(ctx, jarName, outputFile)
diff --git a/sdk/bootclasspath_fragment_sdk_test.go b/sdk/bootclasspath_fragment_sdk_test.go
index 58c1647..1b64130 100644
--- a/sdk/bootclasspath_fragment_sdk_test.go
+++ b/sdk/bootclasspath_fragment_sdk_test.go
@@ -169,15 +169,7 @@
prefer: false,
visibility: ["//visibility:public"],
apex_available: ["com.android.art"],
- jars: [":mysdk_core1-error"],
-}
-
-genrule {
- name: "mysdk_core1-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) core1",
+ jars: ["java_boot_libs/snapshot/jars/are/invalid/core1.jar"],
}
java_import {
@@ -185,15 +177,7 @@
prefer: false,
visibility: ["//visibility:public"],
apex_available: ["com.android.art"],
- jars: [":mysdk_core2-error"],
-}
-
-genrule {
- name: "mysdk_core2-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) core2",
+ jars: ["java_boot_libs/snapshot/jars/are/invalid/core2.jar"],
}
`),
checkAllCopyRules(`
@@ -203,7 +187,8 @@
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
-build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh
+.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/core1.jar
+.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/core2.jar
`),
snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
@@ -372,18 +357,10 @@
prefer: false,
visibility: ["//visibility:public"],
apex_available: ["myapex"],
- jars: [":mysdk_mybootlib-error"],
+ jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
permitted_packages: ["mybootlib"],
}
-genrule {
- name: "mysdk_mybootlib-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) mybootlib",
-}
-
java_sdk_library_import {
name: "myothersdklibrary",
prefer: false,
@@ -490,7 +467,7 @@
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
-build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh
+.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
@@ -510,7 +487,7 @@
.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
-build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh
+.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
@@ -899,18 +876,10 @@
prefer: false,
visibility: ["//visibility:public"],
apex_available: ["myapex"],
- jars: [":mysdk_mybootlib-error"],
+ jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
permitted_packages: ["mybootlib"],
}
-genrule {
- name: "mysdk_mybootlib-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) mybootlib",
-}
-
java_sdk_library_import {
name: "mynewlibrary",
prefer: false,
@@ -961,7 +930,7 @@
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv
.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv
-build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh
+.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
.intermediates/mynewlibrary.stubs/android_common/javac/mynewlibrary.stubs.jar -> sdk_library/public/mynewlibrary-stubs.jar
.intermediates/mynewlibrary.stubs.source/android_common/metalava/mynewlibrary.stubs.source_api.txt -> sdk_library/public/mynewlibrary.txt
.intermediates/mynewlibrary.stubs.source/android_common/metalava/mynewlibrary.stubs.source_removed.txt -> sdk_library/public/mynewlibrary-removed.txt
diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go
index c6cb6c2..51903ce3 100644
--- a/sdk/java_sdk_test.go
+++ b/sdk/java_sdk_test.go
@@ -19,13 +19,11 @@
"testing"
"android/soong/android"
- "android/soong/genrule"
"android/soong/java"
)
var prepareForSdkTestWithJava = android.GroupFixturePreparers(
java.PrepareForTestWithJavaBuildComponents,
- genrule.PrepareForTestWithGenRuleBuildComponents,
PrepareForTestWithSdkBuildComponents,
// Ensure that all source paths are provided. This helps ensure that the snapshot generation is
@@ -36,7 +34,6 @@
// Files needs by most of the tests.
android.MockFS{
"Test.java": nil,
- "build/soong/java/invalid_implementation_jar.sh": nil,
}.AddToFixture(),
)
@@ -291,26 +288,18 @@
prefer: false,
visibility: ["//visibility:public"],
apex_available: ["//apex_available:platform"],
- jars: [":mysdk_myjavalib-error"],
+ jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"],
permitted_packages: ["pkg.myjavalib"],
}
-
-genrule {
- name: "mysdk_myjavalib-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) myjavalib",
-}
`),
checkAllCopyRules(`
-build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh
+.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar
`),
)
}
func TestSnapshotWithJavaBootLibrary_UpdatableMedia(t *testing.T) {
- runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedGenRule, expectedCopyRule string) {
+ runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedCopyRule string) {
result := android.GroupFixturePreparers(
prepareForSdkTestWithJava,
android.FixtureMergeEnv(map[string]string{
@@ -345,27 +334,20 @@
jars: ["%s"],
permitted_packages: ["pkg.media"],
}
-%s`, expectedJarPath, expectedGenRule)),
+`, expectedJarPath)),
checkAllCopyRules(expectedCopyRule),
)
}
t.Run("updatable-media in S", func(t *testing.T) {
- runTest(t, "S", "java/updatable-media.jar", "", `
+ runTest(t, "S", "java/updatable-media.jar", `
.intermediates/updatable-media/android_common/package-check/updatable-media.jar -> java/updatable-media.jar
`)
})
t.Run("updatable-media in T", func(t *testing.T) {
- runTest(t, "Tiramisu", ":mysdk_updatable-media-error", `
-genrule {
- name: "mysdk_updatable-media-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) updatable-media",
-}`, `
-build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh
+ runTest(t, "Tiramisu", "java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar", `
+.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar
`)
})
}
@@ -407,20 +389,12 @@
prefer: false,
visibility: ["//visibility:public"],
apex_available: ["//apex_available:platform"],
- jars: [":myexports_myjavalib-error"],
+ jars: ["java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar"],
permitted_packages: ["pkg.myjavalib"],
}
-
-genrule {
- name: "myexports_myjavalib-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) myjavalib",
-}
`),
checkAllCopyRules(`
-build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh
+.intermediates/myexports/common_os/empty -> java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar
`),
)
}
diff --git a/sdk/systemserverclasspath_fragment_sdk_test.go b/sdk/systemserverclasspath_fragment_sdk_test.go
index 9540a6b..1ac405d 100644
--- a/sdk/systemserverclasspath_fragment_sdk_test.go
+++ b/sdk/systemserverclasspath_fragment_sdk_test.go
@@ -119,18 +119,10 @@
prefer: false,
visibility: ["//visibility:public"],
apex_available: ["myapex"],
- jars: [":mysdk_mylib-error"],
+ jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"],
permitted_packages: ["mylib"],
}
-genrule {
- name: "mysdk_mylib-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) mylib",
-}
-
prebuilt_systemserverclasspath_fragment {
name: "mysystemserverclasspathfragment",
prefer: false,
@@ -188,18 +180,10 @@
prefer: false,
visibility: ["//visibility:public"],
apex_available: ["myapex"],
- jars: [":mysdk_mylib-error"],
+ jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"],
permitted_packages: ["mylib"],
}
-genrule {
- name: "mysdk_mylib-error",
- visibility: ["//visibility:private"],
- out: ["this-file-will-never-be-created.jar"],
- tool_files: ["scripts/invalid_implementation_jar.sh"],
- cmd: "$(location scripts/invalid_implementation_jar.sh) mylib",
-}
-
prebuilt_systemserverclasspath_fragment {
name: "mysystemserverclasspathfragment",
prefer: false,
diff --git a/sdk/update.go b/sdk/update.go
index 6ebbf09..92a13fa 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -1049,6 +1049,9 @@
filesToZip android.Paths
zipsToMerge android.Paths
+ // The path to an empty file.
+ emptyFile android.WritablePath
+
prebuiltModules map[string]*bpModule
prebuiltOrder []*bpModule
@@ -1108,6 +1111,19 @@
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 {
@@ -1184,24 +1200,6 @@
return m
}
-func (s *snapshotBuilder) AddInternalModule(properties android.SdkMemberProperties, moduleType string, nameSuffix string) android.BpModule {
- name := properties.Name() + "-" + nameSuffix
-
- if s.prebuiltModules[name] != nil {
- panic(fmt.Sprintf("Duplicate module detected, module %s has already been added", name))
- }
-
- m := s.bpFile.newModule(moduleType)
- m.AddProperty("name", name)
- m.AddProperty("visibility", []string{"//visibility:private"})
-
- s.prebuiltModules[name] = m
- s.prebuiltOrder = append(s.prebuiltOrder, m)
-
- s.allMembersByName[name] = struct{}{}
- return m
-}
-
func addHostDeviceSupportedProperties(deviceSupported bool, hostSupported bool, bpModule *bpModule) {
// If neither device or host is supported then this module does not support either so will not
// recognize the properties.
@@ -1232,23 +1230,18 @@
// Get a name for sdk snapshot member. If the member is private then generate a snapshot specific
// name. As part of the processing this checks to make sure that any required members are part of
// the snapshot.
-func (s *snapshotBuilder) snapshotSdkMemberName(reference string, required bool) string {
- prefix := ""
- name := strings.TrimPrefix(reference, ":")
- if name != reference {
- prefix = ":"
- }
+func (s *snapshotBuilder) snapshotSdkMemberName(name string, required bool) string {
if _, ok := s.allMembersByName[name]; !ok {
if required {
s.ctx.ModuleErrorf("Required member reference %s is not a member of the sdk", name)
}
- return reference
+ return name
}
if s.isInternalMember(name) {
- return prefix + s.ctx.ModuleName() + "_" + name
+ return s.ctx.ModuleName() + "_" + name
} else {
- return reference
+ return name
}
}
@@ -2064,7 +2057,6 @@
variantPropertiesFactory := func() android.SdkMemberProperties {
properties := memberType.CreateVariantPropertiesStruct()
base := properties.Base()
- base.MemberName = member.Name()
base.Os_count = osCount
return properties
}