Skip to content

Commit 757ad79

Browse files
committed
[bazel] Use hermetic Python
1 parent 0bbae74 commit 757ad79

13 files changed

+31
-7
lines changed

bazel/deps.bzl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,10 @@ def deps():
2323
sha256 = "dcc55f810142b6cf46a44d0180a5a7fb923c04a5061e2e8d8eb05ccccc60864b",
2424
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.8.0/rules_nodejs-5.8.0.tar.gz"],
2525
)
26+
maybe(
27+
http_archive,
28+
name = "rules_python",
29+
sha256 = "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8",
30+
strip_prefix = "rules_python-0.28.0",
31+
url = "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz",
32+
)

bazel/emscripten_deps.bzl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
22
load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install")
3+
load("@rules_python//python:repositories.bzl", "py_repositories", "python_register_toolchains")
34
load(":revisions.bzl", "EMSCRIPTEN_TAGS")
45

56
def _parse_version(v):
@@ -206,3 +207,11 @@ def emscripten_deps(emscripten_version = "latest"):
206207
package_json = "@emscripten_bin_win//:emscripten/package.json",
207208
package_lock_json = "@emscripten_bin_win//:emscripten/package-lock.json",
208209
)
210+
211+
if "python_toolchains" not in excludes:
212+
py_repositories()
213+
python_register_toolchains(
214+
name = "python_3_11",
215+
# Available versions are listed in @rules_python//python:versions.bzl.
216+
python_version = "3.11",
217+
)

bazel/emscripten_toolchain/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
load("@python_3_11//:defs.bzl", "py_binary")
12
load(":toolchain.bzl", "emscripten_cc_toolchain_config_rule")
23

34
package(default_visibility = ["//visibility:public"])
@@ -9,6 +10,7 @@ filegroup(
910
"env.sh",
1011
"env.bat",
1112
"@nodejs//:node_files",
13+
"@python_3_11//:python3",
1214
],
1315
)
1416

bazel/emscripten_toolchain/emar.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
call external\emsdk\emscripten_toolchain\env.bat
44

5-
py -3 %EMSCRIPTEN%\emar.py %*
5+
%EMSDK_PYTHON% %EMSCRIPTEN%\emar.py %*

bazel/emscripten_toolchain/emar.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
source $(dirname $0)/env.sh
44

5-
exec python3 $EMSCRIPTEN/emar.py "$@"
5+
exec $EMSDK_PYTHON $EMSCRIPTEN/emar.py "$@"

bazel/emscripten_toolchain/emcc.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
call external\emsdk\emscripten_toolchain\env.bat
44

5-
py -3 %EMSCRIPTEN%\emcc.py %*
5+
%EMSDK_PYTHON% %EMSCRIPTEN%\emcc.py %*

bazel/emscripten_toolchain/emcc.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
source $(dirname $0)/env.sh
44

5-
exec python3 $EMSCRIPTEN/emcc.py "$@"
5+
exec $EMSDK_PYTHON $EMSCRIPTEN/emcc.py "$@"

bazel/emscripten_toolchain/emcc_link.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
call external\emsdk\emscripten_toolchain\env.bat
44

5-
py -3 external\emsdk\emscripten_toolchain\link_wrapper.py %*
5+
%EMSDK_PYTHON% external\emsdk\emscripten_toolchain\link_wrapper.py %*

bazel/emscripten_toolchain/emcc_link.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
source $(dirname $0)/env.sh
44

5-
exec python3 $(dirname $0)/link_wrapper.py "$@"
5+
exec $EMSDK_PYTHON $(dirname $0)/link_wrapper.py "$@"

bazel/emscripten_toolchain/env.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
set ROOT_DIR=%CD%
44
set EMSCRIPTEN=%ROOT_DIR%\%EM_BIN_PATH%\emscripten
55
set EM_CONFIG=%ROOT_DIR%\%EM_CONFIG_PATH%
6+
set EMSDK_PYTHON=%ROOT_DIR%\%EM_PYTHON_PATH%

bazel/emscripten_toolchain/env.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
export ROOT_DIR=${EXT_BUILD_ROOT:-$(pwd -P)}
44
export EMSCRIPTEN=$ROOT_DIR/$EM_BIN_PATH/emscripten
55
export EM_CONFIG=$ROOT_DIR/$EM_CONFIG_PATH
6+
export EMSDK_PYTHON=$ROOT_DIR/$EM_PYTHON_PATH

bazel/emscripten_toolchain/link_wrapper.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#!/usr/bin/env python
21
"""wrapper around emcc link step.
32
43
This wrapper currently serves the following purposes.

bazel/emscripten_toolchain/toolchain.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,6 +1040,10 @@ def _impl(ctx):
10401040
key = "EM_CONFIG_PATH",
10411041
value = ctx.file.em_config.path,
10421042
),
1043+
env_entry(
1044+
key = "EM_PYTHON_PATH",
1045+
value = ctx.file._python_interpreter.path,
1046+
),
10431047
],
10441048
),
10451049
# Use llvm backend. Off by default, enabled via --features=llvm_backend
@@ -1115,6 +1119,7 @@ emscripten_cc_toolchain_config_rule = rule(
11151119
"em_config": attr.label(mandatory = True, allow_single_file = True),
11161120
"emscripten_binaries": attr.label(mandatory = True, cfg = "exec"),
11171121
"script_extension": attr.string(mandatory = True, values = ["sh", "bat"]),
1122+
"_python_interpreter": attr.label(allow_single_file = True, cfg = "exec", default = Label("@python_3_11//:python3")),
11181123
},
11191124
provides = [CcToolchainConfigInfo],
11201125
)

0 commit comments

Comments
 (0)