summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Cole Faust <colefaust@google.com> 2023-08-31 11:00:25 -0700
committer Cole Faust <colefaust@google.com> 2023-08-31 11:00:25 -0700
commit20f2030e29677e4cef5d2ac58ebb6b870e6fbcf5 (patch)
treef41e82af68f0b3fb0fe09cf37c9b3df935ba6614
parent8bbe26cad78f2d36e113a356c3cfa5e8d37c8c16 (diff)
Use aquery results to determine if a file should be executable
Now that aquery includes this information. Also added rm -f $out to some rules, because since they write files by shell redirection, if the file existed before and was executable, they wouldn't make the file non-executable and visa versa. Fixes: 297366783 Test: m bazel_sandwich Change-Id: Ie5b6c4275b162601f51deaec9912eea4be16988d
-rw-r--r--android/bazel_handler.go5
-rw-r--r--android/defs.go6
-rw-r--r--bazel/aquery.go2
3 files changed, 6 insertions, 7 deletions
diff --git a/android/bazel_handler.go b/android/bazel_handler.go
index 42ba9b44e..4b9834564 100644
--- a/android/bazel_handler.go
+++ b/android/bazel_handler.go
@@ -1382,10 +1382,7 @@ func (c *bazelSingleton) GenerateBuildActions(ctx SingletonContext) {
WriteFileRuleVerbatim(ctx, out, "")
case "FileWrite", "SourceSymlinkManifest":
out := PathForBazelOut(ctx, buildStatement.OutputPaths[0])
- // 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") {
+ if buildStatement.IsExecutable {
WriteExecutableFileRuleVerbatim(ctx, out, buildStatement.FileContents)
} else {
WriteFileRuleVerbatim(ctx, out, buildStatement.FileContents)
diff --git a/android/defs.go b/android/defs.go
index 682111ea5..b28d2fa3d 100644
--- a/android/defs.go
+++ b/android/defs.go
@@ -107,8 +107,8 @@ var (
Cat = pctx.AndroidStaticRule("Cat",
blueprint.RuleParams{
- Command: "cat $in > $out",
- Description: "concatenate licenses $out",
+ Command: "rm -f $out && cat $in > $out",
+ Description: "concatenate files to $out",
})
// ubuntu 14.04 offcially use dash for /bin/sh, and its builtin echo command
@@ -116,7 +116,7 @@ var (
// content to file.
writeFile = pctx.AndroidStaticRule("writeFile",
blueprint.RuleParams{
- Command: `/bin/bash -c 'echo -e -n "$$0" > $out' $content`,
+ Command: `rm -f $out && /bin/bash -c 'echo -e -n "$$0" > $out' $content`,
Description: "writing file $out",
},
"content")
diff --git a/bazel/aquery.go b/bazel/aquery.go
index d77d59acf..76cd97254 100644
--- a/bazel/aquery.go
+++ b/bazel/aquery.go
@@ -123,6 +123,7 @@ type BuildStatement struct {
// Unlike most properties in BuildStatement, these paths must be relative to the root of
// the whole out/ folder, instead of relative to ctx.Config().BazelContext.OutputBase()
ImplicitDeps []string
+ IsExecutable bool
}
// A helper type for aquery processing which facilitates retrieval of path IDs from their
@@ -560,6 +561,7 @@ func (a *aqueryArtifactHandler) fileWriteActionBuildStatement(actionEntry *analy
Mnemonic: actionEntry.Mnemonic,
InputDepsetHashes: depsetHashes,
FileContents: actionEntry.FileContents,
+ IsExecutable: actionEntry.IsExecutable,
}, nil
}