Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44841aad authored by Colin Cross's avatar Colin Cross
Browse files

Revert "Support transitive dependencies through android_libary_i..."

Revert submission 3008874

Reason for revert: b/330903911
Reverted changes: /q/submissionid:3008874

Change-Id: Ie056a7f90803ab2d8e39e07eddf6c9c68e41ff3d
parent c6c9c735
Loading
Loading
Loading
Loading
+28 −62
Original line number Diff line number Diff line
@@ -386,6 +386,11 @@ func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptio
	// Add additional manifest files to transitive manifests.
	additionalManifests := android.PathsForModuleSrc(ctx, a.aaptProperties.Additional_manifests)
	transitiveManifestPaths := append(android.Paths{manifestPath}, additionalManifests...)
	// TODO(b/288358614): Soong has historically not merged manifests from dependencies of android_library_import
	// modules.  Merging manifests from dependencies could remove the need for pom2bp to generate the "-nodeps" copies
	// of androidx libraries, but doing so triggers errors due to errors introduced by existing dependencies of
	// android_library_import modules.  If this is fixed, staticManifestsDepSet can be dropped completely in favor of
	// staticResourcesNodesDepSet.manifests()
	transitiveManifestPaths = append(transitiveManifestPaths, staticManifestsDepSet.ToList()...)

	if len(transitiveManifestPaths) > 1 && !Bool(a.aaptProperties.Dont_merge_manifests) {
@@ -752,8 +757,7 @@ func aaptLibs(ctx android.ModuleContext, sdkContext android.SdkContext, classLoa
	// reverse later.
	// NOTE: this is legacy and probably incorrect behavior, for most other cases (e.g. conflicting classes in
	// dependencies) the highest priority dependency is listed first, but for resources the highest priority
	// dependency has to be listed last.  This is also inconsistent with the way manifests from the same
	// transitive dependencies are merged.
	// dependency has to be listed last.
	staticResourcesNodes = android.NewDepSet(android.TOPOLOGICAL, nil,
		android.ReverseSliceInPlace(staticResourcesNodeDepSets))
	sharedResourcesNodes = android.NewDepSet(android.TOPOLOGICAL, nil,
@@ -968,8 +972,7 @@ type AARImport struct {

	properties AARImportProperties

	headerJarFile                      android.WritablePath
	implementationJarFile              android.WritablePath
	classpathFile                      android.WritablePath
	proguardFlags                      android.WritablePath
	exportPackage                      android.WritablePath
	transitiveAaptResourcePackagesFile android.Path
@@ -990,9 +993,6 @@ type AARImport struct {
	sdkVersion    android.SdkSpec
	minSdkVersion android.ApiLevel

	usesLibrary
	classLoaderContexts dexpreopt.ClassLoaderContextMap

	// Single aconfig "cache file" merged from this module and all dependencies.
	mergedAconfigFiles map[string]android.Paths
}
@@ -1005,7 +1005,7 @@ func (a *AARImport) OutputFiles(tag string) (android.Paths, error) {
	case ".aar":
		return []android.Path{a.aarPath}, nil
	case "":
		return []android.Path{a.implementationJarFile}, nil
		return []android.Path{a.classpathFile}, nil
	default:
		return nil, fmt.Errorf("unsupported module reference tag %q", tag)
	}
@@ -1088,8 +1088,6 @@ func (a *AARImport) DepsMutator(ctx android.BottomUpMutatorContext) {

	ctx.AddVariationDependencies(nil, libTag, a.properties.Libs...)
	ctx.AddVariationDependencies(nil, staticLibTag, a.properties.Static_libs...)

	a.usesLibrary.deps(ctx, false)
}

type JniPackageInfo struct {
@@ -1148,7 +1146,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
	}

	extractedAARDir := android.PathForModuleOut(ctx, "aar")
	classpathFile := extractedAARDir.Join(ctx, "classes-combined.jar")
	a.classpathFile = extractedAARDir.Join(ctx, "classes-combined.jar")
	a.manifest = extractedAARDir.Join(ctx, "AndroidManifest.xml")
	a.rTxt = extractedAARDir.Join(ctx, "R.txt")
	a.assetsPackage = android.PathForModuleOut(ctx, "assets.zip")
@@ -1164,11 +1162,11 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
	ctx.Build(pctx, android.BuildParams{
		Rule:        unzipAAR,
		Input:       a.aarPath,
		Outputs:     android.WritablePaths{classpathFile, a.proguardFlags, a.manifest, a.assetsPackage, a.rTxt},
		Outputs:     android.WritablePaths{a.classpathFile, a.proguardFlags, a.manifest, a.assetsPackage, a.rTxt},
		Description: "unzip AAR",
		Args: map[string]string{
			"outDir":             extractedAARDir.String(),
			"combinedClassesJar": classpathFile.String(),
			"combinedClassesJar": a.classpathFile.String(),
			"assetsPackage":      a.assetsPackage.String(),
		},
	})
@@ -1241,7 +1239,13 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
	a.resourcesNodesDepSet = resourcesNodesDepSetBuilder.Build()

	manifestDepSetBuilder := android.NewDepSetBuilder[android.Path](android.TOPOLOGICAL).Direct(a.manifest)
	manifestDepSetBuilder.Transitive(staticManifestsDepSet)
	// TODO(b/288358614): Soong has historically not merged manifests from dependencies of android_library_import
	// modules.  Merging manifests from dependencies could remove the need for pom2bp to generate the "-nodeps" copies
	// of androidx libraries, but doing so triggers errors due to errors introduced by existing dependencies of
	// android_library_import modules.  If this is fixed, AndroidLibraryDependency.ManifestsDepSet can be dropped
	// completely in favor of AndroidLibraryDependency.ResourceNodesDepSet.manifest
	//manifestDepSetBuilder.Transitive(transitiveStaticDeps.manifests)
	_ = staticManifestsDepSet
	a.manifestsDepSet = manifestDepSetBuilder.Build()

	transitiveAaptResourcePackages := staticDeps.resPackages().Strings()
@@ -1253,45 +1257,12 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
	a.transitiveAaptResourcePackagesFile = transitiveAaptResourcePackagesFile

	a.collectTransitiveHeaderJars(ctx)

	a.classLoaderContexts = a.usesLibrary.classLoaderContextForUsesLibDeps(ctx)

	var staticJars android.Paths
	var staticHeaderJars android.Paths
	ctx.VisitDirectDeps(func(module android.Module) {
		if dep, ok := android.OtherModuleProvider(ctx, module, JavaInfoProvider); ok {
			tag := ctx.OtherModuleDependencyTag(module)
			switch tag {
			case staticLibTag:
				staticJars = append(staticJars, dep.ImplementationJars...)
				staticHeaderJars = append(staticHeaderJars, dep.HeaderJars...)
			}
		}
		addCLCFromDep(ctx, module, a.classLoaderContexts)
	})

	if len(staticJars) > 0 {
		combineJars := append(android.Paths{classpathFile}, staticJars...)
		a.implementationJarFile = android.PathForModuleOut(ctx, "combined", ctx.ModuleName()+".jar")
		TransformJarsToJar(ctx, a.implementationJarFile, "combine", combineJars, android.OptionalPath{}, false, nil, nil)
	} else {
		a.implementationJarFile = classpathFile
	}

	if len(staticHeaderJars) > 0 {
		combineJars := append(android.Paths{classpathFile}, staticHeaderJars...)
		a.headerJarFile = android.PathForModuleOut(ctx, "turbine-combined", ctx.ModuleName()+".jar")
		TransformJarsToJar(ctx, a.headerJarFile, "combine header jars", combineJars, android.OptionalPath{}, false, nil, nil)
	} else {
		a.headerJarFile = classpathFile
	}

	android.SetProvider(ctx, JavaInfoProvider, JavaInfo{
		HeaderJars:                     android.PathsIfNonNil(a.headerJarFile),
		HeaderJars:                     android.PathsIfNonNil(a.classpathFile),
		TransitiveLibsHeaderJars:       a.transitiveLibsHeaderJars,
		TransitiveStaticLibsHeaderJars: a.transitiveStaticLibsHeaderJars,
		ImplementationAndResourcesJars: android.PathsIfNonNil(a.implementationJarFile),
		ImplementationJars:             android.PathsIfNonNil(a.implementationJarFile),
		ImplementationAndResourcesJars: android.PathsIfNonNil(a.classpathFile),
		ImplementationJars:             android.PathsIfNonNil(a.classpathFile),
		StubsLinkType:                  Implementation,
		// TransitiveAconfigFiles: // TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts
	})
@@ -1324,15 +1295,15 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
}

func (a *AARImport) HeaderJars() android.Paths {
	return android.Paths{a.headerJarFile}
	return android.Paths{a.classpathFile}
}

func (a *AARImport) ImplementationAndResourcesJars() android.Paths {
	return android.Paths{a.implementationJarFile}
	return android.Paths{a.classpathFile}
}

func (a *AARImport) DexJarBuildPath(ctx android.ModuleErrorfContext) OptionalDexJarPath {
	return OptionalDexJarPath{}
func (a *AARImport) DexJarBuildPath(ctx android.ModuleErrorfContext) android.Path {
	return nil
}

func (a *AARImport) DexJarInstallPath() android.Path {
@@ -1340,11 +1311,9 @@ func (a *AARImport) DexJarInstallPath() android.Path {
}

func (a *AARImport) ClassLoaderContexts() dexpreopt.ClassLoaderContextMap {
	return a.classLoaderContexts
	return nil
}

var _ UsesLibraryDependency = (*AARImport)(nil)

var _ android.ApexModule = (*AARImport)(nil)

// Implements android.ApexModule
@@ -1353,7 +1322,7 @@ func (a *AARImport) DepIsInSameApex(ctx android.BaseModuleContext, dep android.M
}

// Implements android.ApexModule
func (a *AARImport) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
func (g *AARImport) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
	sdkVersion android.ApiLevel) error {
	return nil
}
@@ -1367,10 +1336,7 @@ var _ android.PrebuiltInterface = (*AARImport)(nil)
func AARImportFactory() android.Module {
	module := &AARImport{}

	module.AddProperties(
		&module.properties,
		&module.usesLibrary.usesLibraryProperties,
	)
	module.AddProperties(&module.properties)

	android.InitPrebuiltModule(module, &module.properties.Aars)
	android.InitApexModule(module)
+3 −2
Original line number Diff line number Diff line
@@ -92,9 +92,10 @@ func TestManifestMerger(t *testing.T) {
			"out/soong/.intermediates/transitive/android_common/manifest_fixer/AndroidManifest.xml",
			"transitive/AndroidManifest2.xml",
			"out/soong/.intermediates/transitive_import/android_common/aar/AndroidManifest.xml",
			"out/soong/.intermediates/transitive_import_dep/android_common/aar/AndroidManifest.xml",
			"out/soong/.intermediates/direct_import/android_common/aar/AndroidManifest.xml",
			"out/soong/.intermediates/direct_import_dep/android_common/aar/AndroidManifest.xml",
			// TODO(b/288358614): Soong has historically not merged manifests from dependencies of
			// android_library_import modules.

		},
		manifestMergerRule.Implicits)
}
+3 −3
Original line number Diff line number Diff line
@@ -262,13 +262,13 @@ func (prebuilt *AARImport) AndroidMkEntries() []android.AndroidMkEntries {
	}
	return []android.AndroidMkEntries{android.AndroidMkEntries{
		Class:      "JAVA_LIBRARIES",
		OutputFile: android.OptionalPathForPath(prebuilt.implementationJarFile),
		OutputFile: android.OptionalPathForPath(prebuilt.classpathFile),
		Include:    "$(BUILD_SYSTEM)/soong_java_prebuilt.mk",
		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
				entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", true)
				entries.SetPath("LOCAL_SOONG_HEADER_JAR", prebuilt.headerJarFile)
				entries.SetPath("LOCAL_SOONG_CLASSES_JAR", prebuilt.implementationJarFile)
				entries.SetPath("LOCAL_SOONG_HEADER_JAR", prebuilt.classpathFile)
				entries.SetPath("LOCAL_SOONG_CLASSES_JAR", prebuilt.classpathFile)
				entries.SetPath("LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE", prebuilt.exportPackage)
				entries.SetPath("LOCAL_SOONG_TRANSITIVE_RES_PACKAGES", prebuilt.transitiveAaptResourcePackagesFile)
				entries.SetPath("LOCAL_SOONG_EXPORT_PROGUARD_FLAGS", prebuilt.proguardFlags)
+18 −18
Original line number Diff line number Diff line
@@ -829,12 +829,12 @@ func TestAndroidResourceProcessor(t *testing.T) {
				"out/soong/.intermediates/default/java/android_stubs_current/android_common/turbine-combined/android_stubs_current.jar",
				"out/soong/.intermediates/shared/android_common/turbine-combined/shared.jar",
				"out/soong/.intermediates/direct/android_common/turbine-combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/turbine-combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},
			appCombined: []string{
				"out/soong/.intermediates/app/android_common/javac/app.jar",
				"out/soong/.intermediates/direct/android_common/combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},

			directResources: nil,
@@ -849,12 +849,12 @@ func TestAndroidResourceProcessor(t *testing.T) {
			directClasspath: []string{
				"out/soong/.intermediates/default/java/android_stubs_current/android_common/turbine-combined/android_stubs_current.jar",
				"out/soong/.intermediates/transitive/android_common/turbine-combined/transitive.jar",
				"out/soong/.intermediates/transitive_import/android_common/turbine-combined/transitive_import.jar",
				"out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar",
			},
			directCombined: []string{
				"out/soong/.intermediates/direct/android_common/javac/direct.jar",
				"out/soong/.intermediates/transitive/android_common/javac/transitive.jar",
				"out/soong/.intermediates/transitive_import/android_common/combined/transitive_import.jar",
				"out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar",
			},

			transitiveResources: []string{"out/soong/.intermediates/transitive/android_common/aapt2/transitive/res/values_strings.arsc.flat"},
@@ -928,13 +928,13 @@ func TestAndroidResourceProcessor(t *testing.T) {
				"out/soong/.intermediates/app/android_common/busybox/R.jar",
				"out/soong/.intermediates/shared/android_common/turbine-combined/shared.jar",
				"out/soong/.intermediates/direct/android_common/turbine-combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/turbine-combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},
			appCombined: []string{
				"out/soong/.intermediates/app/android_common/javac/app.jar",
				"out/soong/.intermediates/app/android_common/busybox/R.jar",
				"out/soong/.intermediates/direct/android_common/combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},

			directResources: nil,
@@ -953,12 +953,12 @@ func TestAndroidResourceProcessor(t *testing.T) {
				"out/soong/.intermediates/transitive_import_dep/android_common/busybox/R.jar",
				"out/soong/.intermediates/transitive_import/android_common/busybox/R.jar",
				"out/soong/.intermediates/transitive/android_common/turbine-combined/transitive.jar",
				"out/soong/.intermediates/transitive_import/android_common/turbine-combined/transitive_import.jar",
				"out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar",
			},
			directCombined: []string{
				"out/soong/.intermediates/direct/android_common/javac/direct.jar",
				"out/soong/.intermediates/transitive/android_common/javac/transitive.jar",
				"out/soong/.intermediates/transitive_import/android_common/combined/transitive_import.jar",
				"out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar",
			},

			transitiveResources: []string{"out/soong/.intermediates/transitive/android_common/aapt2/transitive/res/values_strings.arsc.flat"},
@@ -1034,13 +1034,13 @@ func TestAndroidResourceProcessor(t *testing.T) {
				"out/soong/.intermediates/app/android_common/busybox/R.jar",
				"out/soong/.intermediates/shared/android_common/turbine-combined/shared.jar",
				"out/soong/.intermediates/direct/android_common/turbine-combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/turbine-combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},
			appCombined: []string{
				"out/soong/.intermediates/app/android_common/javac/app.jar",
				"out/soong/.intermediates/app/android_common/busybox/R.jar",
				"out/soong/.intermediates/direct/android_common/combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},

			dontVerifyDirect:           true,
@@ -1075,12 +1075,12 @@ func TestAndroidResourceProcessor(t *testing.T) {
				"out/soong/.intermediates/default/java/android_stubs_current/android_common/turbine-combined/android_stubs_current.jar",
				"out/soong/.intermediates/shared/android_common/turbine-combined/shared.jar",
				"out/soong/.intermediates/direct/android_common/turbine-combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/turbine-combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},
			appCombined: []string{
				"out/soong/.intermediates/app/android_common/javac/app.jar",
				"out/soong/.intermediates/direct/android_common/combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},

			directResources: nil,
@@ -1098,12 +1098,12 @@ func TestAndroidResourceProcessor(t *testing.T) {
				"out/soong/.intermediates/transitive_import_dep/android_common/busybox/R.jar",
				"out/soong/.intermediates/transitive_import/android_common/busybox/R.jar",
				"out/soong/.intermediates/transitive/android_common/turbine-combined/transitive.jar",
				"out/soong/.intermediates/transitive_import/android_common/turbine-combined/transitive_import.jar",
				"out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar",
			},
			directCombined: []string{
				"out/soong/.intermediates/direct/android_common/javac/direct.jar",
				"out/soong/.intermediates/transitive/android_common/javac/transitive.jar",
				"out/soong/.intermediates/transitive_import/android_common/combined/transitive_import.jar",
				"out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar",
			},

			dontVerifyTransitive:       true,
@@ -1137,12 +1137,12 @@ func TestAndroidResourceProcessor(t *testing.T) {
				"out/soong/.intermediates/default/java/android_stubs_current/android_common/turbine-combined/android_stubs_current.jar",
				"out/soong/.intermediates/shared/android_common/turbine-combined/shared.jar",
				"out/soong/.intermediates/direct/android_common/turbine-combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/turbine-combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},
			appCombined: []string{
				"out/soong/.intermediates/app/android_common/javac/app.jar",
				"out/soong/.intermediates/direct/android_common/combined/direct.jar",
				"out/soong/.intermediates/direct_import/android_common/combined/direct_import.jar",
				"out/soong/.intermediates/direct_import/android_common/aar/classes-combined.jar",
			},

			directResources: nil,
@@ -1157,12 +1157,12 @@ func TestAndroidResourceProcessor(t *testing.T) {
			directClasspath: []string{
				"out/soong/.intermediates/default/java/android_stubs_current/android_common/turbine-combined/android_stubs_current.jar",
				"out/soong/.intermediates/transitive/android_common/turbine-combined/transitive.jar",
				"out/soong/.intermediates/transitive_import/android_common/turbine-combined/transitive_import.jar",
				"out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar",
			},
			directCombined: []string{
				"out/soong/.intermediates/direct/android_common/javac/direct.jar",
				"out/soong/.intermediates/transitive/android_common/javac/transitive.jar",
				"out/soong/.intermediates/transitive_import/android_common/combined/transitive_import.jar",
				"out/soong/.intermediates/transitive_import/android_common/aar/classes-combined.jar",
			},

			transitiveResources: []string{"out/soong/.intermediates/transitive/android_common/aapt2/transitive/res/values_strings.arsc.flat"},