Skip to content

Commit b798f14

Browse files
authored
Cleanup platform configurations (#399)
* Cleaned up platform configurations and added 'unix' and 'wasm32-unknown-unknown' targets * Regenerate documentation
1 parent e77ba9a commit b798f14

File tree

10 files changed

+75
-37
lines changed

10 files changed

+75
-37
lines changed

WORKSPACE

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
workspace(name = "io_bazel_rules_rust")
22

3-
load(
4-
"@bazel_tools//tools/build_defs/repo:git.bzl",
5-
"git_repository",
6-
"new_git_repository",
7-
)
3+
load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
84
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
95

106
local_repository(
@@ -19,11 +15,16 @@ local_repository(
1915

2016
http_archive(
2117
name = "bazel_skylib",
22-
sha256 = "12ee3a5732e8c353fce4a710dbe045a16a161c49c79622faa1f2813f668bb442",
23-
strip_prefix = "bazel-skylib-8f3151fb4a91d5f2ae4cad5901ea72fe30a2aba0",
24-
url = "https://github.com/bazelbuild/bazel-skylib/archive/8f3151fb4a91d5f2ae4cad5901ea72fe30a2aba0.tar.gz", # 2020-07-10
18+
urls = [
19+
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
20+
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
21+
],
22+
sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
2523
)
2624

25+
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
26+
bazel_skylib_workspace()
27+
2728
# TODO: Move this to examples/WORKSPACE when recursive repositories are enabled.
2829
load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories")
2930
rust_repositories()

docs/WORKSPACE

+8-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ local_repository(
88

99
http_archive(
1010
name = "bazel_skylib",
11-
sha256 = "9a737999532daca978a158f94e77e9af6a6a169709c0cee274f0a4c3359519bd",
12-
strip_prefix = "bazel-skylib-1.0.0",
13-
url = "https://github.com/bazelbuild/bazel-skylib/archive/1.0.0.tar.gz",
11+
urls = [
12+
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
13+
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
14+
],
15+
sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
1416
)
1517

18+
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
19+
bazel_skylib_workspace()
20+
1621
http_archive(
1722
name = "io_bazel_stardoc",
1823
urls = [

docs/cargo_build_script.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
## cargo_build_script
77

88
<pre>
9-
cargo_build_script(<a href="#cargo_build_script-name">name</a>, <a href="#cargo_build_script-crate_name">crate_name</a>, <a href="#cargo_build_script-crate_features">crate_features</a>, <a href="#cargo_build_script-deps">deps</a>, <a href="#cargo_build_script-build_script_env">build_script_env</a>, <a href="#cargo_build_script-kwargs">kwargs</a>)
9+
cargo_build_script(<a href="#cargo_build_script-name">name</a>, <a href="#cargo_build_script-crate_name">crate_name</a>, <a href="#cargo_build_script-crate_features">crate_features</a>, <a href="#cargo_build_script-version">version</a>, <a href="#cargo_build_script-deps">deps</a>, <a href="#cargo_build_script-build_script_env">build_script_env</a>, <a href="#cargo_build_script-kwargs">kwargs</a>)
1010
</pre>
1111

1212
Compile and execute a rust build script to generate build attributes
@@ -66,6 +66,7 @@ build script in addition to the file generated by it.
6666
| <a id="cargo_build_script-name"></a>name | <p align="center"> - </p> | none |
6767
| <a id="cargo_build_script-crate_name"></a>crate_name | <p align="center"> - </p> | <code>""</code> |
6868
| <a id="cargo_build_script-crate_features"></a>crate_features | <p align="center"> - </p> | <code>[]</code> |
69+
| <a id="cargo_build_script-version"></a>version | <p align="center"> - </p> | <code>None</code> |
6970
| <a id="cargo_build_script-deps"></a>deps | <p align="center"> - </p> | <code>[]</code> |
7071
| <a id="cargo_build_script-build_script_env"></a>build_script_env | <p align="center"> - </p> | <code>{}</code> |
7172
| <a id="cargo_build_script-kwargs"></a>kwargs | <p align="center"> - </p> | none |

docs/flatten.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,7 @@ The tools required for the `rust_wasm_bindgen` rule.
823823
## cargo_build_script
824824

825825
<pre>
826-
cargo_build_script(<a href="#cargo_build_script-name">name</a>, <a href="#cargo_build_script-crate_name">crate_name</a>, <a href="#cargo_build_script-crate_features">crate_features</a>, <a href="#cargo_build_script-deps">deps</a>, <a href="#cargo_build_script-build_script_env">build_script_env</a>, <a href="#cargo_build_script-kwargs">kwargs</a>)
826+
cargo_build_script(<a href="#cargo_build_script-name">name</a>, <a href="#cargo_build_script-crate_name">crate_name</a>, <a href="#cargo_build_script-crate_features">crate_features</a>, <a href="#cargo_build_script-version">version</a>, <a href="#cargo_build_script-deps">deps</a>, <a href="#cargo_build_script-build_script_env">build_script_env</a>, <a href="#cargo_build_script-kwargs">kwargs</a>)
827827
</pre>
828828

829829
Compile and execute a rust build script to generate build attributes
@@ -883,6 +883,7 @@ build script in addition to the file generated by it.
883883
| <a id="cargo_build_script-name"></a>name | <p align="center"> - </p> | none |
884884
| <a id="cargo_build_script-crate_name"></a>crate_name | <p align="center"> - </p> | <code>""</code> |
885885
| <a id="cargo_build_script-crate_features"></a>crate_features | <p align="center"> - </p> | <code>[]</code> |
886+
| <a id="cargo_build_script-version"></a>version | <p align="center"> - </p> | <code>None</code> |
886887
| <a id="cargo_build_script-deps"></a>deps | <p align="center"> - </p> | <code>[]</code> |
887888
| <a id="cargo_build_script-build_script_env"></a>build_script_env | <p align="center"> - </p> | <code>{}</code> |
888889
| <a id="cargo_build_script-kwargs"></a>kwargs | <p align="center"> - </p> | none |

docs/index.md

+12-7
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ To use the Rust rules, add the following to your `WORKSPACE` file to add the ext
1616
```python
1717
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
1818

19+
http_archive(
20+
name = "bazel_skylib",
21+
urls = [
22+
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
23+
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
24+
],
25+
sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
26+
)
27+
28+
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
29+
bazel_skylib_workspace()
30+
1931
http_archive(
2032
name = "io_bazel_rules_rust",
2133
sha256 = "b6da34e057a31b8a85e343c732de4af92a762f804fc36b0baa6c001423a70ebc",
@@ -26,13 +38,6 @@ http_archive(
2638
],
2739
)
2840

29-
http_archive(
30-
name = "bazel_skylib",
31-
sha256 = "9a737999532daca978a158f94e77e9af6a6a169709c0cee274f0a4c3359519bd",
32-
strip_prefix = "bazel-skylib-1.0.0",
33-
url = "https://github.com/bazelbuild/bazel-skylib/archive/1.0.0.tar.gz",
34-
)
35-
3641
load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories")
3742
rust_repositories()
3843

examples/WORKSPACE

+6-4
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,16 @@ rust_proto_repositories()
4747

4848
http_archive(
4949
name = "bazel_skylib",
50-
sha256 = "eb5c57e4c12e68c0c20bc774bfbc60a568e800d025557bc4ea022c6479acc867",
51-
strip_prefix = "bazel-skylib-0.6.0",
5250
urls = [
53-
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/archive/0.6.0.tar.gz",
54-
"https://github.com/bazelbuild/bazel-skylib/archive/0.6.0.tar.gz",
51+
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
52+
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
5553
],
54+
sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
5655
)
5756

57+
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
58+
bazel_skylib_workspace()
59+
5860
http_archive(
5961
name = "build_bazel_rules_nodejs",
6062
sha256 = "e1a0d6eb40ec89f61a13a028e7113aa3630247253bcb1406281b627e44395145",

proto/repositories.bzl

+3-5
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,11 @@ def rust_proto_repositories():
4444
maybe(
4545
http_archive,
4646
name = "bazel_skylib",
47-
strip_prefix = "bazel-skylib-1.0.2",
4847
urls = [
49-
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/archive/1.0.2.zip",
50-
"https://github.com/bazelbuild/bazel-skylib/archive/1.0.2.zip",
48+
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
49+
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
5150
],
52-
type = "zip",
53-
sha256 = "64ad2728ccdd2044216e4cec7815918b7bb3bb28c95b7e9d951f9d4eccb07625",
51+
sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
5452
)
5553

5654
maybe(

rust/platform/BUILD

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package(default_visibility = ["//visibility:public"])
2-
31
load(":platform.bzl", "declare_config_settings")
42

3+
package(default_visibility = ["//visibility:public"])
4+
55
declare_config_settings()
66

77
package_group(

rust/platform/platform.bzl

+21-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
"""Definitions for support config settings and platform definitions"""
2+
3+
load("@bazel_skylib//lib:selects.bzl", "selects")
14
load(
25
":triple_mappings.bzl",
36
"cpu_arch_to_constraints",
@@ -26,35 +29,38 @@ _SUPPORTED_T2_PLATFORM_TRIPLES = [
2629
"aarch64-apple-ios",
2730
"aarch64-linux-android",
2831
"aarch64-unknown-linux-gnu",
29-
"powerpc-unknown-linux-gnu",
3032
"arm-unknown-linux-gnueabi",
31-
"s390x-unknown-linux-gnu",
3233
"i686-linux-android",
3334
"i686-unknown-freebsd",
35+
"powerpc-unknown-linux-gnu",
36+
"s390x-unknown-linux-gnu",
37+
"wasm32-unknown-unknown",
3438
"x86_64-apple-ios",
3539
"x86_64-linux-android",
3640
"x86_64-unknown-freebsd",
3741
]
3842

3943
_SUPPORTED_CPU_ARCH = [
40-
"x86_64",
41-
"powerpc",
4244
"aarch64",
4345
"arm",
4446
"i686",
47+
"powerpc",
4548
"s390x",
49+
"x86_64",
4650
]
4751

4852
_SUPPORTED_SYSTEMS = [
4953
"android",
50-
"freebsd",
5154
"darwin",
55+
"freebsd",
5256
"ios",
5357
"linux",
5458
"windows",
5559
]
5660

61+
# buildifier: disable=unnamed-macro
5762
def declare_config_settings():
63+
"""Helper function for declaring `config_setting`s"""
5864
for cpu_arch in _SUPPORTED_CPU_ARCH:
5965
native.config_setting(
6066
name = cpu_arch,
@@ -91,3 +97,13 @@ def declare_config_settings():
9197
"@io_bazel_rules_rust//rust/platform:wasm32",
9298
],
9399
)
100+
101+
selects.config_setting_group(
102+
name = "unix",
103+
match_any = [
104+
":android",
105+
":darwin",
106+
":freebsd",
107+
":linux",
108+
],
109+
)

rust/platform/triple_mappings.bzl

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
"""Helpers for constructing supported Rust platform triples"""
2+
13
# CPUs that map to a "@platforms//cpu entry
24
_CPU_ARCH_TO_BUILTIN_PLAT_SUFFIX = {
35
"x86_64": "x86_64",
@@ -80,7 +82,6 @@ _SYSTEM_TO_STDLIB_LINKFLAGS = {
8082
# If you are reading this ... sorry! set the env var `BAZEL_RUST_STDLIB_LINKFLAGS` to
8183
# what you need for your specific setup, for example like so
8284
# `BAZEL_RUST_STDLIB_LINKFLAGS="-ladvapi32:-lws2_32:-luserenv"`
83-
8485
"freebsd": ["-lexecinfo", "-lpthread"],
8586
# TODO: This ignores musl. Longer term what does Bazel think about musl?
8687
"linux": ["-ldl", "-lpthread"],
@@ -155,6 +156,14 @@ def system_to_stdlib_linkflags(system):
155156
return _SYSTEM_TO_STDLIB_LINKFLAGS[system]
156157

157158
def triple_to_constraint_set(triple):
159+
"""Returns a set of constraints for a given platform triple
160+
161+
Args:
162+
triple (str): A platform triple. eg: `x86_64-unknown-linux-gnu`
163+
164+
Returns:
165+
list: A list of constraints (each represented by a list of strings)
166+
"""
158167
component_parts = triple.split("-")
159168
if len(component_parts) < 3:
160169
fail("Expected target triple to contain at least three sections separated by '-'")

0 commit comments

Comments
 (0)