Minor crimes to deal with platform-variable pythons

This commit is contained in:
Reid 'arrdem' McKenzie 2022-05-11 23:20:59 -07:00
parent 06eda8167f
commit 8a70d2b64d
3 changed files with 33 additions and 10 deletions

View file

@ -53,7 +53,7 @@ load("@rules_python//python:pip.bzl", "pip_parse")
pip_parse(
name = "arrdem_source_pypi",
requirements_lock = "//tools/python:requirements.txt",
python_interpreter = "/usr/bin/python3.10"
python_interpreter_target = "//tools/python:pythonshim",
)
# Load the starlark macro which will define your dependencies.
@ -62,13 +62,14 @@ load("@arrdem_source_pypi//:requirements.bzl", "install_deps")
# Call it to define repos for your requirements.
install_deps()
# git_repository(
# name = "rules_zapp",
# remote = "https://github.com/arrdem/rules_zapp.git",
# tag = "0.1.2",
# )
local_repository(
git_repository(
name = "rules_zapp",
path = "/home/arrdem/doc/hobby/programming/lang/python/rules_zapp",
remote = "https://github.com/arrdem/rules_zapp.git",
commit = "d7a0382927fb8a68115b560f4fee7dca743068f8",
# tag = "0.1.2",
)
# local_repository(
# name = "rules_zapp",
# path = "/home/arrdem/doc/hobby/programming/lang/python/rules_zapp",
# )

View file

@ -12,12 +12,13 @@ exports_files([
"defs.bzl",
"bzl_pytest_shim.py",
"bzl_unittest_shim.py",
"pythonshim",
])
py_runtime(
name = "python3_runtime",
files = [],
interpreter_path = "/usr/bin/python3.10",
interpreter = ":pythonshim",
python_version = "PY3",
visibility = ["//visibility:public"],
)

21
tools/python/pythonshim Executable file
View file

@ -0,0 +1,21 @@
#!/bin/sh
# Bazel STRONGLY disapproves of linking dynamically to a Python interpreter.
# But ... that's exactly what we want to do.
# So this script exists to find a 'compliant' Python install and use that.
PYTHONREV="3.10"
CMD="python${PYTHONREV}"
if [ -x "$(command -v "$CMD")" ]; then
exec "$(which "$CMD")" "$@"
else
case "$(uname)" in
Darwin)
# FIXME: What if it isn't there?
exec /opt/homebrew/bin/"$CMD" "$@"
;;
esac
echo "Error: Unable to find a viable Python executable" >&2
exit 1
fi