This is an automated email from the ASF dual-hosted git repository.
nicknezis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git
The following commit(s) were added to refs/heads/master by this push:
new 813e9d0 Update pip-2020-resolver of PexBuilder to fix darwin building
(#3727)
813e9d0 is described below
commit 813e9d0b9fa67c6d05bf7c72e7f87f92eed20159
Author: choi se <[email protected]>
AuthorDate: Thu Nov 11 13:13:07 2021 +0900
Update pip-2020-resolver of PexBuilder to fix darwin building (#3727)
---
WORKSPACE | 6 ++---
tools/rules/pex/pex_rules.bzl | 5 ++--
tools/rules/pex/wrapper/pex_wrapper.py | 47 +++++++++++++++++++++++++++++-----
3 files changed, 47 insertions(+), 11 deletions(-)
diff --git a/WORKSPACE b/WORKSPACE
index ba45fc5..f58aa3d 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -183,7 +183,7 @@ py_repositories()
# pip_repositories()
# for pex repos
-PEX_WHEEL =
"https://pypi.python.org/packages/18/92/99270775cfc5ddb60c19588de1c475f9ff2837a6e0bbd5eaa5286a6a472b/pex-2.1.9-py2.py3-none-any.whl"
+PEX_WHEEL =
"https://pypi.python.org/packages/fa/c4/5dbdce75117b60b6ffec65bc92ac25ee873b84158a55cfbffa1d49db6eb1/pex-2.1.54-py2.py3-none-any.whl"
PY_WHEEL =
"https://pypi.python.org/packages/53/67/9620edf7803ab867b175e4fd23c7b8bd8eba11cb761514dcd2e726ef07da/py-1.4.34-py2.py3-none-any.whl"
@@ -218,8 +218,8 @@ http_file(
http_file(
name = "pex_src",
- downloaded_file_path = "pex-2.1.9-py2.py3-none-any.whl",
- sha256 =
"5cad8d960c187541f71682fc938a843ef9092aab46f27b33ace7e570325e2626",
+ downloaded_file_path = "pex-2.1.54-py2.py3-none-any.whl",
+ sha256 =
"e60b006abe8abfd3c3377128e22c33f30cc6dea89e2beb463cf8360e3626db62",
urls = [PEX_WHEEL],
)
diff --git a/tools/rules/pex/pex_rules.bzl b/tools/rules/pex/pex_rules.bzl
index 0ad7f19..5353b0f 100644
--- a/tools/rules/pex/pex_rules.bzl
+++ b/tools/rules/pex/pex_rules.bzl
@@ -179,7 +179,7 @@ def _pex_binary_impl(ctx):
pexbuilder = ctx.executable._pexbuilder
# form the arguments to pex builder
- arguments = [] if ctx.attr.zip_safe else ["--not-zip-safe"]
+ arguments = []
arguments += [] if ctx.attr.pex_use_wheels else ["--no-use-wheel"]
if ctx.attr.interpreter:
arguments += ["--python", ctx.attr.interpreter]
@@ -197,7 +197,8 @@ def _pex_binary_impl(ctx):
"--disable-cache",
"--python-shebang", "#!/usr/bin/env python3",
"--no-compile",
- manifest_file.path,
+ "--resolver-version", "pip-2020-resolver",
+ "--manifest-file", manifest_file.path,
]
#EXTRA_PEX_ARGS#
diff --git a/tools/rules/pex/wrapper/pex_wrapper.py
b/tools/rules/pex/wrapper/pex_wrapper.py
index 6454f75..b3e3a8b 100644
--- a/tools/rules/pex/wrapper/pex_wrapper.py
+++ b/tools/rules/pex/wrapper/pex_wrapper.py
@@ -15,7 +15,9 @@
""" Pex builder wrapper """
import pex.bin.pex as pexbin
-from pex.common import safe_delete
+from pex.resolve import requirement_options, resolver_options, target_options
+from pex.resolve.requirement_configuration import RequirementConfiguration
+from pex.common import die, safe_delete
from pex.tracer import TRACER
from pex.variables import ENV
@@ -51,20 +53,53 @@ def parse_manifest(manifest_text):
return json.loads(manifest_text)
-def main():
+def main(args=None):
+ args = args[:] if args else sys.argv[1:]
+ args = [pexbin.transform_legacy_arg(arg) for arg in args]
pparser = pexbin.configure_clp()
- poptions, args = pparser.parse_args(sys.argv)
- manifest_file = args[1]
+ try:
+ separator = args.index("--")
+ args, cmdline = args[:separator], args[separator + 1:]
+ except ValueError:
+ args, cmdline = args, []
+
+ pparser.add_argument(
+ "--manifest-file",
+ dest="manifest_file",
+ default=None,
+ metavar="FILE",
+ type=str,
+ help="pex_wrapper manifest file.",
+ )
+ poptions = pparser.parse_args(args=args)
+
+ manifest_file = poptions.manifest_file
manifest_text = open(manifest_file, 'r').read()
manifest = parse_manifest(manifest_text)
reqs = manifest.get('requirements', [])
+ requirement_configuration = RequirementConfiguration(requirements=reqs)
+ try:
+ resolver_configuration = resolver_options.configure(poptions)
+ except resolver_options.InvalidConfigurationError as e:
+ die(str(e))
+
+ try:
+ target_configuration = target_options.configure(poptions)
+ except target_options.InterpreterNotFound as e:
+ die(str(e))
+ except target_options.InterpreterConstraintsNotSatisfied as e:
+ die(str(e), exit_code=pexbin.CANNOT_SETUP_INTERPRETER)
with ENV.patch(PEX_VERBOSE=str(poptions.verbosity),
PEX_ROOT=poptions.pex_root or ENV.PEX_ROOT):
with TRACER.timed('Building pex'):
- pex_builder = pexbin.build_pex(reqs, poptions)
+ pex_builder = pexbin.build_pex(
+ requirement_configuration=requirement_configuration,
+ resolver_configuration=resolver_configuration,
+ target_configuration=target_configuration,
+ options=poptions)
# Add source files from the manifest
for modmap in manifest.get('modules', []):
@@ -90,7 +125,7 @@ def main():
for reqmap in manifest.get('resources', []):
src = reqmap.get('src')
dst = reqmap.get('dest')
- pex_builder.add_resource(dereference_symlinks(src), dst)
+ pex_builder.add_source(dereference_symlinks(src), dst)
# Add eggs/wheels from the manifest
for egg in manifest.get('prebuiltLibraries', []):