shebang: changed scripts shebang to better support systems like bsd and nixos

Copybara Import from https://github.com/bazelbuild/rules_cc/pull/306

BEGIN_PUBLIC
shebang: changed scripts shebang to better support systems like bsd and nixos (#306)

The assumption that bash is always located at /bin/bash does not always hold true.
In POSIX systems, it is recommended to avoid relying on common paths. Instead, one should either:

- Hardcode the full absolute path to the executable, or
- Locate the command in the PATH.

A more portable approach is to use `#!/usr/bin/env bash`, which resolves binaries through the PATH.

This patch updates the default shebang string in this repository to improve portability on systems like NixOS or BSD.

Closes #306
END_PUBLIC

COPYBARA_INTEGRATE_REVIEW=https://github.com/bazelbuild/rules_cc/pull/306 from lromor:fix-portable-shebang f4841a47b841b4a5a708e9b113750ba58b00e0dd
PiperOrigin-RevId: 737947242
Change-Id: Ib8e7113e134d2357bcbff40b8be39696e4c14984
13 files changed
tree: 1a2950d12e64d93d9c603a8c3bc5abca558f39a5
  1. .bazelci/
  2. .bcr/
  3. .github/
  4. cc/
  5. docs/
  6. examples/
  7. tests/
  8. .bazelignore
  9. .bazelrc
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CODEOWNERS
  14. CONTRIBUTING.md
  15. ISSUE_TEMPLATE.md
  16. LICENSE
  17. MODULE.bazel
  18. README.md
  19. renovate.json
  20. WORKSPACE
  21. WORKSPACE.bzlmod
README.md

C++ rules for Bazel

  • Postsubmit Build status
  • Postsubmit + Current Bazel Incompatible flags Build status

This repository contains a Starlark implementation of C++ rules in Bazel.

The rules are being incrementally converted from their native implementations in the Bazel source tree.

For the list of C++ rules, see the Bazel documentation.

Getting Started

Add the following to your WORKSPACE file:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_cc",
    urls = ["https://github.com/bazelbuild/rules_cc/archive/refs/tags/<VERSION>.tar.gz"],
    sha256 = "...",
)

Then, in your BUILD files, import and use the rules:

load("@rules_cc//cc:defs.bzl", "cc_library")

cc_library(
    ...
)

Using the rules_cc toolchain

This repo contains an auto-detecting toolchain that expects to find tools installed on your host machine. This is non-hermetic, and may have varying behaviors depending on the versions of tools found.

There are third-party contributed hermetic toolchains you may want to investigate:

If you'd like to use the cc toolchain defined in this repo, add this to your WORKSPACE after you include rules_cc:

load("@rules_cc//cc:repositories.bzl", "rules_cc_dependencies", "rules_cc_toolchains")

rules_cc_dependencies()

rules_cc_toolchains()

Migration Tools

This repository also contains migration tools that can be used to migrate your project for Bazel incompatible changes.

Legacy fields migrator

Script that migrates legacy crosstool fields into features (incompatible flag, tracking issue).

TLDR:

bazel run @rules_cc//tools/migration:legacy_fields_migrator -- \
  --input=my_toolchain/CROSSTOOL \
  --inline

Contributing

Bazel and rules_cc are the work of many contributors. We appreciate your help!

To contribute, please read the contribution guidelines: CONTRIBUTING.md.

Note that the rules_cc use the GitHub issue tracker for bug reports and feature requests only. For asking questions see: