Use C++ environment variables when constructing link command line (#252)

* Use C++ environment variables when constructing link command line

This PR makes sure that rustc action also takes declared environment
variables from the C++ toolchain when constructing the action. This way
the C++ toolchain can start using more environment variables without
breaking rust.

* Fix iterating depset
2 files changed
tree: b04ced833468f3aac92c4008031d4716008d4910
  1. .bazelci/
  2. bindgen/
  3. docs/
  4. examples/
  5. proto/
  6. rust/
  7. test/
  8. tools/
  9. util/
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CODEOWNERS
  14. CONTRIBUTING.md
  15. CONTRIBUTORS
  16. libc.BUILD
  17. LICENSE.txt
  18. README.md
  19. renovate.json
  20. WORKSPACE
  21. workspace.bzl
README.md

Build status

Rust Rules

Overview

This repository provides rules for building Rust projects with Bazel.

Basics

Protobuf

with an overview here.

Setup

To use the Rust rules, add the following to your WORKSPACE file to add the external repositories for the Rust toolchain:

http_archive(
    name = "io_bazel_rules_rust",
    sha256 = "c82118824b2448b77146f1dae97b6eaa717babedad0822aca4879f3cbbf2b7b5",
    strip_prefix = "rules_rust-3228ccd3814c2ad0d7307d2f87fb8ff9616149d7",
    urls = [
        # Master branch as of 2018-12-11
        "https://github.com/bazelbuild/rules_rust/archive/3228ccd3814c2ad0d7307d2f87fb8ff9616149d7.tar.gz",
    ],
)

http_archive(
    name = "bazel_skylib",
    sha256 = "eb5c57e4c12e68c0c20bc774bfbc60a568e800d025557bc4ea022c6479acc867",
    strip_prefix = "bazel-skylib-0.6.0",
    url = "https://github.com/bazelbuild/bazel-skylib/archive/0.6.0.tar.gz",
)

load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories")
rust_repositories()

load("@io_bazel_rules_rust//:workspace.bzl", "bazel_version")
bazel_version(name = "bazel_version")

The rules are under active development, as such the lastest commit on the master branch should be used. master currently requires Bazel >= 0.17.0.

External Dependencies

Currently the most common approach to managing external dependencies is using cargo-raze to generate BUILD files for Cargo crates.

Roadmap

  • Improve expressiveness of features and support for Cargo's feature groups.
  • Add cargo_crate workspace rule for pulling crates from Cargo.