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

This change adds the build_number.txt file into the sdk snapshot to
make it easier to debug issues arising in partner builds caused by the
snapshots.

The file is added to the root of the snapshot and is called:
    snapshot-creation-build-number.txt

Bug: 201295663
Test: m nothing
      packages/modules/common/build/mainline_modules_sdks.sh
      # Check the contents of various snapshots.
Change-Id: Ib3ac0cea5c9315cad0b9a3c25d88759097e37163
This commit is contained in:
Paul Duffin
2022-04-06 12:48:09 +00:00
parent c7bb9d47d6
commit 51509a156b
2 changed files with 28 additions and 2 deletions

View File

@@ -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) {
// Get source relative to build directory.
_, _ = fmt.Fprintf(copyRules, "%s -> %s\n", src, dest)
// 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()