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

Commit d72c8521 authored by Paul Duffin's avatar Paul Duffin Committed by Gerrit Code Review
Browse files

Merge "Copy the out/soong/build_number.txt file into sdk snapshots"

parents 2c399905 51509a15
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import (
	"android/soong/cc"
	"android/soong/genrule"
	"android/soong/java"

	"github.com/google/blueprint/proptools"
)

// Prepare for running an sdk test with an apex.
@@ -81,6 +83,11 @@ var prepareForSdkTest = android.GroupFixturePreparers(
		}
	}),

	// Add a build number file.
	android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
		variables.BuildNumberFile = proptools.StringPtr(BUILD_NUMBER_FILE)
	}),

	// Make sure that every test provides all the source files.
	android.PrepareForTestDisallowNonExistentPaths,
	android.MockFS{
@@ -143,6 +150,8 @@ func getSdkSnapshotBuildInfo(t *testing.T, result *android.TestResult, sdk *sdk)
	copyRules := &strings.Builder{}
	otherCopyRules := &strings.Builder{}
	snapshotDirPrefix := sdk.builderForTests.snapshotDir.String() + "/"

	seenBuildNumberFile := false
	for _, bp := range buildParams {
		switch bp.Rule.String() {
		case android.Cp.String():
@@ -152,8 +161,14 @@ func getSdkSnapshotBuildInfo(t *testing.T, result *android.TestResult, sdk *sdk)
			src := android.NormalizePathForTesting(bp.Input)
			// We differentiate between copy rules for the snapshot, and copy rules for the install file.
			if strings.HasPrefix(output.String(), snapshotDirPrefix) {
				// Don't include the build-number.txt file in the copy rules as that would break lots of
				// tests, just verify that it is copied here as it should appear in every snapshot.
				if output.Base() == BUILD_NUMBER_FILE {
					seenBuildNumberFile = true
				} else {
					// Get source relative to build directory.
					_, _ = fmt.Fprintf(copyRules, "%s -> %s\n", src, dest)
				}
				info.snapshotContents = append(info.snapshotContents, dest)
			} else {
				_, _ = fmt.Fprintf(otherCopyRules, "%s -> %s\n", src, dest)
@@ -189,6 +204,10 @@ func getSdkSnapshotBuildInfo(t *testing.T, result *android.TestResult, sdk *sdk)
		}
	}

	if !seenBuildNumberFile {
		panic(fmt.Sprintf("Every snapshot must include the %s file", BUILD_NUMBER_FILE))
	}

	info.copyRules = copyRules.String()
	info.otherCopyRules = otherCopyRules.String()

+7 −0
Original line number Diff line number Diff line
@@ -281,6 +281,10 @@ func appendUniqueVariants(variants []android.SdkAware, newVariant android.SdkAwa
	return append(variants, newVariant)
}

// BUILD_NUMBER_FILE is the name of the file in the snapshot zip that will contain the number of
// the build from which the snapshot was produced.
const BUILD_NUMBER_FILE = "snapshot-creation-build-number.txt"

// SDK directory structure
// <sdk_root>/
//     Android.bp   : definition of a 'sdk' module is here. This is a hand-made one.
@@ -479,6 +483,9 @@ be unnecessary as every module in the sdk already has its own licenses property.

	bp.build(pctx, ctx, nil)

	// Copy the build number file into the snapshot.
	builder.CopyToSnapshot(ctx.Config().BuildNumberFile(ctx), BUILD_NUMBER_FILE)

	filesToZip := builder.filesToZip

	// zip them all