Skip to content

Commit a2510ba

Browse files
committed
Upgrade Bazel 8 toolchain and fix directory outputs
1 parent 70b8167 commit a2510ba

10 files changed

Lines changed: 200 additions & 57 deletions

File tree

WORKSPACE

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,26 @@ load("//envpool:workspace0.bzl", workspace0 = "workspace")
44

55
workspace0()
66

7+
load("@bazel_features//:deps.bzl", "bazel_features_deps")
8+
9+
bazel_features_deps()
10+
11+
load("@rules_cc//cc:extensions.bzl", "compatibility_proxy_repo")
12+
13+
compatibility_proxy_repo()
14+
15+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
16+
17+
protobuf_deps()
18+
19+
load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
20+
21+
rules_java_dependencies()
22+
23+
load("@rules_java//java:repositories.bzl", "rules_java_toolchains")
24+
25+
rules_java_toolchains()
26+
727
load("@rules_python//python:repositories.bzl", "py_repositories")
828

929
py_repositories()

envpool/atari/BUILD

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@ load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")
1616
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
1717
load("@rules_python//python:defs.bzl", "py_library", "py_test")
1818
load("//envpool:requirements.bzl", "requirement")
19+
load("//third_party:common.bzl", "copy_to_directory")
1920

2021
package(default_visibility = ["//visibility:public"])
2122

