Skip to content

Commit 2070547

Browse files
Merge branch 'main' into json-output
2 parents 0aec7e9 + b082688 commit 2070547

File tree

1,623 files changed

+83230
-101754
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,623 files changed

+83230
-101754
lines changed

.bazelci/presubmit.yml

Lines changed: 97 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22
aspects_flags: &aspects_flags
33
- "--config=rustfmt"
44
- "--config=clippy"
5+
min_rust_version_shell_commands: &min_rust_version_shell_commands
6+
- sed -i 's|^rust_register_toolchains(|rust_register_toolchains(versions = ["1.59.0"],\n|' WORKSPACE.bazel
7+
nightly_flags: &nightly_flags
8+
- "--//rust/toolchain/channel=nightly"
9+
nightly_aspects_flags: &nightly_aspects_flags
10+
- "--//rust/toolchain/channel=nightly"
11+
- "--config=rustfmt"
12+
- "--config=clippy"
13+
single_rust_channel_targets: &single_rust_channel_targets
14+
- "--"
15+
- "//..."
16+
# These tests are expected to fail as they require both a nightly and stable toolchain.
17+
- "-//test/unit/channel_transitions/..."
518
default_linux_targets: &default_linux_targets
619
- "//..."
720
default_macos_targets: &default_macos_targets
@@ -47,8 +60,8 @@ tasks:
4760
windows:
4861
build_flags:
4962
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
50-
- "--config=rustfmt"
51-
- "--config=clippy"
63+
test_flags:
64+
- "--enable_runfiles"
5265
build_targets: *default_windows_targets
5366
test_targets: *default_windows_targets
5467
ubuntu2004_opt:
@@ -58,24 +71,28 @@ tasks:
5871
test_targets: *default_linux_targets
5972
build_flags:
6073
- "--compilation_mode=opt"
74+
test_flags:
75+
- "--compilation_mode=opt"
6176
macos_opt:
6277
name: Opt Mode
6378
platform: macos
6479
build_targets: *default_macos_targets
6580
test_targets: *default_macos_targets
6681
build_flags:
6782
- "--compilation_mode=opt"
68-
# # TODO: https://github.com/bazelbuild/rules_rust/issues/1629
69-
# windows_opt:
70-
# name: Opt Mode
71-
# platform: windows
72-
# build_flags:
73-
# - "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
74-
# - "--config=rustfmt"
75-
# - "--config=clippy"
76-
# - "--compilation_mode=opt"
77-
# build_targets: *default_windows_targets
78-
# test_targets: *default_windows_targets
83+
test_flags:
84+
- "--compilation_mode=opt"
85+
windows_opt:
86+
name: Opt Mode
87+
platform: windows
88+
build_flags:
89+
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
90+
- "--compilation_mode=opt"
91+
test_flags:
92+
- "--enable_runfiles"
93+
- "--compilation_mode=opt"
94+
build_targets: *default_windows_targets
95+
test_targets: *default_windows_targets
7996
ubuntu2004_with_aspects:
8097
name: With Aspects
8198
platform: ubuntu2004
@@ -135,6 +152,8 @@ tasks:
135152
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
136153
- "--config=rustfmt"
137154
- "--config=clippy"
155+
test_flags:
156+
- "--enable_runfiles"
138157
build_targets: *default_windows_targets
139158
test_targets: *default_windows_targets
140159
windows_rolling_with_aspects:
@@ -144,6 +163,8 @@ tasks:
144163
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
145164
- "--config=rustfmt"
146165
- "--config=clippy"
166+
test_flags:
167+
- "--enable_runfiles"
147168
build_targets: *default_windows_targets
148169
test_targets: *default_windows_targets
149170
soft_fail: yes
@@ -194,6 +215,58 @@ tasks:
194215
build_targets: *default_linux_targets
195216
test_targets: *default_linux_targets
196217
build_flags: *aspects_flags
218+
ubuntu2004_min_rust_version:
219+
name: "Min Rust Version"
220+
platform: ubuntu2004
221+
shell_commands: *min_rust_version_shell_commands
222+
build_targets: *single_rust_channel_targets
223+
test_targets: *single_rust_channel_targets
224+
ubuntu2004_min_rust_version_with_aspects:
225+
name: "Min Rust Version With Aspects"
226+
platform: ubuntu2004
227+
shell_commands: *min_rust_version_shell_commands
228+
build_flags: *aspects_flags
229+
build_targets: *single_rust_channel_targets
230+
test_flags: *aspects_flags
231+
test_targets: *single_rust_channel_targets
232+
ubuntu2004_stable_toolchain:
233+
name: "Only Stable Toolchain"
234+
platform: ubuntu2004
235+
# Test rules while only registering a nightly toolchain
236+
shell_commands:
237+
- sed -i 's|^rust_register_toolchains(|load("//rust/private:common.bzl", "DEFAULT_RUST_VERSION")\nrust_register_toolchains(versions = [DEFAULT_RUST_VERSION],\n|' WORKSPACE.bazel
238+
build_targets: *single_rust_channel_targets
239+
test_targets: *single_rust_channel_targets
240+
ubuntu2004_stable_with_aspects:
241+
name: "Only Stable Toolchain With Aspects"
242+
platform: ubuntu2004
243+
# Test rules while only registering a nightly toolchain
244+
shell_commands:
245+
- sed -i 's|^rust_register_toolchains(|load("//rust/private:common.bzl", "DEFAULT_RUST_VERSION")\nrust_register_toolchains(versions = [DEFAULT_RUST_VERSION],\n|' WORKSPACE.bazel
246+
build_flags: *aspects_flags
247+
build_targets: *single_rust_channel_targets
248+
test_flags: *aspects_flags
249+
test_targets: *single_rust_channel_targets
250+
ubuntu2004_nightly_toolchain:
251+
name: "Only Nightly Toolchain"
252+
platform: ubuntu2004
253+
# Test rules while only registering a nightly toolchain
254+
shell_commands:
255+
- sed -i 's|^rust_register_toolchains(|load("//rust/private:common.bzl", "DEFAULT_NIGHTLY_ISO_DATE")\nrust_register_toolchains(versions = ["nightly/" + DEFAULT_NIGHTLY_ISO_DATE],\n|' WORKSPACE.bazel
256+
build_flags: *nightly_flags
257+
build_targets: *single_rust_channel_targets
258+
test_flags: *nightly_flags
259+
test_targets: *single_rust_channel_targets
260+
ubuntu2004_nightly_with_aspects:
261+
name: "Only Nightly Toolchain With Aspects"
262+
platform: ubuntu2004
263+
# Test rules while only registering a nightly toolchain
264+
shell_commands:
265+
- sed -i 's|^rust_register_toolchains(|load("//rust/private:common.bzl", "DEFAULT_NIGHTLY_ISO_DATE")\nrust_register_toolchains(versions = ["nightly/" + DEFAULT_NIGHTLY_ISO_DATE],\n|' WORKSPACE.bazel
266+
build_flags: *nightly_aspects_flags
267+
build_targets: *single_rust_channel_targets
268+
test_flags: *nightly_aspects_flags
269+
test_targets: *single_rust_channel_targets
197270
ubuntu2004_rolling_with_aspects:
198271
name: "Rolling Bazel Version With Aspects"
199272
bazel: "rolling"
@@ -219,7 +292,7 @@ tasks:
219292
name: Negative Rustfmt Tests
220293
platform: ubuntu2004
221294
run_targets:
222-
- "//test/rustfmt:test_runner"
295+
- "//test/rustfmt:rustfmt_integration_test_suite.test_runner"
223296
rust_analyzer_tests:
224297
name: Rust-Analyzer Tests
225298
platform: ubuntu2004
@@ -307,6 +380,8 @@ tasks:
307380
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
308381
- "--config=rustfmt"
309382
- "--config=clippy"
383+
test_flags:
384+
- "--enable_runfiles"
310385
windows_targets: &windows_targets
311386
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
312387
- "//..."
@@ -444,9 +519,16 @@ tasks:
444519
platform: macos
445520
working_directory: examples/ios_build
446521
test_flags:
447-
- "--platforms=//:ios_x86_64"
522+
- "--cpu=ios_x86_64"
523+
- "--apple_platform_type=ios"
448524
test_targets:
449525
- "//..."
526+
zig_cross_compiling:
527+
name: Zig cross compiling test
528+
platform: ubuntu2004
529+
working_directory: examples/zig_cross_compiling
530+
build_targets:
531+
- "//..."
450532

