diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 83563a8..f6bd30c 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -27,6 +27,7 @@ jobs: timeoutInMinutes: 360 variables: CONDA_BLD_PATH: D:\\bld\\ + UPLOAD_TEMP: D:\\tmp steps: - task: PythonScript@0 @@ -112,6 +113,9 @@ jobs: - script: | set "GIT_BRANCH=%BUILD_SOURCEBRANCHNAME%" set "FEEDSTOCK_NAME=%BUILD_REPOSITORY_NAME:*/=%" + set "TEMP=$(UPLOAD_TEMP)" + if not exist "%TEMP%\" md "%TEMP%" + set "TMP=%TEMP%" call activate base upload_package --validate --feedstock-name="%FEEDSTOCK_NAME%" .\ ".\recipe" .ci_support\%CONFIG%.yaml displayName: Upload package diff --git a/.ci_support/linux_64_name_suffix3.8openssl1.1.1.yaml b/.ci_support/linux_64_name_suffix3.8openssl1.1.1.yaml index 6d6c1af..21c2a9f 100644 --- a/.ci_support/linux_64_name_suffix3.8openssl1.1.1.yaml +++ b/.ci_support/linux_64_name_suffix3.8openssl1.1.1.yaml @@ -3,7 +3,7 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '10' +- '11' cdt_name: - cos6 channel_sources: diff --git a/.ci_support/linux_64_name_suffix3.8openssl3.yaml b/.ci_support/linux_64_name_suffix3.8openssl3.yaml index 9198754..732b963 100644 --- a/.ci_support/linux_64_name_suffix3.8openssl3.yaml +++ b/.ci_support/linux_64_name_suffix3.8openssl3.yaml @@ -3,7 +3,7 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '10' +- '11' cdt_name: - cos6 channel_sources: diff --git a/.ci_support/linux_64_name_suffix3.9openssl1.1.1.yaml b/.ci_support/linux_64_name_suffix3.9openssl1.1.1.yaml index 86c607f..71cb593 100644 --- a/.ci_support/linux_64_name_suffix3.9openssl1.1.1.yaml +++ b/.ci_support/linux_64_name_suffix3.9openssl1.1.1.yaml @@ -3,7 +3,7 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '10' +- '11' cdt_name: - cos6 channel_sources: diff --git a/.ci_support/linux_64_name_suffix3.9openssl3.yaml b/.ci_support/linux_64_name_suffix3.9openssl3.yaml index 9c665e7..ea53fe2 100644 --- a/.ci_support/linux_64_name_suffix3.9openssl3.yaml +++ b/.ci_support/linux_64_name_suffix3.9openssl3.yaml @@ -3,7 +3,7 @@ bzip2: c_compiler: - gcc c_compiler_version: -- '10' +- '11' cdt_name: - cos6 channel_sources: diff --git a/README.md b/README.md index 3076e3d..6ada2f6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -About pypy3.8 +About pypy3.9 ============= Home: http://pypy.org/ @@ -127,10 +127,10 @@ Current release info | [![Conda Recipe](https://img.shields.io/badge/recipe-pypy3.8-green.svg)](https://anaconda.org/conda-forge/pypy3.8) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/pypy3.8.svg)](https://anaconda.org/conda-forge/pypy3.8) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/pypy3.8.svg)](https://anaconda.org/conda-forge/pypy3.8) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/pypy3.8.svg)](https://anaconda.org/conda-forge/pypy3.8) | | [![Conda Recipe](https://img.shields.io/badge/recipe-pypy3.9-green.svg)](https://anaconda.org/conda-forge/pypy3.9) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/pypy3.9.svg)](https://anaconda.org/conda-forge/pypy3.9) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/pypy3.9.svg)](https://anaconda.org/conda-forge/pypy3.9) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/pypy3.9.svg)](https://anaconda.org/conda-forge/pypy3.9) | -Installing pypy3.8 +Installing pypy3.9 ================== -Installing `pypy3.8` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with: +Installing `pypy3.9` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with: ``` conda config --add channels conda-forge @@ -216,17 +216,17 @@ Terminology produce the finished article (built conda distributions) -Updating pypy3.8-feedstock +Updating pypy3.9-feedstock ========================== -If you would like to improve the pypy3.8 recipe or build a new +If you would like to improve the pypy3.9 recipe or build a new package version, please fork this repository and submit a PR. Upon submission, your changes will be run on the appropriate platforms to give the reviewer an opportunity to confirm that the changes result in a successful build. Once merged, the recipe will be re-built and uploaded automatically to the `conda-forge` channel, whereupon the built conda packages will be available for everybody to install and use from the `conda-forge` channel. -Note that all branches in the conda-forge/pypy3.8-feedstock are +Note that all branches in the conda-forge/pypy3.9-feedstock are immediately built and any created packages are uploaded, so PRs should be based on branches in forks and branches in the main repository should only be used to build distinct package versions. diff --git a/recipe/bld.bat b/recipe/bld.bat index 74da358..030875e 100644 --- a/recipe/bld.bat +++ b/recipe/bld.bat @@ -12,6 +12,7 @@ set "PYPY_PKG_NAME=pypy3" set "BUILD_DIR=%PREFIX%\..\build" set "TARGET_DIR=%PREFIX%\..\target" set "ARCHIVE_NAME=%PYPY_PKG_NAME%-%PKG_VERSION%" +set PYPY_PACKAGE_NO_DLLS=1 REM Report system info systeminfo diff --git a/recipe/build.sh b/recipe/build.sh index f9e49c3..d8fa38d 100755 --- a/recipe/build.sh +++ b/recipe/build.sh @@ -31,6 +31,9 @@ PYPY_PKG_NAME=pypy3 BUILD_DIR=${PREFIX}/../build TARGET_DIR=${PREFIX}/../target ARCHIVE_NAME="${PYPY_PKG_NAME}-${PKG_VERSION}" +PYPY_PACKAGE_WITHOUTTK=1 +PYPY_NO_EMBED_DEPENDENCIES=1 +PYPY_NO_MAKE_PORTABLE=1 # Build PyPy in stages # Force the build to use this directory diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 664ab99..d5e97a4 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -2,7 +2,7 @@ {% set name_suffix = "3.8" %} {% endif %} {% set name = "pypy" ~ name_suffix %} -{% set version = "7.3.9" %} +{% set version = "7.3.11" %} package: name: {{ name }} @@ -10,8 +10,8 @@ package: source: - url: https://downloads.python.org/pypy/{{ name }}-v{{ version }}-src.tar.bz2 - sha256: 5b5d9d9256f12a129af8384e2f581bdfab3bc0fbbe3a0a480d9c1d2e95490eb1 # [name_suffix == "3.8"] - sha256: 2abaa1e9fe1ec0e233c9fbc377a0c8e9a0634080a8f4f30eb6898301f6618c12 # [name_suffix == "3.9"] + sha256: 4d6769bfca73734e8666fd70503b7ceb06a6e259110e617331bb3899ca4e6058 # [name_suffix == "3.8"] + sha256: b0f3166fb2a5aadfd5ceb9db5cdd5f7929a0eccca02b4a26c0dae0492f7ca8ea # [name_suffix == "3.9"] folder: pypy3 patches: - patches/fficurses.patch @@ -33,22 +33,14 @@ source: - patches/0020-Use-ranlib-from-env-if-env-variable-is-set.patch - patches/0024-Fix-LDSHARED-when-CC-is-overriden-on-Linux-too.patch # Patches to be removed for the next version - - patches/0019a-Disable-copying-dlls.patch # [name_suffix=="3.8"] - - patches/0019b-Disable-copying-dlls.patch # [name_suffix=="3.9"] - - patches/0031-pre-v7.3.10-fix-generic-alias.patch # [name_suffix=="3.9"] - - patches/0031-Disable-embedding-and-portable.patch - - patches/0032a-pre-v7.3.10-fix-object-h.patch # [name_suffix=="3.8"] - - patches/0032b-pre-v7.3.10-fix-object-h.patch # [name_suffix=="3.9"] - - patches/0033-pre-v7.3.10-fix-windows-scratch-reg.patch - - patches/0034-pre-v7.3.10-libc-darwin-path.patch - - patches/fix_tzpath.patch # [name_suffix != "3.8"] + - patches/0019-Disable-copying-dlls.patch - url: https://downloads.python.org/pypy/pypy2.7-v7.3.6-win64.zip # [win] sha256: fcc8f6b3b472a77eaa754951f288fe234b4953bfba845888dd839b9b862cb891 # [win] folder: pypy2-binary # [win] build: - number: 7 + number: 0 skip_compile_pyc: - lib* diff --git a/recipe/patches/0019-Disable-copying-dlls.patch b/recipe/patches/0019-Disable-copying-dlls.patch new file mode 100644 index 0000000..f720065 --- /dev/null +++ b/recipe/patches/0019-Disable-copying-dlls.patch @@ -0,0 +1,25 @@ +# HG changeset patch +# Date 1673190532 -7200 +# Sun Jan 08 17:08:52 2023 +0200 +# Branch py3.8 +# Node ID d8e6b37f5231c7b59b2b639a651dd696a3732cc3 +# Parent c758c7d7097f60adffc8d9e8a8fc0dea18902e6f +make code compatible with conda + +diff -r c758c7d7097f -r d8e6b37f5231 lib_pypy/_ssl_build.py +--- a/lib_pypy/_ssl_build.py Fri Jan 06 00:00:39 2023 +0200 ++++ b/lib_pypy/_ssl_build.py Sun Jan 08 17:08:52 2023 +0200 +@@ -1,3 +1,4 @@ ++import os + import sys + from _cffi_ssl import _cffi_src + sys.modules['_cffi_src'] = _cffi_src +@@ -60,7 +61,7 @@ + + if __name__ == '__main__': + ffi.compile(verbose=True) +- if sys.platform == 'win32': ++ if sys.platform == 'win32' and "PYPY_PACKAGE_NO_DLLS" not in os.environ: + # copy dlls from externals to the pwd + # maybe we should link to libraries instead of the dlls + # to avoid this mess diff --git a/recipe/patches/0019a-Disable-copying-dlls.patch b/recipe/patches/0019a-Disable-copying-dlls.patch deleted file mode 100644 index 9d51c4a..0000000 --- a/recipe/patches/0019a-Disable-copying-dlls.patch +++ /dev/null @@ -1,77 +0,0 @@ -# HG changeset patch -# Date 1627474848 -10800 -# Wed Jul 28 15:20:48 2021 +0300 -# Branch conda -# Node ID ffffffffffffffffffffffffffffffffffffffff -# Parent 4aca66d6c57dd79083a1b75ea6a5b76df98eebcb - - -diff -r 4aca66d6c57d lib_pypy/_ssl_build.py ---- a/lib_pypy/_ssl_build.py -+++ b/lib_pypy/_ssl_build.py -@@ -59,22 +59,4 @@ - - if __name__ == '__main__': - ffi.compile(verbose=True) -- if sys.platform == 'win32': -- # copy dlls from externals to the pwd -- # maybe we should link to libraries instead of the dlls -- # to avoid this mess -- import os, glob, shutil -- path_parts = os.environ['PATH'].split(';') -- candidates = [x for x in path_parts if 'externals' in x] - -- def copy_from_path(dll): -- for c in candidates: -- files = glob.glob(os.path.join(c, dll + '*.dll')) -- if files: -- for fname in files: -- print('copying', fname) -- shutil.copy(fname, '.') -- -- if candidates: -- for lib in libraries: -- copy_from_path(lib) - -diff -r e707f2e3bb96 pypy/tool/release/package.py ---- a/pypy/tool/release/package.py Sun Oct 17 08:20:21 2021 +0300 -+++ b/pypy/tool/release/package.py Mon Oct 18 20:37:26 2021 +0300 -@@ -271,15 +271,7 @@ - print('Picking {} as python{}.exe'.format(src, python_ver[0])) - # Can't rename a DLL - win_extras = [('lib' + POSIX_EXE + '-c.dll', None), -- ('sqlite3.dll', target), -- ('libffi-8.dll', None), - ] -- if not options.no__tkinter: -- tkinter_dir = target.join('_tkinter') -- win_extras += [('tcl86t.dll', tkinter_dir), ('tk86t.dll', tkinter_dir)] -- # for testing, copy the dlls to the `base_dir` as well -- tkinter_dir = basedir.join('lib_pypy', '_tkinter') -- win_extras += [('tcl86t.dll', tkinter_dir), ('tk86t.dll', tkinter_dir)] - for extra, target_dir in win_extras: - p = pypy_c.dirpath().join(extra) - if not p.check(): -@@ -303,23 +295,6 @@ - # Has the lib moved, was translation not 'shared', or are - # there no exported functions in the dll so no import - # library was created? -- if not options.no__tkinter: -- try: -- p = pypy_c.dirpath().join('tcl86t.dll') -- if not p.check(): -- p = py.path.local.sysfind('tcl86t.dll') -- if p is None: -- raise WindowsError("tcl86t.dll not found") -- tktcldir = p.dirpath().join('..').join('lib') -- copytree(str(tktcldir), str(pypydir.join('tcl'))) -- except WindowsError: -- print("Packaging Tk runtime failed. tk86t.dll and tcl86t.dll " -- "found in %s, expecting to find runtime in %s directory " -- "next to the dlls, as per build " -- "instructions." %(p, tktcldir), file=sys.stderr) -- import traceback;traceback.print_exc() -- raise MissingDependenciesError('Tk runtime') -- - print('* Binaries:', [source.relto(str(basedir)) - for source, dst, target_dir in binaries]) diff --git a/recipe/patches/0019b-Disable-copying-dlls.patch b/recipe/patches/0019b-Disable-copying-dlls.patch deleted file mode 100644 index c2fa1ff..0000000 --- a/recipe/patches/0019b-Disable-copying-dlls.patch +++ /dev/null @@ -1,78 +0,0 @@ -# HG changeset patch -# Date 1627474848 -10800 -# Wed Jul 28 15:20:48 2021 +0300 -# Branch conda -# Node ID ffffffffffffffffffffffffffffffffffffffff -# Parent 4aca66d6c57dd79083a1b75ea6a5b76df98eebcb - - -diff -r 4aca66d6c57d lib_pypy/_ssl_build.py ---- a/lib_pypy/_ssl_build.py -+++ b/lib_pypy/_ssl_build.py -@@ -59,22 +59,4 @@ - - if __name__ == '__main__': - ffi.compile(verbose=True) -- if sys.platform == 'win32': -- # copy dlls from externals to the pwd -- # maybe we should link to libraries instead of the dlls -- # to avoid this mess -- import os, glob, shutil -- path_parts = os.environ['PATH'].split(';') -- candidates = [x for x in path_parts if 'externals' in x] - -- def copy_from_path(dll): -- for c in candidates: -- files = glob.glob(os.path.join(c, dll + '*.dll')) -- if files: -- for fname in files: -- print('copying', fname) -- shutil.copy(fname, '.') -- -- if candidates: -- for lib in libraries: -- copy_from_path(lib) - -diff -r e707f2e3bb96 pypy/tool/release/package.py ---- a/pypy/tool/release/package.py Sun Oct 17 08:20:21 2021 +0300 -+++ b/pypy/tool/release/package.py Mon Oct 18 20:37:26 2021 +0300 -@@ -282,15 +282,8 @@ - print('Picking {} as python{}.exe'.format(src, python_ver[0])) - # Can't rename a DLL - win_extras = [('lib' + POSIX_EXE + '-c.dll', None), -- ('sqlite3.dll', target), -- ('libffi-8.dll', None), - ] -- if not options.no__tkinter: -- tkinter_dir = target.join('_tkinter') -- win_extras += [('tcl86t.dll', tkinter_dir), ('tk86t.dll', tkinter_dir)] -- # for testing, copy the dlls to the `base_dir` as well -- tkinter_dir = basedir.join('lib_pypy', '_tkinter') -- win_extras += [('tcl86t.dll', tkinter_dir), ('tk86t.dll', tkinter_dir)] -+ - for extra, target_dir in win_extras: - p = pypy_c.dirpath().join(extra) - if not p.check(): -@@ -314,23 +307,6 @@ - # Has the lib moved, was translation not 'shared', or are - # there no exported functions in the dll so no import - # library was created? -- if not options.no__tkinter: -- try: -- p = pypy_c.dirpath().join('tcl86t.dll') -- if not p.check(): -- p = py.path.local.sysfind('tcl86t.dll') -- if p is None: -- raise WindowsError("tcl86t.dll not found") -- tktcldir = p.dirpath().join('..').join('lib') -- copytree(str(tktcldir), str(pypydir.join('tcl'))) -- except WindowsError: -- print("Packaging Tk runtime failed. tk86t.dll and tcl86t.dll " -- "found in %s, expecting to find runtime in %s directory " -- "next to the dlls, as per build " -- "instructions." %(p, tktcldir), file=sys.stderr) -- import traceback;traceback.print_exc() -- raise MissingDependenciesError('Tk runtime') -- - print('* Binaries:', [source.relto(str(basedir)) - for source, dst, target_dir in binaries]) diff --git a/recipe/patches/0023a-Fix-LIBDIR.patch b/recipe/patches/0023a-Fix-LIBDIR.patch index d5cbb84..383670d 100644 --- a/recipe/patches/0023a-Fix-LIBDIR.patch +++ b/recipe/patches/0023a-Fix-LIBDIR.patch @@ -1,15 +1,12 @@ -conda modifies the build to put the dll in base/lib not base/bin - -diff -r cbafdee73af5 lib_pypy/_sysconfigdata.py ---- a/lib_pypy/_sysconfigdata.py Sun Feb 20 16:59:41 2022 +0200 -+++ b/lib_pypy/_sysconfigdata.py Sun Feb 20 17:38:50 2022 +0200 -@@ -51,7 +51,7 @@ +diff -r c758c7d7097f lib_pypy/_sysconfigdata.py +--- a/lib_pypy/_sysconfigdata.py Fri Jan 06 00:00:39 2023 +0200 ++++ b/lib_pypy/_sysconfigdata.py Sun Jan 08 13:05:27 2023 +0200 +@@ -52,7 +52,7 @@ else: build_time_vars['LDLIBRARY'] = 'libpypy3-c.so' build_time_vars['INCLUDEPY'] = os.path.join(mybase, 'include', 'pypy' + pydot) - build_time_vars['LIBDIR'] = os.path.join(mybase, 'bin') + build_time_vars['LIBDIR'] = os.path.join(mybase, 'lib') + build_time_vars['CONFINCLUDEPY'] = build_time_vars['INCLUDEPY'] - if find_executable("gcc"): - build_time_vars.update({ - + if which("gcc"): diff --git a/recipe/patches/0023b-Fix-LIBDIR.patch b/recipe/patches/0023b-Fix-LIBDIR.patch index 564a052..5956290 100644 --- a/recipe/patches/0023b-Fix-LIBDIR.patch +++ b/recipe/patches/0023b-Fix-LIBDIR.patch @@ -1,15 +1,12 @@ -conda modifies the build to put the dll in base/lib not base/bin - -diff -r ab92c5997c51 lib_pypy/_sysconfigdata.py ---- a/lib_pypy/_sysconfigdata.py Sun Feb 20 17:00:07 2022 +0200 -+++ b/lib_pypy/_sysconfigdata.py Sun Feb 20 17:27:41 2022 +0200 -@@ -51,7 +51,7 @@ +diff -r cc1e666384ea lib_pypy/_sysconfigdata.py +--- a/lib_pypy/_sysconfigdata.py Fri Jan 06 00:01:13 2023 +0200 ++++ b/lib_pypy/_sysconfigdata.py Sun Jan 08 13:05:57 2023 +0200 +@@ -52,7 +52,7 @@ else: - build_time_vars['LDLIBRARY'] = 'libpypy3-c.so' + build_time_vars['LDLIBRARY'] = 'libpypy3.9-c.so' build_time_vars['INCLUDEPY'] = os.path.join(mybase, 'include', 'pypy' + pydot) - build_time_vars['LIBDIR'] = os.path.join(mybase, 'bin') + build_time_vars['LIBDIR'] = os.path.join(mybase, 'lib') + build_time_vars['CONFINCLUDEPY'] = build_time_vars['INCLUDEPY'] # try paths relative to sys.base_prefix first tzpaths = [ - os.path.join(mybase, 'share', 'zoneinfo'), - diff --git a/recipe/patches/0030-Swap-libffi8-for-7.patch b/recipe/patches/0030-Swap-libffi8-for-7.patch index df5aefb..6b532fd 100644 --- a/recipe/patches/0030-Swap-libffi8-for-7.patch +++ b/recipe/patches/0030-Swap-libffi8-for-7.patch @@ -10,10 +10,18 @@ iff -r ab92c5997c51 rpython/rlib/clibffi.py separate_module_sources = separate_module_sources, post_include_bits = post_include_bits, ) -diff -r ab92c5997c51 rpython/translator/driver.py ---- a/rpython/translator/driver.py Sun Feb 20 17:00:07 2022 +0200 -+++ b/rpython/translator/driver.py Sun Feb 20 19:41:27 2022 +0200 -@@ -512,12 +512,12 @@ + +# HG changeset patch +# Date 1670412092 18000 +# Wed Dec 07 06:21:32 2022 -0500 +# Branch release-pypy3.8-v7.x +# Node ID ffffffffffffffffffffffffffffffffffffffff +# Parent c20fe3f310f1d209d69a71d903dd17e5c3cf0de9 + +diff -r c20fe3f310f1 rpython/translator/driver.py +--- a/rpython/translator/driver.py ++++ b/rpython/translator/driver.py +@@ -512,11 +512,11 @@ # HACK: copy libcffi-*.dll which is required for venvs # At some point, we should stop doing this, and instead # use the artifact from packaging the build instead @@ -22,10 +30,10 @@ diff -r ab92c5997c51 rpython/translator/driver.py if sys.platform == 'win32' and not libffi: raise RuntimeError('could not find libffi') elif libffi: - # in tests, we can mock using windows without libffi -- shutil.copyfile(str(libffi), os.getcwd() + r'\libffi-8.dll') -+ shutil.copyfile(str(libffi), os.getcwd() + r'\libffi-7.dll') - self.c_entryp = newexename - self.log.info("created: %s" % (self.c_entryp,)) - +- target = os.getcwd() + r'\libffi-8.dll' ++ target = os.getcwd() + r'\libffi-7.dll' + if not os.path.exists(target): + # in tests, we can mock using windows without libffi + shutil.copyfile(str(libffi), target) + diff --git a/recipe/patches/0031-Disable-embedding-and-portable.patch b/recipe/patches/0031-Disable-embedding-and-portable.patch deleted file mode 100644 index bb76b1a..0000000 --- a/recipe/patches/0031-Disable-embedding-and-portable.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -r 1dbd2e1e1866 pypy/tool/release/package.py ---- a/pypy/tool/release/package.py -+++ b/pypy/tool/release/package.py -@@ -478,13 +478,13 @@ - parser.add_argument('--embedded-dependencies', '--no-embedded-dependencies', - dest='embed_dependencies', - action=NegateAction, -- default=(ARCH in ('darwin', 'aarch64', 'x86_64')), -+ default=False, - help='whether to embed dependencies in CFFI modules ' - '(default on OS X)') - parser.add_argument('--make-portable', '--no-make-portable', - dest='make_portable', - action=NegateAction, -- default=(ARCH in ('darwin',)), -+ default=False, - help='make the package portable by shipping ' - 'dependent shared objects and mangling RPATH') - options = parser.parse_args(args) - diff --git a/recipe/patches/0031-pre-v7.3.10-fix-generic-alias.patch b/recipe/patches/0031-pre-v7.3.10-fix-generic-alias.patch deleted file mode 100644 index 42d07ec..0000000 --- a/recipe/patches/0031-pre-v7.3.10-fix-generic-alias.patch +++ /dev/null @@ -1,101 +0,0 @@ -diff -r 05fbe3aa5b08 lib_pypy/_contextvars.py ---- a/lib_pypy/_contextvars.py Tue Mar 29 08:15:20 2022 +0300 -+++ b/lib_pypy/_contextvars.py Tue Apr 05 07:32:45 2022 +0300 -@@ -162,9 +162,8 @@ - - token._used = True - -- @classmethod -- def __class_getitem__(self, key): -- return self -+ def __class_getitem__(self, item): -+ return GenericAlias(self, item) - - def __repr__(self): - default = '' -diff -r 05fbe3aa5b08 lib_pypy/_ctypes/structure.py ---- a/lib_pypy/_ctypes/structure.py Tue Mar 29 08:15:20 2022 +0300 -+++ b/lib_pypy/_ctypes/structure.py Tue Apr 05 07:32:45 2022 +0300 -@@ -4,7 +4,7 @@ - store_reference, ensure_objects, CArgObject - from _ctypes.array import Array, swappedorder, byteorder - from _ctypes.pointer import _Pointer --import inspect, __pypy__ -+import __pypy__ - - - def names_and_fields(self, _fields_, superclass, anonymous_fields=None): -@@ -28,7 +28,7 @@ - raise TypeError('bit fields not allowed for type ' + tp.__name__) - - all_fields = [] -- for cls in reversed(inspect.getmro(superclass)): -+ for cls in reversed(superclass.__mro__): - # The first field comes from the most base class - all_fields.extend(getattr(cls, '_fields_', [])) - all_fields.extend(_fields_) -diff -r 05fbe3aa5b08 lib_pypy/_pypy_generic_alias.py ---- a/lib_pypy/_pypy_generic_alias.py Tue Mar 29 08:15:20 2022 +0300 -+++ b/lib_pypy/_pypy_generic_alias.py Tue Apr 05 07:32:45 2022 +0300 -@@ -10,20 +10,35 @@ - )) - - class GenericAlias: -+ -+ __slots__ = ("__weakref__", "_origin", "_args", "_parameters", "_hash") -+ - def __new__(cls, origin, args): - result = super(GenericAlias, cls).__new__(cls) - if not isinstance(args, tuple): - args = (args, ) -- result.__origin__ = origin -- result.__args__ = args -- result.__parameters__ = _make_parameters(args) -+ result._origin = origin -+ result._args = args -+ result._parameters = _make_parameters(args) - return result - -+ @property -+ def __origin__(self): -+ return object.__getattribute__(self, "_origin") -+ -+ @property -+ def __args__(self): -+ return object.__getattribute__(self, "_args") -+ -+ @property -+ def __parameters__(self): -+ return object.__getattribute__(self, "_parameters") -+ - def __call__(self, *args, **kwargs): - result = self.__origin__(*args, **kwargs) - try: - result.__orig_class__ = self -- except AttributeError: -+ except (AttributeError, TypeError): - pass - return result - -@@ -68,9 +83,9 @@ - return hash(self.__origin__) ^ hash(self.__args__) - - def __dir__(self): -- res = dir(self.__origin__) -- res.extend(_ATTR_EXCEPTIONS) -- return res -+ cls = type(self) -+ dir_origin = set(dir(self.__origin__)) -+ return sorted(_ATTR_EXCEPTIONS | dir_origin) - - def __subclasscheck__(self, other): - raise TypeError("issubclass() argument 2 cannot be a parameterized generic") -@@ -84,6 +99,8 @@ - def _repr_item(it): - if it == Ellipsis: - return "..." -+ if type(it) is GenericAlias: -+ return repr(it) - try: - qualname = getattr(it, "__qualname__") - module = getattr(it, "__module__") diff --git a/recipe/patches/0032a-pre-v7.3.10-fix-object-h.patch b/recipe/patches/0032a-pre-v7.3.10-fix-object-h.patch deleted file mode 100644 index 8b6928f..0000000 --- a/recipe/patches/0032a-pre-v7.3.10-fix-object-h.patch +++ /dev/null @@ -1,38 +0,0 @@ -# HG changeset patch -Fix order of #define to match CPython: push later to avoid confusing the compiler - -diff -r 4b1ae7a563b2 -r 10c7664146da pypy/module/cpyext/include/object.h ---- a/pypy/module/cpyext/include/object.h -+++ b/pypy/module/cpyext/include/object.h -@@ -12,10 +12,6 @@ - #define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1)) - #define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1) - --#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None --#define Py_RETURN_NOTIMPLEMENTED \ -- return Py_INCREF(Py_NotImplemented), Py_NotImplemented -- - /* - CPython has this for backwards compatibility with really old extensions, and now - we have it for compatibility with CPython. -@@ -102,12 +98,19 @@ - - #define Py_None (&_Py_NoneStruct) - -+/* Macro for returning Py_None from a function */ -+#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None -+ - /* - Py_NotImplemented is a singleton used to signal that an operation is - not implemented for a given type combination. - */ - #define Py_NotImplemented (&_Py_NotImplementedStruct) - -+/* Macro for returning Py_NotImplemented from a function */ -+#define Py_RETURN_NOTIMPLEMENTED \ -+ return Py_INCREF(Py_NotImplemented), Py_NotImplemented -+ - /* Rich comparison opcodes */ - /* - XXX: Also defined in slotdefs.py - diff --git a/recipe/patches/0032b-pre-v7.3.10-fix-object-h.patch b/recipe/patches/0032b-pre-v7.3.10-fix-object-h.patch deleted file mode 100644 index 1053eeb..0000000 --- a/recipe/patches/0032b-pre-v7.3.10-fix-object-h.patch +++ /dev/null @@ -1,30 +0,0 @@ -# HG changeset patch -Fix order of #define to match CPython: push later to avoid confusing the compiler - -diff -r 05fbe3aa5b08 pypy/module/cpyext/include/object.h ---- a/pypy/module/cpyext/include/object.h -+++ b/pypy/module/cpyext/include/object.h -@@ -12,8 +12,6 @@ - #define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1)) - #define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1) - --#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None -- - /* - CPython has this for backwards compatibility with really old extensions, and now - we have it for compatibility with CPython. -@@ -139,9 +137,12 @@ - - #define _Py_ForgetReference(ob) /* nothing */ - --#define Py_None (&_Py_NoneStruct) - #endif - -+#define Py_None (&_Py_NoneStruct) -+ -+/* Macro for returning Py_None from a function */ -+#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None - - /* - Py_NotImplemented is a singleton used to signal that an operation is - diff --git a/recipe/patches/0033-pre-v7.3.10-fix-windows-scratch-reg.patch b/recipe/patches/0033-pre-v7.3.10-fix-windows-scratch-reg.patch deleted file mode 100644 index 8514b1d..0000000 --- a/recipe/patches/0033-pre-v7.3.10-fix-windows-scratch-reg.patch +++ /dev/null @@ -1,98 +0,0 @@ -diff -r 18296429103c -r be7b113b4530 rpython/jit/backend/x86/regalloc.py ---- a/rpython/jit/backend/x86/regalloc.py Sat May 28 18:10:26 2022 +0200 -+++ b/rpython/jit/backend/x86/regalloc.py Sun May 29 07:36:20 2022 +0300 -@@ -128,6 +128,7 @@ - class X86_64_WIN_XMMRegisterManager(X86_64_XMMRegisterManager): - # xmm15 reserved for scratch use - all_regs = [xmm0, xmm1, xmm2, xmm3, xmm4] -+ save_around_call_regs = all_regs - - class X86FrameManager(FrameManager): - def __init__(self, base_ofs): -@@ -1326,11 +1327,7 @@ - # Do we have a temp var? - if IS_X86_64: - tmpreg = X86_64_SCRATCH_REG -- if WIN64: -- # XXX perhaps use this for all_regs and do xmmtmp = None? -- xmmtmp = xmm5 -- else: -- xmmtmp = X86_64_XMM_SCRATCH_REG -+ xmmtmp = X86_64_XMM_SCRATCH_REG - else: - tmpreg = None - xmmtmp = None -diff -r 18296429103c -r be7b113b4530 rpython/jit/backend/x86/reghint.py ---- a/rpython/jit/backend/x86/reghint.py Sat May 28 18:10:26 2022 +0200 -+++ b/rpython/jit/backend/x86/reghint.py Sun May 29 07:36:20 2022 +0300 -@@ -14,6 +14,7 @@ - SAVE_GCREF_REGS, SAVE_ALL_REGS) - - from rpython.jit.backend.x86.regalloc import ( -+ gpr_reg_mgr_cls, xmm_reg_mgr_cls, compute_gc_level, - X86RegisterManager, X86XMMRegisterManager, - X86_64_RegisterManager, X86_64_XMMRegisterManager, compute_gc_level - ) -@@ -171,8 +172,6 @@ - oplist[num] = value - - class CallHints32(object): -- RegisterManager = X86RegisterManager -- XMMRegisterManager = X86XMMRegisterManager - - def _block_non_caller_save(self, position, save_all_regs, hinted_gpr=None, hinted_xmm=None): - if hinted_gpr is None: -@@ -182,15 +181,15 @@ - # block all remaining registers that are not caller save - - # XXX the case save_all_regs == SAVE_GCREF_REGS -- # (save callee-save regs + gc ptrs) is no expressible atm -+ # (save callee-save regs + gc ptrs) is not expressible atm - if save_all_regs == SAVE_ALL_REGS: -- regs = self.RegisterManager.all_regs -+ regs = gpr_reg_mgr_cls.all_regs - else: -- regs = self.RegisterManager.save_around_call_regs -+ regs = gpr_reg_mgr_cls.save_around_call_regs - for reg in regs: - if reg not in hinted_gpr: - self.longevity.fixed_register(position, reg) -- for reg in self.XMMRegisterManager.all_regs: -+ for reg in xmm_reg_mgr_cls.all_regs: - if reg not in hinted_xmm: - self.longevity.fixed_register(position, reg) - -@@ -202,9 +201,6 @@ - ARGUMENTS_GPR = callbuilder.CallBuilder64.ARGUMENTS_GPR - ARGUMENTS_XMM = callbuilder.CallBuilder64.ARGUMENTS_XMM - -- RegisterManager = X86_64_RegisterManager -- XMMRegisterManager = X86_64_XMMRegisterManager -- - def __init__(self, longevity): - self.longevity = longevity - -diff -r 18296429103c -r be7b113b4530 rpython/jit/backend/x86/regloc.py ---- a/rpython/jit/backend/x86/regloc.py Sat May 28 18:10:26 2022 +0200 -+++ b/rpython/jit/backend/x86/regloc.py Sun May 29 07:36:20 2022 +0300 -@@ -1,7 +1,7 @@ - from rpython.jit.metainterp.history import ConstInt - from rpython.jit.backend.x86 import rx86 - from rpython.rlib.unroll import unrolling_iterable --from rpython.jit.backend.x86.arch import WORD, IS_X86_32, IS_X86_64 -+from rpython.jit.backend.x86.arch import WORD, IS_X86_32, IS_X86_64, WIN64 - from rpython.tool.sourcetools import func_with_new_name - from rpython.rlib.objectmodel import specialize, instantiate - from rpython.rlib.rarithmetic import intmask, r_uint -@@ -353,7 +353,10 @@ - - # XXX: a GPR scratch register is definitely needed, but we could probably do - # without an xmm scratch reg. --X86_64_XMM_SCRATCH_REG = xmm15 -+if WIN64: -+ X86_64_XMM_SCRATCH_REG = xmm5 -+else: -+ X86_64_XMM_SCRATCH_REG = xmm15 - - # note: 'r' is after 'i' in this list, for _binaryop() - unrolling_location_codes = unrolling_iterable(list("irbsmajx")) diff --git a/recipe/patches/0034-pre-v7.3.10-libc-darwin-path.patch b/recipe/patches/0034-pre-v7.3.10-libc-darwin-path.patch deleted file mode 100644 index 6878f69..0000000 --- a/recipe/patches/0034-pre-v7.3.10-libc-darwin-path.patch +++ /dev/null @@ -1,30 +0,0 @@ -# HG changeset patch -# User Maciej Fijalkowski -# Date 1651481758 -10800 -# Mon May 02 11:55:58 2022 +0300 -# Branch m1 -# Node ID 08f27ba7e2b3d3d0ebb57bbc9310f9cf96403faf -# Parent 7e763080b759d791cad18b1374a69ba460e6307e -try a bit harder to run more tests on OS X - -diff -r 7e763080b759 -r 08f27ba7e2b3 rpython/rlib/clibffi.py ---- a/rpython/rlib/clibffi.py Wed Apr 27 10:29:10 2022 +0300 -+++ b/rpython/rlib/clibffi.py Mon May 02 11:55:58 2022 +0300 -@@ -276,10 +276,14 @@ - - if not _WIN32: - libc_name = ctypes.util.find_library('c') -- assert libc_name is not None, "Cannot find C library, ctypes.util.find_library('c') returned None" -+ if libc_name is None and sys.platform == 'darwin': -+ def get_libc_name(): -+ return '/usr/lib/libc.dylib' -+ else: -+ assert libc_name is not None, "Cannot find C library, ctypes.util.find_library('c') returned None" - -- def get_libc_name(): -- return libc_name -+ def get_libc_name(): -+ return libc_name - elif _MSVC: - get_libc_handle = external('pypy_get_libc_handle', [], DLLHANDLE) - diff --git a/recipe/patches/fix_tzpath.patch b/recipe/patches/fix_tzpath.patch deleted file mode 100644 index 558e555..0000000 --- a/recipe/patches/fix_tzpath.patch +++ /dev/null @@ -1,17 +0,0 @@ -From: Isuru Fernando -Date: Sat, 29 Oct 2022 23:09:07 -0500 -Subject: [PATCH 1/1] Fix TZPATH on Windows - ---- a/lib-python/3/sysconfig.py -+++ b/lib-python/3/sysconfig.py -@@ -585,9 +585,9 @@ - - if os.name == 'nt': - _init_non_posix(_CONFIG_VARS) -- _CONFIG_VARS['TZPATH'] = '' -+ _CONFIG_VARS['TZPATH'] = os.path.join(_PREFIX, "share", "zoneinfo") - if os.name == 'posix': - _init_posix(_CONFIG_VARS) - # For backward compatibility, see issue19555 - SO = _CONFIG_VARS.get('EXT_SUFFIX') - if SO is not None: diff --git a/recipe/patches/tklib_build.patch b/recipe/patches/tklib_build.patch index 94f9dd6..c283a88 100644 --- a/recipe/patches/tklib_build.patch +++ b/recipe/patches/tklib_build.patch @@ -1,14 +1,20 @@ ---- pypy3/lib_pypy/_tkinter/tklib_build.py 2018-01-10 15:58:49.000000000 +0100 -+++ pypy3/lib_pypy/_tkinter/tklib_build.py 2018-02-23 10:46:06.000000000 +0100 -@@ -18,35 +18,13 @@ - linklibs = ['tcl85', 'tk85'] +diff -r 1328cd0b061e lib_pypy/_tkinter/tklib_build.py +--- a/lib_pypy/_tkinter/tklib_build.py Sun Jan 08 09:54:04 2023 +0200 ++++ b/lib_pypy/_tkinter/tklib_build.py Sun Jan 08 12:40:36 2023 +0200 +@@ -17,40 +17,10 @@ + incdirs = [] + linklibs = ['tcl86t', 'tk86t'] libdirs = [] - elif sys.platform == 'darwin': +-elif sys.platform == 'darwin': - # homebrew +- homebrew = os.environ.get('HOMEBREW_PREFIX', '') - incdirs = ['/usr/local/opt/tcl-tk/include'] - linklibs = ['tcl8.6', 'tk8.6'] -- libdirs = ['/usr/local/opt/tcl-tk/lib'] --else: +- libdirs = [] +- if homebrew: +- incdirs.append(homebrew + '/include') +- libdirs.append(homebrew + '/opt/tcl-tk/lib') + else: - # On some Linux distributions, the tcl and tk libraries are - # stored in /usr/include, so we must check this case also + incdirs = [] @@ -35,11 +41,6 @@ - sys.stderr.write("*** TCL libraries not found! Falling back...\n") - incdirs = [] - linklibs = ['tcl', 'tk'] -+else: -+ incdirs = [] -+ linklibs = ['tcl8.6', 'tk8.6'] -+ libdirs = [] config_ffi = FFI() config_ffi.cdef(""" -