Add the system image test to the bazel sandwich

Also make -test.sh files executable, while we wait for a bazel update
that will tell us which FileWrite actions should be executable.

Bug: 297268692
Test: m bazel_sandwich
Change-Id: I60498577ba12813bff8bbdbc1b997ea4addefd17
This commit is contained in:
Cole Faust
2023-08-23 16:11:26 -07:00
parent 573eabaa62
commit 39b614af17
3 changed files with 19 additions and 6 deletions

View File

@@ -1645,5 +1645,9 @@ var (
Label: "//build/bazel/examples/partitions:system_image", Label: "//build/bazel/examples/partitions:system_image",
Host: false, Host: false,
}, },
{
Label: "//build/bazel/examples/partitions:run_test",
Host: false,
},
} }
) )

View File

@@ -1382,7 +1382,14 @@ func (c *bazelSingleton) GenerateBuildActions(ctx SingletonContext) {
WriteFileRuleVerbatim(ctx, out, "") WriteFileRuleVerbatim(ctx, out, "")
case "FileWrite", "SourceSymlinkManifest": case "FileWrite", "SourceSymlinkManifest":
out := PathForBazelOut(ctx, buildStatement.OutputPaths[0]) out := PathForBazelOut(ctx, buildStatement.OutputPaths[0])
WriteFileRuleVerbatim(ctx, out, buildStatement.FileContents) // TODO(b/297366783) This is a hack to make files from skylib's diff_test executable.
// We need to update bazel to have aquery tell us whether a file is supposed to be
// executable or not.
if strings.HasSuffix(buildStatement.OutputPaths[0], "-test.sh") {
WriteExecutableFileRuleVerbatim(ctx, out, buildStatement.FileContents)
} else {
WriteFileRuleVerbatim(ctx, out, buildStatement.FileContents)
}
case "SymlinkTree": case "SymlinkTree":
// build-runfiles arguments are the manifest file and the target directory // build-runfiles arguments are the manifest file and the target directory
// where it creates the symlink tree according to this manifest (and then // where it creates the symlink tree according to this manifest (and then

View File

@@ -209,12 +209,14 @@ func WriteFileRuleVerbatim(ctx BuilderContext, outputFile WritablePath, content
buildWriteFileRule(ctx, outputFile, content) buildWriteFileRule(ctx, outputFile, content)
} }
func CatFileRule(ctx BuilderContext, paths Paths, outputFile WritablePath) { // WriteExecutableFileRuleVerbatim is the same as WriteFileRuleVerbatim, but runs chmod +x on the result
func WriteExecutableFileRuleVerbatim(ctx BuilderContext, outputFile WritablePath, content string) {
intermediate := PathForIntermediates(ctx, "write_executable_file_intermediates").Join(ctx, outputFile.String())
WriteFileRuleVerbatim(ctx, intermediate, content)
ctx.Build(pctx, BuildParams{ ctx.Build(pctx, BuildParams{
Rule: Cat, Rule: CpExecutable,
Inputs: paths, Output: outputFile,
Output: outputFile, Input: intermediate,
Description: "combine files to " + outputFile.Base(),
}) })
} }