451533
buildifier:
452534
version: latest

.bazelrc

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1-
# `.bazelrc` is a Bazel configuration file.
2-
# https://bazel.build/docs/best-practices#bazelrc-file
1+
###############################################################################
2+
## Bazel Configuration Flags
3+
##
4+
## `.bazelrc` is a Bazel configuration file.
5+
## https://bazel.build/docs/best-practices#bazelrc-file
6+
###############################################################################
7+
8+
# https://bazel.build/docs/windows#symlink
9+
startup --windows_enable_symlinks
10+
11+
###############################################################################
12+
## Unique configuration groups
13+
###############################################################################
314

415
# Enable rustfmt for all targets in the workspace
516
build:rustfmt --aspects=//rust:defs.bzl%rustfmt_aspect
@@ -9,9 +20,22 @@ build:rustfmt --output_groups=+rustfmt_checks
920
build:clippy --aspects=//rust:defs.bzl%rust_clippy_aspect
1021
build:clippy --output_groups=+clippy_checks
1122

12-
# https://bazel.build/docs/windows#symlink
13-
startup --windows_enable_symlinks
23+
###############################################################################
24+
## Incompatibility flags
25+
###############################################################################
26+
27+
# https://github.com/bazelbuild/bazel/issues/8195
28+
build --incompatible_disallow_empty_glob=true
29+
30+
# https://github.com/bazelbuild/bazel/issues/12821
31+
build --nolegacy_external_runfiles
32+
33+
###############################################################################
34+
## Custom user flags
35+
##
36+
## This should always be the last thing in the `.bazelrc` file to ensure
37+
## consistent behavior when setting flags in that file as `.bazelrc` files are
38+
## evaluated top to bottom.
39+
###############################################################################
1440

