blob: 46ebbc8cde55ae12dbfe37f429555399b4c75450 [file] [log] [blame]
# Copyright 2017 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
workspace(name = "rules_python")
# Everything below this line is used only for developing rules_python. Users
# should not copy it to their WORKSPACE.
load("//:internal_deps.bzl", "rules_python_internal_deps")
rules_python_internal_deps()
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
rules_jvm_external_deps()
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
rules_jvm_external_setup()
load("@io_bazel_stardoc//:deps.bzl", "stardoc_external_deps")
stardoc_external_deps()
load("@stardoc_maven//:defs.bzl", stardoc_pinned_maven_install = "pinned_maven_install")
stardoc_pinned_maven_install()
load("//:internal_setup.bzl", "rules_python_internal_setup")
rules_python_internal_setup()
load("@pythons_hub//:versions.bzl", "MINOR_MAPPING", "PYTHON_VERSIONS")
load("//python:repositories.bzl", "python_register_multi_toolchains")
python_register_multi_toolchains(
name = "python",
default_version = MINOR_MAPPING.values()[-3], # Use 3.11.10
# Integration tests verify each version, so register all of them.
python_versions = PYTHON_VERSIONS,
)
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
# Used for Bazel CI
http_archive(
name = "bazelci_rules",
sha256 = "eca21884e6f66a88c358e580fd67a6b148d30ab57b1680f62a96c00f9bc6a07e",
strip_prefix = "bazelci_rules-1.0.0",
url = "https://github.com/bazelbuild/continuous-integration/releases/download/rules-1.0.0/bazelci_rules-1.0.0.tar.gz",
)
load("@bazelci_rules//:rbe_repo.bzl", "rbe_preconfig")
# Creates a default toolchain config for RBE.
# Use this as is if you are using the rbe_ubuntu16_04 container,
# otherwise refer to RBE docs.
rbe_preconfig(
name = "buildkite_config",
toolchain = "ubuntu1804-bazel-java11",
)
local_repository(
name = "rules_python_gazelle_plugin",
path = "gazelle",
)
# The rules_python gazelle extension has some third-party go dependencies
# which we need to fetch in order to compile it.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
# See: https://github.com/bazelbuild/rules_python/blob/main/gazelle/README.md
# This rule loads and compiles various go dependencies that running gazelle
# for python requirements.
_py_gazelle_deps()
# This interpreter is used for various rules_python dev-time tools
interpreter = "@python_3_11_9_host//:python"
#####################
# Install twine for our own runfiles wheel publishing.
# Eventually we might want to install twine automatically for users too, see:
# https://github.com/bazelbuild/rules_python/issues/1016.
load("@rules_python//python:pip.bzl", "pip_parse")
pip_parse(
name = "rules_python_publish_deps",
python_interpreter_target = interpreter,
requirements_darwin = "//tools/publish:requirements_darwin.txt",
requirements_lock = "//tools/publish:requirements_linux.txt",
requirements_windows = "//tools/publish:requirements_windows.txt",
)
load("@rules_python_publish_deps//:requirements.bzl", "install_deps")
install_deps()
pip_parse(
name = "pypiserver",
python_interpreter_target = interpreter,
requirements_lock = "//examples/wheel:requirements_server.txt",
)
load("@pypiserver//:requirements.bzl", install_pypiserver = "install_deps")
install_pypiserver()
#####################
# Install sphinx for doc generation.
pip_parse(
name = "dev_pip",
python_interpreter_target = interpreter,
requirements_lock = "//docs:requirements.txt",
)
load("@dev_pip//:requirements.bzl", docs_install_deps = "install_deps")
docs_install_deps()
# This wheel is purely here to validate the wheel extraction code. It's not
# intended for anything else.
http_file(
name = "wheel_for_testing",
downloaded_file_path = "numpy-1.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
sha256 = "0d60fbae8e0019865fc4784745814cff1c421df5afee233db6d88ab4f14655a2",
urls = [
"https://files.pythonhosted.org/packages/50/67/3e966d99a07d60a21a21d7ec016e9e4c2642a86fea251ec68677daf71d4d/numpy-1.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
],
)
# rules_proto expects //external:python_headers to point at the python headers.
bind(
name = "python_headers",
actual = "//python/cc:current_py_cc_headers",
)