From 6e0703221852576f6ca268083e7e89ddf572d2fa Mon Sep 17 00:00:00 2001 From: Maxwell Dreytser Date: Sun, 22 Dec 2024 20:25:55 -0500 Subject: [PATCH] Clean up out of the box build support. --- Lib/__np__/common.py | 24 +++++++++++++++++- Lib/__np__/metabuild.py | 2 +- Lib/ensurepip/__init__.py | 2 +- ...ny.whl => packaging-24.2-py3-none-any.whl} | Bin 65911 -> 65871 bytes Lib/pip.py | 11 +++++--- Lib/rebuildpython.py | 17 ++++++++++++- 6 files changed, 48 insertions(+), 8 deletions(-) rename Lib/ensurepip/_bundled/{packaging-24.2.dev0-py3-none-any.whl => packaging-24.2-py3-none-any.whl} (57%) diff --git a/Lib/__np__/common.py b/Lib/__np__/common.py index 3216bf5bbe6865..720536d7c6922b 100644 --- a/Lib/__np__/common.py +++ b/Lib/__np__/common.py @@ -220,6 +220,28 @@ def download_extract(url, destination): extract_archive(downloaded_file, destination) +def run(*args, **kwargs): + import subprocess + + stdin = kwargs.pop("stdin", None) + quiet = kwargs.pop("quiet", False) + assert not kwargs + + env = os.environ.copy() + # Don't use the pip path customization here. Just replicate our current path. + env["PYTHONPATH"] = os.pathsep.join([x for x in sys.path if not x.endswith(os.path.sep + "site")]) + + p = subprocess.Popen( + args, + universal_newlines=True, + stdin=stdin, + env=env, + ) + + p.wait() + if p.returncode != 0: + raise subprocess.CalledProcessError(p.returncode, args, output) + def run_with_output(*args, **kwargs): import subprocess @@ -314,7 +336,7 @@ def find_build_tool_exe(tool_name, exe): def run_build_tool_exe(tool_name, exe, *args, **kwargs): - return run_with_output(find_build_tool_exe(tool_name, exe), *args, **kwargs) + run(find_build_tool_exe(tool_name, exe), *args, **kwargs) def apply_patch(patch_file, directory): diff --git a/Lib/__np__/metabuild.py b/Lib/__np__/metabuild.py index d2091fb5829657..d94692aa3338b0 100644 --- a/Lib/__np__/metabuild.py +++ b/Lib/__np__/metabuild.py @@ -27,7 +27,7 @@ def build_wheel( with open(os.path.join("..", "script.json")) as f: metadata = json.load(f) - __np__.packaging.build_package(metadata['name'], metadata['version'], metadata['script_metadata'], wheel_directory) + return __np__.packaging.build_package(metadata['name'], metadata['version'], metadata['script_metadata'], wheel_directory) managed_build = ManagedBackend() diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 926bb7f6c0b857..e0d1a92a9bc546 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -11,7 +11,7 @@ __all__ = ["version", "bootstrap", "_PROJECTS", "_get_packages"] _PACKAGE_NAMES = ('setuptools', 'packaging', 'pip', 'wheel') _SETUPTOOLS_VERSION = "75.2.0.post20241019" -_PACKAGING_VERSION = "24.2.dev0" +_PACKAGING_VERSION = "24.2" _PIP_VERSION = "23.3.2" _WHEEL_VERSION = "0.42.0" _PROJECTS = [ diff --git a/Lib/ensurepip/_bundled/packaging-24.2.dev0-py3-none-any.whl b/Lib/ensurepip/_bundled/packaging-24.2-py3-none-any.whl similarity index 57% rename from Lib/ensurepip/_bundled/packaging-24.2.dev0-py3-none-any.whl rename to Lib/ensurepip/_bundled/packaging-24.2-py3-none-any.whl index 4521b5554e06b1c9cf3a926d1fce8eb4c6637e81..414d19024837a54e7fcbda08b79f29a1b64bf48c 100644 GIT binary patch delta 24587 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 U0jh?8K!IugC!M!^_ZRN}0I=>bRR910 delta 24747 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 diff --git a/Lib/pip.py b/Lib/pip.py index e500f09f063856..8aed4ae398538e 100644 --- a/Lib/pip.py +++ b/Lib/pip.py @@ -68,7 +68,7 @@ def our_load_pyproject_toml(use_pep517, pyproject_toml, setup_py, req_name): has_setup = os.path.isfile(setup_py) # We will be taking over the build process. - if os.path.isfile(os.path.join(os.path.dirname(os.path.dirname(pyproject_toml)), "script.json")): + if not req_name.startswith("file://") and os.path.isfile(os.path.join(os.path.dirname(os.path.dirname(pyproject_toml)), "script.json")): with open(os.path.join(os.path.dirname(os.path.dirname(pyproject_toml)), "script.json"), 'r') as f: data = json.load(f) requires = [] @@ -82,7 +82,7 @@ def our_load_pyproject_toml(use_pep517, pyproject_toml, setup_py, req_name): return None return pip._internal.pyproject.BuildSystemDetails( [x for x in result.requires if re.split(r'[><=]', x, 1)[0] not in builtin_packages], - result.backend, result.check, [os.path.dirname(__file__), real_pip_dir] + result.backend_path) + result.backend, result.check, sys.path + result.backend_path) @@ -165,7 +165,7 @@ def get_runnable_pip() -> str: def our_get_requirements(self, args, options, finder, session): reqs = orig_get_requirements(self, args, options, finder, session) # This should prevent accidentally updating the pinned bundled packages. - return [x for x in reqs if x.req.name not in builtin_packages] + return [x for x in reqs if x.req is None or x.req.name not in builtin_packages] pip._internal.cli.req_command.RequirementCommand.get_requirements = our_get_requirements @@ -198,7 +198,10 @@ def install( orig_prepare_distribution = pip._internal.resolution.resolvelib.candidates.LinkCandidate._prepare_distribution def _prepare_distribution(self): - build_script = __np__.packaging.find_build_script_for_package(self.name, self.version.public) + try: + build_script = __np__.packaging.find_build_script_for_package(self.name, self.version.public) + except: + build_script = None if build_script is not None: with open(os.path.join(self._factory.preparer.build_dir, 'script.json'), 'w') as f: diff --git a/Lib/rebuildpython.py b/Lib/rebuildpython.py index ff18a9d51c1264..3ab67092e5bc88 100644 --- a/Lib/rebuildpython.py +++ b/Lib/rebuildpython.py @@ -90,6 +90,21 @@ def get_lib_hash(): return hashlib.sha256(hash_string.encode('ascii')).hexdigest() + +def is_lib_valid(path): + if os.path.isfile(path): + if __np__.getToolsInstallDir() in path: + # Disqualify libs from inside build tools. + return False + + with open(path, "rb") as f: + if f.read(7) == b"!": + return True + return False + else: + return True + + def run_rebuild(): try: with open(os.path.join(interpreter_prefix, "link.json"), 'r') as f: @@ -398,7 +413,7 @@ def run_rebuild(): if final_path not in final_lib_list: final_lib_list.append(final_path) - link_libs = final_lib_list + link_libs = [x for x in final_lib_list if is_lib_valid(x)] compiler.compile( ["python.c"], output_dir=build_dir, include_dirs=include_dirs, macros=macros