15-
# This import should always be last to allow users to override
16-
# settings for local development.
1741
try-import %workspace%/user.bazelrc

.gitattributes

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
**/Cargo.Bazel.lock linguist-generated
2+
**/cargo-bazel-lock.json linguist-generated
3+
bindgen/3rdparty/crates/** linguist-generated
4+
crate_universe/3rdparty/crates/** linguist-generated
5+
crate_universe/test_data/metadata/*/metadata.json linguist-generated
6+
examples/crate_universe/vendor_external/crates/** linguist-generated
7+
examples/crate_universe/vendor_local_manifests/crates/** linguist-generated
8+
examples/crate_universe/vendor_local_pkgs/crates/** linguist-generated
9+
examples/crate_universe/vendor_remote_manifests/crates/** linguist-generated
10+
examples/crate_universe/vendor_remote_pkgs/crates/** linguist-generated
11+
examples/crate_universe_unnamed/vendor_remote_manifests/crates/** linguist-generated
12+
examples/crate_universe_unnamed/vendor_remote_pkgs/crates/** linguist-generated
13+
examples/sys/basic/3rdparty/crates/** linguist-generated
14+
examples/sys/complex/3rdparty/crates/** linguist-generated
15+
proto/3rdparty/crates/** linguist-generated
16+
tools/rust_analyzer/3rdparty/crates/** linguist-generated
17+
util/import/3rdparty/crates/** linguist-generated
18+
wasm_bindgen/3rdparty/crates/** linguist-generated

.github/github.bazelrc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,4 @@ build --verbose_failures
1616
# UI for cleaner CI output
1717
common --color=no
1818
common --curses=no
19-
common --show_task_finish
2019
common --show_timestamps

.github/workflows/release.yaml

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
name: Release
33
on:
44
workflow_dispatch:
5+
push:
6+
branches:
7+
- main
8+
paths:
9+
- version.bzl
510

611
defaults:
712
run:
@@ -14,7 +19,7 @@ jobs:
1419
validation:
1520
runs-on: ubuntu-20.04
1621
steps:
17-
- uses: actions/checkout@v2
22+
- uses: actions/checkout@v3
1823
# TODO: Unfortunately it's not obvious how to restrict `workflow_dispatch` to a particular branch
1924
# so this step ensures releases are always done off of `main`.
2025
- name: Ensure branch is 'main'
@@ -50,6 +55,9 @@ jobs:
5055
- os: ubuntu-20.04
5156
env:
5257
TARGET: "aarch64-unknown-linux-gnu"
58+
- os: windows-2019
59+
env:
60+
TARGET: "aarch64-pc-windows-msvc"
5361
- os: macos-11
5462
env:
5563
TARGET: "x86_64-apple-darwin"
@@ -66,13 +74,16 @@ jobs:
6674
env:
6775
TARGET: "x86_64-unknown-linux-musl"
6876
steps:
69-
- uses: actions/checkout@v2
77+
- uses: actions/checkout@v3
7078
- name: Install rust toolchains for host
7179
run: |
7280
# Detect the current version of rust
7381
version="$(grep 'DEFAULT_RUST_VERSION =' ./rust/private/common.bzl | grep -o '[[:digit:].]\+')"
7482
rustup override set "${version}"
83+
rustup target add ${TARGET}
7584
rustup update stable && rustup default stable
85+
env:
86+
TARGET: "${{ matrix.env.TARGET }}"
7687
- name: Setup macos build tooling
7788
run: |
7889
sudo xcode-select -s /Applications/Xcode_12.4.app/Contents/Developer/
@@ -95,7 +106,7 @@ jobs:
95106
bazel ${BAZEL_STARTUP_FLAGS[@]} run //crate_universe/tools/cross_installer -- --target=${TARGET} --output="${OUTPUT_PATH}"
96107
env:
97108
TARGET: "${{ matrix.env.TARGET }}"
98-
- uses: actions/upload-artifact@v2
109+
- uses: actions/upload-artifact@v3
99110
with:
100111
name: "${{ matrix.env.TARGET }}"
101112
path: ${{ github.workspace }}/crate_universe/target/artifacts/${{ matrix.env.TARGET }}
@@ -104,8 +115,8 @@ jobs:
104115
needs: builds
105116
runs-on: ubuntu-20.04
106117
steps:
107-
- uses: actions/checkout@v2
108-
- uses: actions/download-artifact@v2
118+
- uses: actions/checkout@v3
119+
- uses: actions/download-artifact@v3
109120
with:
110121
path: ${{ github.workspace }}/crate_universe/target/artifacts
111122
- name: Detect the current version
@@ -127,7 +138,7 @@ jobs:
127138
ARTIFACTS_DIR: ${{ github.workspace }}/crate_universe/target/artifacts
128139
URL_PREFIX: https://github.com/${{ github.repository_owner }}/rules_rust/releases/download/${{ env.RELEASE_VERSION }}
129140
# Upload the artifact in case creating a release fails so all artifacts can then be manually recovered.
130-
- uses: actions/upload-artifact@v2
141+
- uses: actions/upload-artifact@v3
131142
with:
132143
name: "rules_rust.tar.gz"
133144
path: ${{ github.workspace }}/.github/rules_rust.tar.gz
@@ -169,6 +180,15 @@ jobs:
169180
asset_name: cargo-bazel-aarch64-apple-darwin
170181
asset_path: ${{ github.workspace }}/crate_universe/target/artifacts/aarch64-apple-darwin/cargo-bazel
171182
asset_content_type: application/octet-stream
183+
- name: "Upload aarch64-pc-windows-msvc"
184+
uses: actions/upload-release-asset@v1
185+
env:
186+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
187+
with:
188+
upload_url: ${{ steps.rules_rust_release.outputs.upload_url }}
189+
asset_name: cargo-bazel-aarch64-pc-windows-msvc.exe
190+
asset_path: ${{ github.workspace }}/crate_universe/target/artifacts/aarch64-pc-windows-msvc/cargo-bazel.exe
191+
asset_content_type: application/octet-stream
172192
- name: "Upload aarch64-unknown-linux-gnu"
173193
uses: actions/upload-release-asset@v1
174194
env:

BUILD.bazel

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,15 @@ extra_exec_rustc_flag(
9595
visibility = ["//visibility:public"],
9696
)
9797

98+
# This setting may be used to override the prefix for source paths rustc embeds into build artifacts.
99+
# Setting this setting to a fixed value (e.g., "/source/") can help achieve reproducible builds and
100+
# improve cache utilization.
101+
source_path_prefix(
102+
name = "source_path_prefix",
103+
build_setting_default = ".",
104+
visibility = ["//visibility:public"],
105+
)
106+
98107
# This setting is used by the clippy rules. See https://bazelbuild.github.io/rules_rust/rust_clippy.html
99108
label_flag(
100109
name = "clippy.toml",

bindgen/3rdparty/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ crates_vendor(
55
name = "crates_vendor",
66
annotations = {
77
"bindgen": [crate.annotation(
8+
gen_binaries = ["bindgen"],
89
gen_build_script = True,
910
)],
1011
"clang-sys": [crate.annotation(

0 commit comments

Comments
 (0)