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
This commit is contained in:
parent
8bbe26cad7
commit
20f2030e29
3 changed files with 6 additions and 7 deletions
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue