Skip to content

Bazel sets all input files as executable when actions are executed remotely #12818

@vsiva

Description

@vsiva

Description of the problem / feature request:

When used with RBE (or presumably any remote execution solution), all input files have executable permissions set.
Our product is a desktop application that is built using RBE, and only certain files should have exe permissions, not all. This issue prevents us from using RBE to build the final artifacts.

Bugs: what's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

$ ls -lht
total 4.0K
-rw-r----- 1 vsiva primarygroup 231 Jan 12 16:08 BUILD
-rwxr-x--- 1 vsiva primarygroup   0 Jan 12 16:06 bar.exe
-rw-r----- 1 vsiva primarygroup   0 Jan 12 16:06 foo.txt

$ cat BUILD 
genrule(
        name = "genzip",
        srcs = ["foo.txt", "bar.exe"],
        tools = ["@bazel_tools//tools/zip:zipper"],
        outs = ["foobar.zip"],
        cmd = "ls -l $(SRCS); $(location @bazel_tools//tools/zip:zipper) c $@ $(SRCS)",
)

$ bazel build :genzip

What's the output of bazel info release?

3.1.0

Any other information, logs, or outputs that you want to share?

https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/remote/merkletree/MerkleTree.java#L201 has:

 private static FileNode buildProto(DirectoryTree.FileNode file) {
    return FileNode.newBuilder()
        .setName(file.getPathSegment())
        .setDigest(file.getDigest())
        .setIsExecutable(true)
        .build();
  }

The issue seems to be with the setIsExecutable call.

Metadata

Metadata

Assignees

Labels

P1I'll work on this now. (Assignee required)team-Remote-ExecIssues and PRs for the Execution (Remote) teamtype: bug

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions