| # Helper functions for implementing Bazel rules. |
| |
| # Prefer using ctx.actions.args() instead; see |
| # https://docs.bazel.build/versions/master/skylark/lib/Args.html |
| def create_option_file(ctx, name, content): |
| """ Create the command line options file """ |
| options_file = ctx.actions.declare_file(name) |
| ctx.actions.write(output = options_file, content = content) |
| return options_file |
| |
| # Adds an explict target-name part if label doesn't have it. |
| def explicit_target(label): |
| return label if ":" in label else label + ":" + label.rsplit("/", 1)[-1] |
| |
| # Converts label package to a path relative to the execroot. |
| def label_workspace_path(label): |
| if label.workspace_root != "": |
| return label.workspace_root + "/" + label.package |
| return label.package |
| |
| # Converts a relative path to be relative to the execroot. |
| def workspace_path(path): |
| return label_workspace_path(Label("//" + path)) |