-
Notifications
You must be signed in to change notification settings - Fork 115
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build: use bazel to install orjson (#1)
- Loading branch information
Showing
6 changed files
with
105 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,51 @@ | ||
# This file existed originally to enable quick local development via local_repository. | ||
# See ./ImplementationReadme.md for details on local development. | ||
# Why? local_repository didn't work without a WORKSPACE, and new_local_repository required overwriting the BUILD file (as of Bazel 5.0). | ||
# See ./ImplementationReadme.md for details on local development. | ||
# Why? local_repository didn't work without a WORKSPACE, and new_local_repository required overwriting the BUILD file (as of Bazel 5.0). | ||
|
||
workspace(name = "hedron_compile_commands") | ||
|
||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") | ||
|
||
# TODO(cpsauer): move everything above hedron_compile_commands_setup() into setup macros. | ||
BAZEL_SKYLIB_VERSION = "1.4.2" | ||
|
||
http_archive( | ||
name = "bazel_skylib", | ||
sha256 = "66ffd9315665bfaafc96b52278f57c7e2dd09f5ede279ea6d39b2be471e7e3aa", | ||
urls = [ | ||
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/{0}/bazel-skylib-{0}.tar.gz".format(BAZEL_SKYLIB_VERSION), | ||
"https://github.com/bazelbuild/bazel-skylib/releases/download/{0}/bazel-skylib-{0}.tar.gz".format(BAZEL_SKYLIB_VERSION), | ||
], | ||
) | ||
|
||
http_archive( | ||
name = "rules_python", | ||
sha256 = "84aec9e21cc56fbc7f1335035a71c850d1b9b5cc6ff497306f84cced9a769841", | ||
strip_prefix = "rules_python-0.23.1", | ||
url = "https://github.com/bazelbuild/rules_python/releases/download/0.23.1/rules_python-0.23.1.tar.gz", | ||
) | ||
|
||
load("@rules_python//python:repositories.bzl", "python_register_toolchains") | ||
|
||
python_register_toolchains( | ||
name = "python_toolchain", | ||
python_version = "3.11", | ||
) | ||
|
||
# For re-generating python_requirements_lock.bzl: | ||
# * update python_requirements_lock.txt | ||
# * Un-comment the below | ||
# * run `bazel build @pip//...`, | ||
# * cp external/pip/requirements.bzl python_requirements_lock.bzl | ||
|
||
# load("@python_toolchain//:defs.bzl", "interpreter") | ||
# load("@rules_python//python:pip.bzl", "pip_parse") | ||
# pip_parse( | ||
# name = "pip", | ||
# python_interpreter_target = interpreter, | ||
# requirements_lock = "//:python_requirements_lock.txt", | ||
# ) | ||
|
||
load("@hedron_compile_commands//:workspace_setup.bzl", "hedron_compile_commands_setup") | ||
|
||
hedron_compile_commands_setup() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
"""Starlark representation of locked requirements. | ||
@generated by rules_python pip_parse repository rule | ||
from @//:python_requirements_lock.txt | ||
""" | ||
|
||
load("@rules_python//python/pip_install:pip_repository.bzl", "whl_library") | ||
|
||
all_requirements = ["@pip_orjson//:pkg"] | ||
|
||
all_whl_requirements = ["@pip_orjson//:whl"] | ||
|
||
_packages = [("pip_orjson", "orjson==3.9.1")] | ||
_config = {"download_only": False, "enable_implicit_namespace_pkgs": False, "environment": {}, "extra_pip_args": [], "isolated": True, "pip_data_exclude": [], "python_interpreter": "python3", "python_interpreter_target": "@python_toolchain_x86_64-unknown-linux-gnu//:bin/python3", "quiet": True, "repo": "pip", "repo_prefix": "pip_", "timeout": 600} | ||
_annotations = {} | ||
|
||
def _clean_name(name): | ||
return name.replace("-", "_").replace(".", "_").lower() | ||
|
||
def requirement(name): | ||
return "@pip_" + _clean_name(name) + "//:pkg" | ||
|
||
def whl_requirement(name): | ||
return "@pip_" + _clean_name(name) + "//:whl" | ||
|
||
def data_requirement(name): | ||
return "@pip_" + _clean_name(name) + "//:data" | ||
|
||
def dist_info_requirement(name): | ||
return "@pip_" + _clean_name(name) + "//:dist_info" | ||
|
||
def entry_point(pkg, script = None): | ||
if not script: | ||
script = pkg | ||
return "@pip_" + _clean_name(pkg) + "//:rules_python_wheel_entry_point_" + script | ||
|
||
def _get_annotation(requirement): | ||
# This expects to parse `setuptools==58.2.0 --hash=sha256:2551203ae6955b9876741a26ab3e767bb3242dafe86a32a749ea0d78b6792f11` | ||
# down to `setuptools`. | ||
name = requirement.split(" ")[0].split("=")[0].split("[")[0] | ||
return _annotations.get(name) | ||
|
||
def install_deps(**whl_library_kwargs): | ||
whl_config = dict(_config) | ||
whl_config.update(whl_library_kwargs) | ||
for name, requirement in _packages: | ||
whl_library( | ||
name = name, | ||
requirement = requirement, | ||
annotation = _get_annotation(requirement), | ||
**whl_config | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
orjson==3.9.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,14 @@ | ||
"""Workspace setup macros.""" | ||
|
||
# Do not change the filename; it is part of the user interface. | ||
|
||
load("//:python_requirements_lock.bzl", install_python_deps = "install_deps") | ||
|
||
def hedron_compile_commands_setup(): | ||
"""Set up a WORKSPACE to have hedron_compile_commands used within it.""" | ||
|
||
# Unified setup for users' WORKSPACES and this workspace when used standalone. | ||
# See invocations in: | ||
# README.md (for users) | ||
# WORKSPACE (for working on this repo standalone) | ||
|
||
# Currently nothing to do -> no-op. | ||
# So why is this even here? Enables future expansion (e.g to add transitive dependencies) without changing the user interface. | ||
pass | ||
install_python_deps() |