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', []):

Reply via email to