22-
genrule(
23+
copy_to_directory(
2324
name = "gen_atari_roms",
2425
srcs = ["@atari_roms//:roms"],
25-
outs = ["roms"],
26-
cmd = "mkdir -p $(OUTS) && cp $(SRCS) $(OUTS)",
26+
out = "roms",
27+
strip_prefix = "ROM/",
28+
flatten = True,
2729
)
2830

2931
genrule(

envpool/mujoco/BUILD

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,25 @@ load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")
1616
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
1717
load("@rules_python//python:defs.bzl", "py_library", "py_test")
1818
load("//envpool:requirements.bzl", "requirement")
19+
load("//third_party:common.bzl", "copy_to_directory")
1920

2021
package(default_visibility = ["//visibility:public"])
2122

22-
genrule(
23+
copy_to_directory(
2324
name = "gen_mujoco_gym_xml",
2425
srcs = [
2526
"@mujoco_gym_xml",
2627
"//third_party/mujoco_gym_xml_patches:patches",
2728
],
28-
outs = ["assets_gym"],
29-
cmd = """
30-
mkdir -p $(OUTS)
31-
cp -r $(locations @mujoco_gym_xml) $(OUTS)
32-
cp -r $(locations //third_party/mujoco_gym_xml_patches:patches) $(OUTS)
33-
""",
29+
out = "assets_gym",
30+
strip_prefix = "assets/",
3431
)
3532

36-
genrule(
33+
copy_to_directory(
3734
name = "gen_mujoco_dmc_xml",
3835
srcs = ["@mujoco_dmc_xml"],
39-
outs = ["assets_dmc"],
40-
cmd = "mkdir -p $(OUTS) && cp -r $(SRCS) $(OUTS)",
36+
out = "assets_dmc",
37+
strip_prefix = "suite/",
4138
)
4239

4340
genrule(

envpool/procgen/BUILD

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@ load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")
1616
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
1717
load("@rules_python//python:defs.bzl", "py_library", "py_test")
1818
load("//envpool:requirements.bzl", "requirement")
19+
load("//third_party:common.bzl", "copy_to_directory")
1920

2021
package(default_visibility = ["//visibility:public"])
2122

22-
genrule(
23+
copy_to_directory(
2324
name = "gen_procgen_assets",
2425
srcs = ["@procgen//:procgen_assets"],
25-
outs = ["assets"],
26-
cmd = "mkdir -p $(OUTS) && cp -r $(SRCS) $(OUTS)",
26+
out = "assets",
27+
strip_prefix = "data/assets/",
2728
)
2829

2930
cc_library(

envpool/vizdoom/BUILD

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,63 @@ genrule(
3737
"@vizdoom_lib//:vizdoom_maps",
3838
"@vizdoom_extra_maps//:vizdoom_maps",
3939
],
40-
outs = ["maps"],
41-
cmd = "mkdir -p $(OUTS) && cp $(SRCS) $(OUTS)",
40+
outs = [
41+
"maps/D1_basic.cfg",
42+
"maps/D1_basic.wad",
43+
"maps/D2_navigation.cfg",
44+
"maps/D2_navigation.wad",
45+
"maps/D3_battle.cfg",
46+
"maps/D3_battle.wad",
47+
"maps/D4_battle2.cfg",
48+
"maps/D4_battle2.wad",
49+
"maps/basic.cfg",
50+
"maps/basic.wad",
51+
"maps/basic_audio.cfg",
52+
"maps/basic_audio.wad",
53+
"maps/basic_notifications.cfg",
54+
"maps/basic_notifications.wad",
55+
"maps/cig.cfg",
56+
"maps/cig.wad",
57+
"maps/cig_with_unknown.wad",
58+
"maps/deadly_corridor.cfg",
59+
"maps/deadly_corridor.wad",
60+
"maps/deathmatch.cfg",
61+
"maps/deathmatch.wad",
62+
"maps/defend_the_center.cfg",
63+
"maps/defend_the_center.wad",
64+
"maps/defend_the_line.cfg",
65+
"maps/defend_the_line.wad",
66+
"maps/doom.cfg",
67+
"maps/doom2.cfg",
68+
"maps/freedoom1.cfg",
69+
"maps/freedoom2.cfg",
70+
"maps/health_gathering.cfg",
71+
"maps/health_gathering.wad",
72+
"maps/health_gathering_supreme.cfg",
73+
"maps/health_gathering_supreme.wad",
74+
"maps/learning.cfg",
75+
"maps/multi.cfg",
76+
"maps/multi_deathmatch.wad",
77+
"maps/multi_duel.cfg",
78+
"maps/multi_duel.wad",
79+
"maps/my_way_home.cfg",
80+
"maps/my_way_home.wad",
81+
"maps/oblige.cfg",
82+
"maps/predict_position.cfg",
83+
"maps/predict_position.wad",
84+
"maps/rocket_basic.cfg",
85+
"maps/rocket_basic.wad",
86+
"maps/simpler_basic.cfg",
87+
"maps/simpler_basic.wad",
88+
"maps/take_cover.cfg",
89+
"maps/take_cover.wad",
90+
],
91+
cmd = """
92+
mkdir -p "$(@D)/maps"
93+
for src in $(SRCS); do
94+
cp "$${src}" "$(@D)/maps/$$(basename "$${src}")"
95+
done
96+
""",
4297
)
4398

4499
cc_library(

envpool/workspace0.bzl

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,64 @@ load("//third_party/cuda:cuda.bzl", "cuda_configure")
2121
def workspace():
2222
"""Load requested packages."""
2323

24-
# Keep a WORKSPACE-compatible stable rules_python release.
2524
maybe(
2625
http_archive,
27-
name = "rules_python",
28-
patches = [
29-
"//third_party/rules_python:py_repositories_protobuf34.patch",
26+
name = "rules_cc",
27+
sha256 = "283fa1cdaaf172337898749cf4b9b1ef5ea269da59540954e51fba0e7b8f277a",
28+
strip_prefix = "rules_cc-0.2.17",
29+
urls = [
30+
"https://github.com/bazelbuild/rules_cc/releases/download/0.2.17/rules_cc-0.2.17.tar.gz",
31+
],
32+
)
33+
34+
maybe(
35+
http_archive,
36+
name = "rules_java",
37+
sha256 = "9de4e178c2c4f98d32aafe5194c3f2b717ae10405caa11bdcb460ac2a6f61516",
38+
urls = [
39+
"https://github.com/bazelbuild/rules_java/releases/download/9.6.1/rules_java-9.6.1.tar.gz",
40+
],
41+
)
42+
43+
# Keep both repo names while this WORKSPACE still mixes legacy rules_python
44+
# and newer rules_cc/rules_java consumers.
45+
maybe(
46+
http_archive,
47+
name = "protobuf",
48+
sha256 = "9f0933ad12abb0a8957b3b64aefc34774ccbe57f77f890c66cb4067519bb83c1",
49+
strip_prefix = "protobuf-34.1",
50+
urls = [
51+
"https://github.com/protocolbuffers/protobuf/releases/download/v34.1/protobuf-34.1.bazel.tar.gz",
3052
],
31-
sha256 = "690e0141724abb568267e003c7b6d9a54925df40c275a870a4d934161dc9dd53",
32-
strip_prefix = "rules_python-0.40.0",
53+
)
54+
55+
maybe(
56+
http_archive,
57+
name = "com_google_protobuf",
58+
sha256 = "9f0933ad12abb0a8957b3b64aefc34774ccbe57f77f890c66cb4067519bb83c1",
59+
strip_prefix = "protobuf-34.1",
60+
urls = [
61+
"https://github.com/protocolbuffers/protobuf/releases/download/v34.1/protobuf-34.1.bazel.tar.gz",
62+
],
63+
)
64+
65+
maybe(
66+
http_archive,
67+
name = "rules_python",
68+
sha256 = "2f5c284fbb4e86045c2632d3573fc006facbca5d1fa02976e89dc0cd5488b590",
69+
strip_prefix = "rules_python-1.6.3",
3370
urls = [
34-
"https://github.com/bazelbuild/rules_python/releases/download/0.40.0/rules_python-0.40.0.tar.gz",
71+
"https://github.com/bazelbuild/rules_python/releases/download/1.6.3/rules_python-1.6.3.tar.gz",
3572
],
3673
)
3774

3875
maybe(
3976
http_archive,
4077
name = "rules_foreign_cc",
41-
sha256 = "a2e6fb56e649c1ee79703e99aa0c9d13c6cc53c8d7a0cbb8797ab2888bbc99a3",
42-
strip_prefix = "rules_foreign_cc-0.12.0",
78+
sha256 = "32759728913c376ba45b0116869b71b68b1c2ebf8f2bcf7b41222bc07b773d73",
79+
strip_prefix = "rules_foreign_cc-0.15.1",
4380
urls = [
44-
"https://github.com/bazelbuild/rules_foreign_cc/releases/download/0.12.0/rules_foreign_cc-0.12.0.tar.gz",
81+
"https://github.com/bazel-contrib/rules_foreign_cc/releases/download/0.15.1/rules_foreign_cc-0.15.1.tar.gz",
4582
],
4683
)
4784

envpool/workspace1.bzl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"""EnvPool workspace initialization, load after workspace0."""
1616

1717
load("@com_github_nelhage_rules_boost//:boost/boost.bzl", "boost_deps")
18-
load("@bazel_features//:deps.bzl", "bazel_features_deps")
1918
load("@com_justbuchanan_rules_qt//:qt_configure.bzl", "qt_configure")
2019
load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")
2120
load("@rules_python//python:repositories.bzl", "python_register_toolchains")
@@ -34,8 +33,6 @@ def workspace():
3433
register_built_pkgconfig_toolchain = False,
3534
)
3635

37-
bazel_features_deps()
38-
3936
boost_deps()
4037

4138
qt_configure()

third_party/common.bzl

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,63 @@ template_rule = rule(
5959
output_to_genfiles = True,
6060
implementation = template_rule_impl,
6161
)
62+
63+
def _copy_to_directory_impl(ctx):
64+
out = ctx.actions.declare_directory(ctx.attr.out)
65+
strip_prefix = ctx.attr.strip_prefix
66+
flatten = "1" if ctx.attr.flatten else "0"
67+
68+
args = ctx.actions.args()
69+
args.add(out.path)
70+
args.add(strip_prefix)
71+
args.add(flatten)
72+
args.add_all([src.path for src in ctx.files.srcs])
73+
74+
ctx.actions.run_shell(
75+
inputs = ctx.files.srcs,
76+
outputs = [out],
77+
arguments = [args],
78+
command = """
79+
set -eu
80+
81+
out="$1"
82+
strip_prefix="$2"
83+
flatten="$3"
84+
shift 3
85+
86+
mkdir -p "$out"
87+
for src in "$@"; do
88+
if [ "$flatten" = "1" ]; then
89+
rel="$(basename "$src")"
90+
else
91+
rel="${src#*${strip_prefix}}"
92+
if [ "$rel" = "$src" ]; then
93+
rel="$(basename "$src")"
94+
fi
95+
fi
96+
dst="$out/$rel"
97+
mkdir -p "$(dirname "$dst")"
98+
cp -R "$src" "$dst"
99+
done
100+
""",
101+
)
102+
103+
return [
104+
DefaultInfo(
105+
files = depset([out]),
106+
runfiles = ctx.runfiles(files = [out]),
107+
),
108+
]
109+
110+
copy_to_directory = rule(
111+
implementation = _copy_to_directory_impl,
112+
attrs = {
113+
"srcs": attr.label_list(
114+
allow_files = True,
115+
mandatory = True,
116+
),
117+
"out": attr.string(mandatory = True),
118+
"strip_prefix": attr.string(mandatory = True),
119+
"flatten": attr.bool(default = False),
120+
},
121+
)

third_party/rules_python/BUILD

Lines changed: 0 additions & 1 deletion
This file was deleted.

third_party/rules_python/py_repositories_protobuf34.patch

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)