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

Commit 380c6792 authored by Liz Kammer's avatar Liz Kammer Committed by Automerger Merge Worker
Browse files

Merge "Add imports_sdk_version to prebuilt_apis" am: 9c07d244

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1397557

Change-Id: Ic536dfe4c2f3a3a2e610520266cdca76f0d9ecfd
parents 6419a882 9c07d244
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -202,7 +202,7 @@ func (prebuilt *Import) AndroidMkEntries() []android.AndroidMkEntries {
				entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", !Bool(prebuilt.properties.Installable))
				entries.SetPath("LOCAL_SOONG_HEADER_JAR", prebuilt.combinedClasspathFile)
				entries.SetPath("LOCAL_SOONG_CLASSES_JAR", prebuilt.combinedClasspathFile)
				entries.SetString("LOCAL_SDK_VERSION", prebuilt.sdkVersion().raw)
				entries.SetString("LOCAL_SDK_VERSION", prebuilt.makeSdkVersion())
				entries.SetString("LOCAL_MODULE_STEM", prebuilt.Stem())
			},
		},
+4 −0
Original line number Diff line number Diff line
@@ -2542,6 +2542,10 @@ func (j *Import) sdkVersion() sdkSpec {
	return sdkSpecFrom(String(j.properties.Sdk_version))
}

func (j *Import) makeSdkVersion() string {
	return j.sdkVersion().raw
}

func (j *Import) minSdkVersion() sdkSpec {
	return j.sdkVersion()
}
+21 −15
Original line number Diff line number Diff line
@@ -34,6 +34,10 @@ func RegisterPrebuiltApisBuildComponents(ctx android.RegistrationContext) {
type prebuiltApisProperties struct {
	// list of api version directories
	Api_dirs []string

	// The sdk_version of java_import modules generated based on jar files.
	// Defaults to "current"
	Imports_sdk_version *string
}

type prebuiltApis struct {
@@ -74,7 +78,7 @@ func prebuiltApiModuleName(mctx android.LoadHookContext, module string, scope st
	return mctx.ModuleName() + "_" + scope + "_" + apiver + "_" + module
}

func createImport(mctx android.LoadHookContext, module string, scope string, apiver string, path string) {
func createImport(mctx android.LoadHookContext, module, scope, apiver, path, sdk_version string) {
	props := struct {
		Name        *string
		Jars        []string
@@ -83,7 +87,7 @@ func createImport(mctx android.LoadHookContext, module string, scope string, api
	}{}
	props.Name = proptools.StringPtr(prebuiltApiModuleName(mctx, module, scope, apiver))
	props.Jars = append(props.Jars, path)
	props.Sdk_version = proptools.StringPtr(scope)
	props.Sdk_version = proptools.StringPtr(sdk_version)
	props.Installable = proptools.BoolPtr(false)

	mctx.CreateModule(ImportFactory, &props)
@@ -100,10 +104,10 @@ func createFilegroup(mctx android.LoadHookContext, module string, scope string,
	mctx.CreateModule(android.FileGroupFactory, &filegroupProps)
}

func getPrebuiltFiles(mctx android.LoadHookContext, name string) []string {
func getPrebuiltFiles(mctx android.LoadHookContext, p *prebuiltApis, name string) []string {
	mydir := mctx.ModuleDir() + "/"
	var files []string
	for _, apiver := range mctx.Module().(*prebuiltApis).properties.Api_dirs {
	for _, apiver := range p.properties.Api_dirs {
		for _, scope := range []string{"public", "system", "test", "core", "module-lib", "system-server"} {
			vfiles, err := mctx.GlobWithDeps(mydir+apiver+"/"+scope+"/"+name, nil)
			if err != nil {
@@ -115,16 +119,18 @@ func getPrebuiltFiles(mctx android.LoadHookContext, name string) []string {
	return files
}

func prebuiltSdkStubs(mctx android.LoadHookContext) {
func prebuiltSdkStubs(mctx android.LoadHookContext, p *prebuiltApis) {
	mydir := mctx.ModuleDir() + "/"
	// <apiver>/<scope>/<module>.jar
	files := getPrebuiltFiles(mctx, "*.jar")
	files := getPrebuiltFiles(mctx, p, "*.jar")

	sdk_version := proptools.StringDefault(p.properties.Imports_sdk_version, "current")

	for _, f := range files {
		// create a Import module for each jar file
		localPath := strings.TrimPrefix(f, mydir)
		module, apiver, scope := parseJarPath(localPath)
		createImport(mctx, module, scope, apiver, localPath)
		createImport(mctx, module, scope, apiver, localPath, sdk_version)
	}
}

@@ -139,8 +145,8 @@ func createSystemModules(mctx android.LoadHookContext, apiver string) {
	mctx.CreateModule(SystemModulesFactory, &props)
}

func prebuiltSdkSystemModules(mctx android.LoadHookContext) {
	for _, apiver := range mctx.Module().(*prebuiltApis).properties.Api_dirs {
func prebuiltSdkSystemModules(mctx android.LoadHookContext, p *prebuiltApis) {
	for _, apiver := range p.properties.Api_dirs {
		jar := android.ExistentPathForSource(mctx,
			mctx.ModuleDir(), apiver, "public", "core-for-system-modules.jar")
		if jar.Valid() {
@@ -149,10 +155,10 @@ func prebuiltSdkSystemModules(mctx android.LoadHookContext) {
	}
}

func prebuiltApiFiles(mctx android.LoadHookContext) {
func prebuiltApiFiles(mctx android.LoadHookContext, p *prebuiltApis) {
	mydir := mctx.ModuleDir() + "/"
	// <apiver>/<scope>/api/<module>.txt
	files := getPrebuiltFiles(mctx, "api/*.txt")
	files := getPrebuiltFiles(mctx, p, "api/*.txt")

	if len(files) == 0 {
		mctx.ModuleErrorf("no api file found under %q", mydir)
@@ -200,10 +206,10 @@ func prebuiltApiFiles(mctx android.LoadHookContext) {
}

func createPrebuiltApiModules(mctx android.LoadHookContext) {
	if _, ok := mctx.Module().(*prebuiltApis); ok {
		prebuiltApiFiles(mctx)
		prebuiltSdkStubs(mctx)
		prebuiltSdkSystemModules(mctx)
	if p, ok := mctx.Module().(*prebuiltApis); ok {
		prebuiltApiFiles(mctx, p)
		prebuiltSdkStubs(mctx, p)
		prebuiltSdkSystemModules(mctx, p)
	}
}