Skip to content

Commit e8f3393

Browse files
authored
Allow bootstrapping stdlib from source (#118)
1 parent df48006 commit e8f3393

17 files changed

Lines changed: 1086 additions & 93 deletions

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ bazel_dep(name = "protobuf", version = "34.0.bcr.1", repo_name = "com_google_pro
5858
bazel_dep(name = "rules_cc", version = "0.2.8")
5959
bazel_dep(name = "rules_proto", version = "7.1.0")
6060
bazel_dep(name = "rules_python", version = "1.6.3")
61-
bazel_dep(name = "llvm", version = "0.7.7")
61+
bazel_dep(name = "llvm", version = "0.8.0")
6262
bazel_dep(name = "aspect_tools_telemetry", version = "0.3.3")
6363

6464
osx = use_extension("@llvm//extensions:osx.bzl", "osx")

MODULE.bazel.lock

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rs/extensions.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def _generate_hub_and_spokes(
123123

124124
mctx.report_progress("Reading workspace metadata")
125125
result = mctx.execute(
126-
[cargo_path, "metadata", "--no-deps", "--format-version=1", "--quiet"],
126+
[cargo_path, "metadata", "--no-deps", "--locked", "--format-version=1", "--quiet"],
127127
working_directory = str(mctx.path(cargo_lock_path).dirname),
128128
)
129129
if result.return_code != 0:
@@ -255,7 +255,6 @@ def _generate_hub_and_spokes(
255255

256256
workspace_resolution = resolve_cargo_workspace_members(
257257
mctx,
258-
hub_name = hub_name,
259258
cargo_metadata = cargo_metadata,
260259
packages = packages,
261260
workspace_members = workspace_members,
@@ -266,6 +265,7 @@ def _generate_hub_and_spokes(
266265
materialize_workspace_members = False,
267266
validate_lockfile = validate_lockfile,
268267
debug = debug,
268+
dep_label_prefix = "@%s//:" % hub_name,
269269
watch_manifests = watch_manifests,
270270
use_legacy_rules_rust_platforms = use_legacy_rules_rust_platforms,
271271
)

rs/platforms/config/declare_config_settings.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"""Config settings for Rust target triples."""
22

3-
load("//rs/platforms:triples.bzl", "SUPPORTED_TARGET_TRIPLES", "triple_to_constraint_set")
3+
load("//rs/platforms:triples.bzl", "ALL_TARGET_TRIPLES", "triple_to_constraint_set")
44

5-
def declare_config_settings(targets = SUPPORTED_TARGET_TRIPLES):
5+
def declare_config_settings(targets = ALL_TARGET_TRIPLES):
66
for target_triple in targets:
77
native.config_setting(
88
name = target_triple,

rs/platforms/declare_platforms.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"""Platform definitions for Rust target triples."""
22

3-
load("//rs/platforms:triples.bzl", "SUPPORTED_TARGET_TRIPLES", "triple_to_constraint_set")
3+
load("//rs/platforms:triples.bzl", "ALL_TARGET_TRIPLES", "triple_to_constraint_set")
44

5-
def declare_platforms(targets = SUPPORTED_TARGET_TRIPLES):
5+
def declare_platforms(targets = ALL_TARGET_TRIPLES):
66
for target_triple in targets:
77
native.platform(
88
name = target_triple,

rs/platforms/triples.bzl

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ SUPPORTED_EXEC_TRIPLES = [
3636
]
3737

3838
# See https://doc.rust-lang.org/beta/rustc/platform-support.html
39-
SUPPORTED_TARGET_TRIPLES = [
39+
SUPPORTED_TIER_1_AND_2_TRIPLES = [
4040
# Tier 1
4141
"aarch64-apple-darwin", # ARM64 macOS (11.0+, Big Sur+)
4242
"aarch64-pc-windows-msvc", # ARM64 Windows MSVC
@@ -142,6 +142,40 @@ SUPPORTED_TARGET_TRIPLES = [
142142
"x86_64-unknown-none", # * Freestanding/bare-metal x86_64, softfloat
143143
#"x86_64-unknown-redox", # ✓ Redox OS
144144
"x86_64-unknown-uefi", # ? 64-bit UEFI
145+
]
145146

146-
# No Tier3 support.
147+
SUPPORTED_TIER_3_TRIPLES = [
148+
"aarch64-unknown-freebsd",
149+
"aarch64-unknown-netbsd",
150+
"aarch64-unknown-nto-qnx710",
151+
"aarch64-unknown-openbsd",
152+
"arm64e-apple-darwin",
153+
"arm64e-apple-ios",
154+
"armv7-unknown-freebsd",
155+
"armv7-unknown-netbsd-eabihf",
156+
"bpfeb-unknown-none",
157+
"bpfel-unknown-none",
158+
"i386-apple-ios",
159+
"i686-apple-darwin",
160+
"i686-unknown-netbsd",
161+
"i686-unknown-openbsd",
162+
"powerpc-unknown-freebsd",
163+
"powerpc-unknown-linux-musl",
164+
"powerpc-unknown-netbsd",
165+
"powerpc-unknown-openbsd",
166+
"powerpc64-unknown-freebsd",
167+
"powerpc64-unknown-openbsd",
168+
"powerpc64le-unknown-freebsd",
169+
"riscv64-linux-android",
170+
"riscv64gc-unknown-freebsd",
171+
"riscv64gc-unknown-fuchsia",
172+
"riscv64gc-unknown-netbsd",
173+
"riscv64gc-unknown-openbsd",
174+
"s390x-unknown-linux-musl",
175+
"sparc64-unknown-netbsd",
176+
"sparc64-unknown-openbsd",
177+
"wasm64-unknown-unknown",
178+
"x86_64-unknown-openbsd",
147179
]
180+
181+
ALL_TARGET_TRIPLES = SUPPORTED_TIER_1_AND_2_TRIPLES + SUPPORTED_TIER_3_TRIPLES

rs/private/BUILD.bazel

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,28 @@
11
load("@bazel_lib//:bzl_library.bzl", "bzl_library")
2+
load("@bazel_skylib//rules:common_settings.bzl", "bool_setting")
3+
load("@rules_rust//rust:defs.bzl", "rust_stdlib_filegroup")
24
load(":all_crate_deps_test.bzl", "all_crate_deps_tests")
5+
load(":cargo_workspace_graph_test.bzl", "cargo_workspace_graph_tests")
36
load(":cfg_parser_test.bzl", "cfg_parser_tests")
47
load(":lint_flags_test.bzl", "lint_flags_tests")
58
load(":semver_test.bzl", "semver_select_tests")
69

10+
bool_setting(
11+
name = "source_stdlib_building",
12+
build_setting_default = False,
13+
visibility = ["//visibility:public"],
14+
)
15+
16+
rust_stdlib_filegroup(
17+
name = "empty_stdlib",
18+
srcs = [],
19+
visibility = ["//visibility:public"],
20+
)
21+
722
all_crate_deps_tests()
823

24+
cargo_workspace_graph_tests()
25+
926
cfg_parser_tests()
1027

1128
lint_flags_tests()
@@ -108,6 +125,13 @@ bzl_library(
108125
deps = ["@bazel_lib//lib:repo_utils"],
109126
)
110127

128+
bzl_library(
129+
name = "source_stdlib",
130+
srcs = ["source_stdlib.bzl"],
131+
visibility = ["//rs:__subpackages__"],
132+
deps = ["@rules_rust//rust:bzl_lib"],
133+
)
134+
111135
bzl_library(
112136
name = "git_cargo_workspace_repository",
113137
srcs = ["git_cargo_workspace_repository.bzl"],
@@ -173,6 +197,21 @@ bzl_library(
173197
],
174198
)
175199

200+
bzl_library(
201+
name = "rustc_src_repository",
202+
srcs = ["rustc_src_repository.bzl"],
203+
visibility = ["//rs:__subpackages__"],
204+
deps = [
205+
":cargo_workspace_graph",
206+
":repository_utils",
207+
":toml2json",
208+
"//rs/platforms:triples",
209+
"@bazel_skylib//lib:paths",
210+
"@bazel_tools//tools/build_defs/repo:utils.bzl",
211+
"@rules_rust//rust/private:bzl_lib",
212+
],
213+
)
214+
176215
bzl_library(
177216
name = "rustc_repository",
178217
srcs = ["rustc_repository.bzl"],

0 commit comments

Comments
 (0)