48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
# based off https://github.com/ali5h/rules_pip/blob/master/defs.bzl
|
|
|
|
pip_vendor_label = Label("@com_github_ali5h_rules_pip//:third_party/py/easy_install.py")
|
|
|
|
def _execute(repository_ctx, arguments, quiet = False):
|
|
pip_vendor = str(repository_ctx.path(pip_vendor_label).dirname)
|
|
return repository_ctx.execute(arguments, environment = {
|
|
"PYTHONPATH": pip_vendor,
|
|
}, quiet = quiet)
|
|
|
|
def _install_pyqt5_impl(repository_ctx):
|
|
python_interpreter = repository_ctx.attr.python_interpreter
|
|
if repository_ctx.attr.python_runtime:
|
|
python_interpreter = repository_ctx.path(repository_ctx.attr.python_runtime)
|
|
|
|
args = [
|
|
python_interpreter,
|
|
repository_ctx.path(repository_ctx.attr._script),
|
|
repository_ctx.path("."),
|
|
]
|
|
|
|
result = _execute(repository_ctx, args, quiet = repository_ctx.attr.quiet)
|
|
if result.return_code:
|
|
fail("failed: %s (%s)" % (result.stdout, result.stderr))
|
|
|
|
install_pyqt5 = repository_rule(
|
|
attrs = {
|
|
"python_interpreter": attr.string(default = "python", doc = """
|
|
The command to run the Python interpreter used to invoke pip and unpack the
|
|
wheels.
|
|
"""),
|
|
"python_runtime": attr.label(doc = """
|
|
The label to the Python run-time interpreted used to invoke pip and unpack the wheels.
|
|
If the label is specified it will overwrite the python_interpreter attribute.
|
|
"""),
|
|
"_script": attr.label(
|
|
executable = True,
|
|
default = Label("//pip/pyqt5:install_pyqt5.py"),
|
|
cfg = "host",
|
|
),
|
|
"quiet": attr.bool(
|
|
default = True,
|
|
doc = "If stdout and stderr should be printed to the terminal.",
|
|
),
|
|
},
|
|
implementation = _install_pyqt5_impl,
|
|
)
|