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

Commit cf90c159 authored by Hsin-Yi Chen's avatar Hsin-Yi Chen Committed by Gerrit Code Review
Browse files

Merge "Add --release and --lib-variant to the instructions to update ABI dumps" into main

parents 46469d6a d5919c16
Loading
Loading
Loading
Loading
+32 −11
Original line number Diff line number Diff line
@@ -1362,20 +1362,25 @@ func (library *libraryDecorator) sourceAbiDiff(ctx android.ModuleContext,

func (library *libraryDecorator) crossVersionAbiDiff(ctx android.ModuleContext,
	sourceDump, referenceDump android.Path,
	baseName string, isLlndk bool, sourceVersion, prevVersion string) {
	baseName, nameExt string, isLlndk bool, sourceVersion, prevDumpDir string) {

	errorMessage := "error: Please follow https://android.googlesource.com/platform/development/+/main/vndk/tools/header-checker/README.md#configure-cross_version-abi-check to resolve the ABI difference between your source code and version " + prevVersion + "."
	errorMessage := "error: Please follow https://android.googlesource.com/platform/development/+/main/vndk/tools/header-checker/README.md#configure-cross_version-abi-check to resolve the difference between your source code and the ABI dumps in " + prevDumpDir

	library.sourceAbiDiff(ctx, sourceDump, referenceDump, baseName, prevVersion,
	library.sourceAbiDiff(ctx, sourceDump, referenceDump, baseName, nameExt,
		isLlndk, true /* allowExtensions */, sourceVersion, errorMessage)
}

func (library *libraryDecorator) sameVersionAbiDiff(ctx android.ModuleContext,
	sourceDump, referenceDump android.Path,
	baseName, nameExt string, isLlndk bool) {
	baseName, nameExt string, isLlndk bool, lsdumpTagName string) {

	libName := strings.TrimSuffix(baseName, filepath.Ext(baseName))
	errorMessage := "error: Please update ABI references with: $$ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l " + libName
	errorMessage := "error: Please update ABI references with: $$ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py --lib " + libName + " --lib-variant " + lsdumpTagName

	targetRelease := ctx.Config().Getenv("TARGET_RELEASE")
	if targetRelease != "" {
		errorMessage += " --release " + targetRelease
	}

	library.sourceAbiDiff(ctx, sourceDump, referenceDump, baseName, nameExt,
		isLlndk, false /* allowExtensions */, "current", errorMessage)
@@ -1383,13 +1388,19 @@ func (library *libraryDecorator) sameVersionAbiDiff(ctx android.ModuleContext,

func (library *libraryDecorator) optInAbiDiff(ctx android.ModuleContext,
	sourceDump, referenceDump android.Path,
	baseName, nameExt string, refDumpDir string) {
	baseName, nameExt string, refDumpDir string, lsdumpTagName string) {

	libName := strings.TrimSuffix(baseName, filepath.Ext(baseName))
	errorMessage := "error: Please update ABI references with: $$ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l " + libName + " -ref-dump-dir $$ANDROID_BUILD_TOP/" + refDumpDir
	errorMessage := "error: Please update ABI references with: $$ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py --lib " + libName + " --lib-variant " + lsdumpTagName + " --ref-dump-dir $$ANDROID_BUILD_TOP/" + refDumpDir

	targetRelease := ctx.Config().Getenv("TARGET_RELEASE")
	if targetRelease != "" {
		errorMessage += " --release " + targetRelease
	}

	// Most opt-in libraries do not have dumps for all default architectures.
	if ctx.Config().HasDeviceProduct() {
		errorMessage += " -products " + ctx.Config().DeviceProduct()
		errorMessage += " --product " + ctx.Config().DeviceProduct()
	}

	library.sourceAbiDiff(ctx, sourceDump, referenceDump, baseName, nameExt,
@@ -1414,6 +1425,7 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, deps PathD

		var llndkDump, apexVariantDump android.Path
		tags := classifySourceAbiDump(ctx)
		optInTags := []lsdumpTag{}
		for _, tag := range tags {
			if tag == llndkLsdumpTag && currVendorVersion != "" {
				if llndkDump == nil {
@@ -1435,6 +1447,9 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, deps PathD
				}
				addLsdumpPath(string(tag) + ":" + apexVariantDump.String())
			} else {
				if tag.dirName() == "" {
					optInTags = append(optInTags, tag)
				}
				addLsdumpPath(string(tag) + ":" + implDump.String())
			}
		}
@@ -1479,7 +1494,7 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, deps PathD
			prevDumpFile := getRefAbiDumpFile(ctx, prevDumpDir, fileName)
			if prevDumpFile.Valid() {
				library.crossVersionAbiDiff(ctx, sourceDump, prevDumpFile.Path(),
					fileName, isLlndk, currVersion, nameExt+prevVersion)
					fileName, nameExt+prevVersion, isLlndk, currVersion, prevDumpDir)
			}
			// Check against the current version.
			sourceDump = implDump
@@ -1499,8 +1514,14 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, deps PathD
			currDumpFile := getRefAbiDumpFile(ctx, currDumpDir, fileName)
			if currDumpFile.Valid() {
				library.sameVersionAbiDiff(ctx, sourceDump, currDumpFile.Path(),
					fileName, nameExt, isLlndk)
					fileName, nameExt, isLlndk, string(tag))
			}
		}

		// Assert that a module is tagged with at most one of platformLsdumpTag, productLsdumpTag, or vendorLsdumpTag.
		if len(headerAbiChecker.Ref_dump_dirs) > 0 && len(optInTags) != 1 {
			ctx.ModuleErrorf("Expect exactly one opt-in lsdump tag when ref_dump_dirs are specified: %s", optInTags)
			return
		}
		// Ensure that a module tagged with only platformLsdumpTag has ref_dump_dirs.
		// Android.bp in vendor projects should be cleaned up before this is enforced for vendorLsdumpTag and productLsdumpTag.
@@ -1518,7 +1539,7 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, deps PathD
			}
			library.optInAbiDiff(ctx,
				implDump, optInDumpFile.Path(),
				fileName, "opt"+strconv.Itoa(i), optInDumpDirPath.String())
				fileName, "opt"+strconv.Itoa(i), optInDumpDirPath.String(), string(optInTags[0]))
		}
	}
}