Merge "Copy the out/soong/build_number.txt file into sdk snapshots" into sc-mainline-prod

This commit is contained in:
Paul Duffin
2022-04-08 12:00:32 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 2 deletions

View File

@@ -25,6 +25,8 @@ import (
"android/soong/cc" "android/soong/cc"
"android/soong/genrule" "android/soong/genrule"
"android/soong/java" "android/soong/java"
"github.com/google/blueprint/proptools"
) )
// Prepare for running an sdk test with an apex. // 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. // Make sure that every test provides all the source files.
android.PrepareForTestDisallowNonExistentPaths, android.PrepareForTestDisallowNonExistentPaths,
android.MockFS{ android.MockFS{
@@ -143,6 +150,8 @@ func getSdkSnapshotBuildInfo(t *testing.T, result *android.TestResult, sdk *sdk)
copyRules := &strings.Builder{} copyRules := &strings.Builder{}
otherCopyRules := &strings.Builder{} otherCopyRules := &strings.Builder{}
snapshotDirPrefix := sdk.builderForTests.snapshotDir.String() + "/" snapshotDirPrefix := sdk.builderForTests.snapshotDir.String() + "/"
seenBuildNumberFile := false
for _, bp := range buildParams { for _, bp := range buildParams {
switch bp.Rule.String() { switch bp.Rule.String() {
case android.Cp.String(): case android.Cp.String():
@@ -152,8 +161,14 @@ func getSdkSnapshotBuildInfo(t *testing.T, result *android.TestResult, sdk *sdk)
src := android.NormalizePathForTesting(bp.Input) src := android.NormalizePathForTesting(bp.Input)
// We differentiate between copy rules for the snapshot, and copy rules for the install file. // We differentiate between copy rules for the snapshot, and copy rules for the install file.
if strings.HasPrefix(output.String(), snapshotDirPrefix) { 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. // Get source relative to build directory.
_, _ = fmt.Fprintf(copyRules, "%s -> %s\n", src, dest) _, _ = fmt.Fprintf(copyRules, "%s -> %s\n", src, dest)
}
info.snapshotContents = append(info.snapshotContents, dest) info.snapshotContents = append(info.snapshotContents, dest)
} else { } else {
_, _ = fmt.Fprintf(otherCopyRules, "%s -> %s\n", src, dest) _, _ = 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.copyRules = copyRules.String()
info.otherCopyRules = otherCopyRules.String() info.otherCopyRules = otherCopyRules.String()

View File

@@ -242,6 +242,10 @@ func appendUniqueVariants(variants []android.SdkAware, newVariant android.SdkAwa
return append(variants, newVariant) 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 directory structure
// <sdk_root>/ // <sdk_root>/
// Android.bp : definition of a 'sdk' module is here. This is a hand-made one. // Android.bp : definition of a 'sdk' module is here. This is a hand-made one.
@@ -432,6 +436,9 @@ be unnecessary as every module in the sdk already has its own licenses property.
bp.build(pctx, ctx, nil) 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 filesToZip := builder.filesToZip
// zip them all // zip them all