commit | d74915024017250e46d95e91a3defc34174effe0 | [log] [tgz] |
---|---|---|
author | Leonardo Romor <leonardo.romor@gmail.com> | Tue Mar 18 04:06:50 2025 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Mar 18 04:07:41 2025 -0700 |
tree | 1a2950d12e64d93d9c603a8c3bc5abca558f39a5 | |
parent | 07c5535812e262dd21fdcf7af8fd60f73148d0bc [diff] |
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
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.
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( ... )
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()
This repository also contains migration tools that can be used to migrate your project for Bazel incompatible changes.
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
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:
rules_cc
mailing list#cc
on slack.bazel.build