From 7c69c9c95fa8f2309b19e9b0f859409d193dcc10608bd308f2f76b35b5a5beec Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Mon, 18 Jul 2022 18:46:41 +0000 Subject: [PATCH] Accepting request 989982 from home:bnavigator:branches:devel:languages:python - Add pythran-pr1984-fixdistutils.patch * gh#serge-sans-paille/pythran#1984 * Fixes gh#serge-sans-paille/pythran#1984 with setuptools >= 60 OBS-URL: https://build.opensuse.org/request/show/989982 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-pythran?expand=0&rev=6 --- python-pythran.changes | 7 ++ python-pythran.spec | 14 ++- pythran-pr1984-fixdistutils.patch | 163 ++++++++++++++++++++++++++++++ 3 files changed, 181 insertions(+), 3 deletions(-) create mode 100644 pythran-pr1984-fixdistutils.patch diff --git a/python-pythran.changes b/python-pythran.changes index 4a3cf36..7bc1ab0 100644 --- a/python-pythran.changes +++ b/python-pythran.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Jul 18 12:24:47 UTC 2022 - Ben Greiner + +- Add pythran-pr1984-fixdistutils.patch + * gh#serge-sans-paille/pythran#1984 + * Fixes gh#serge-sans-paille/pythran#1984 with setuptools >= 60 + ------------------------------------------------------------------- Tue Mar 15 07:59:46 UTC 2022 - Martin Liška diff --git a/python-pythran.spec b/python-pythran.spec index fda10c3..53e5575 100644 --- a/python-pythran.spec +++ b/python-pythran.spec @@ -54,6 +54,8 @@ URL: https://github.com/serge-sans-paille/pythran Source0: https://github.com/serge-sans-paille/pythran/archive/refs/tags/%{version}.tar.gz#/pythran-%{version}-gh.tar.gz Source99: python-pythran-rpmlintrc Patch0: gcc12-fixes.patch +# PATCH-FIX-UPSTREAM pythran-pr1984-fixdistutils.patch gh#serge-sans-paille/pythran#1984 +Patch1: pythran-pr1984-fixdistutils.patch BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -73,6 +75,7 @@ Requires: python-numpy-devel # /SECTION %if %{with test} BuildRequires: %{python_module ipython} +BuildRequires: %{python_module pip} BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest} BuildRequires: %{python_module pythran = %{version}} @@ -87,12 +90,10 @@ BuildArch: noarch Ahead of Time compiler for numeric kernels %prep -%setup -q -n pythran-%{version} -%patch0 -p1 +%autosetup -p1 -n pythran-%{version} find -name '*.hpp' -exec chmod -x {} + sed -i '1{/env python/d}' pythran/run.py -sed -i "s/'python'/sys.executable/" pythran/tests/test_distutils.py # Remove bundled header libs and use the ones from system rm -r third_party/boost @@ -101,6 +102,13 @@ cat >> setup.cfg << EOF no_boost=True EOF +# Register pytest.mark.module +cat >> pytest.ini << EOF +# https://github.com/serge-sans-paille/pythran/pull/286 +[pytest] +markers = + module: execute module annotate class +EOF # The tests have some cflags in them # We need to adapt the flags to play nicely with other obs flags # E.g. fortify source implies at least -O1 diff --git a/pythran-pr1984-fixdistutils.patch b/pythran-pr1984-fixdistutils.patch new file mode 100644 index 0000000..7ad5e5e --- /dev/null +++ b/pythran-pr1984-fixdistutils.patch @@ -0,0 +1,163 @@ +From 934e31d86a6721c378598d4000c3ee39c59a154f Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Sun, 3 Apr 2022 11:22:17 +0200 +Subject: [PATCH] Harden distutils tests + +Use correct executable when running import tests. +Use pip install instead of setup.py install to test install. +Should fix #1981 +--- + pythran/tests/test_distutils.py | 53 ++++++++++++++++++--------------- + 1 file changed, 29 insertions(+), 24 deletions(-) + +Index: pythran-0.11.0/pythran/tests/test_distutils.py +=================================================================== +--- pythran-0.11.0.orig/pythran/tests/test_distutils.py ++++ pythran-0.11.0/pythran/tests/test_distutils.py +@@ -10,6 +10,8 @@ cwd = os.path.dirname(__file__) + python_version = "python{}.{}".format(sys.version_info.major, + sys.version_info.minor) + ++python = sys.executable ++ + def find_so(name, path): + for root, dirs, files in os.walk(path): + for filename in files: +@@ -19,33 +21,35 @@ def find_so(name, path): + class TestDistutils(unittest.TestCase): + + def test_setup_build(self): +- check_call(['python', 'setup.py', 'build'], ++ check_call([python, 'setup.py', 'build'], + cwd=os.path.join(cwd, 'test_distutils')) +- check_call(['python', 'setup.py', 'install', '--prefix=demo_install'], ++ check_call([python, '-m', 'pip', 'install', '.', '--prefix=demo_install'], + cwd=os.path.join(cwd, 'test_distutils')) + + base = os.path.join(cwd, 'test_distutils', 'demo_install',) + libdir = os.path.join(base, 'lib') + if not os.path.isdir(libdir): + libdir = os.path.join(base, 'lib64') +- check_call(['python', '-c', 'import demo'], +- cwd=os.path.join(libdir, python_version, 'site-packages')) +- check_call(['python', 'setup.py', 'clean'], ++ ++ local_env = os.environ.copy() ++ local_env['PYTHONPATH'] = os.path.join(libdir, python_version, 'site-packages') ++ check_call([python, '-c', 'import demo'], env=local_env) ++ check_call([python, 'setup.py', 'clean'], + cwd=os.path.join(cwd, 'test_distutils')) + shutil.rmtree(os.path.join(cwd, 'test_distutils', 'demo_install')) + shutil.rmtree(os.path.join(cwd, 'test_distutils', 'build')) + + def test_setup_sdist_install(self): +- check_call(['python', 'setup.py', 'sdist', "--dist-dir=sdist"], ++ check_call([python, 'setup.py', 'sdist', "--dist-dir=sdist"], + cwd=os.path.join(cwd, 'test_distutils')) + check_call(['tar', 'xzf', 'demo-1.0.tar.gz'], + cwd=os.path.join(cwd, 'test_distutils', 'sdist')) +- check_call(['python', 'setup.py', 'install', '--prefix=demo_install'], ++ check_call([python, 'setup.py', 'install', '--prefix=demo_install'], + cwd=os.path.join(cwd, 'test_distutils', 'sdist', 'demo-1.0')) + shutil.rmtree(os.path.join(cwd, 'test_distutils', 'sdist')) + + def test_setup_bdist_install(self): +- check_call(['python', 'setup.py', 'bdist', "--dist-dir=bdist"], ++ check_call([python, 'setup.py', 'bdist', "--dist-dir=bdist"], + cwd=os.path.join(cwd, 'test_distutils')) + dist_path = os.path.join(cwd, 'test_distutils', 'bdist') + tgz = [f for f in os.listdir(dist_path) if f.endswith(".tar.gz")][0] +@@ -56,7 +60,7 @@ class TestDistutils(unittest.TestCase): + shutil.rmtree(dist_path) + + def test_setup_wheel_install(self): +- check_call(['python', 'setup.py', 'bdist_wheel', "--dist-dir=bdist_wheel"], ++ check_call([python, 'setup.py', 'bdist_wheel', "--dist-dir=bdist_wheel"], + cwd=os.path.join(cwd, 'test_distutils_setuptools')) + dist_path = os.path.join(cwd, 'test_distutils_setuptools', 'bdist_wheel') + wheel_dir = 'wheeeeeeel' +@@ -69,33 +73,34 @@ class TestDistutils(unittest.TestCase): + + + def test_setup_build2(self): +- check_call(['python', 'setup.py', 'build'], ++ check_call([python, 'setup.py', 'build'], + cwd=os.path.join(cwd, 'test_distutils_packaged')) +- check_call(['python', 'setup.py', 'install', '--prefix=demo_install2'], ++ check_call([python, '-m', 'pip', 'install', '.', '--prefix=demo_install2'], + cwd=os.path.join(cwd, 'test_distutils_packaged')) + + base = os.path.join(cwd, 'test_distutils_packaged', 'demo_install2',) + libdir = os.path.join(base, 'lib') + if not os.path.isdir(libdir): + libdir = os.path.join(base, 'lib64') +- check_call(['python', '-c', 'import demo2.a'], +- cwd=os.path.join(libdir, python_version, 'site-packages')) +- check_call(['python', 'setup.py', 'clean'], ++ local_env = os.environ.copy() ++ local_env['PYTHONPATH'] = os.path.join(libdir, python_version, 'site-packages') ++ check_call([python, '-c', 'import demo2.a'], env=local_env) ++ check_call([python, 'setup.py', 'clean'], + cwd=os.path.join(cwd, 'test_distutils_packaged')) + shutil.rmtree(os.path.join(cwd, 'test_distutils_packaged', 'demo_install2')) + shutil.rmtree(os.path.join(cwd, 'test_distutils_packaged', 'build')) + + def test_setup_sdist_install2(self): +- check_call(['python', 'setup.py', 'sdist', "--dist-dir=sdist2"], ++ check_call([python, 'setup.py', 'sdist', "--dist-dir=sdist2"], + cwd=os.path.join(cwd, 'test_distutils_packaged')) + check_call(['tar', 'xzf', 'demo2-1.0.tar.gz'], + cwd=os.path.join(cwd, 'test_distutils_packaged', 'sdist2')) +- check_call(['python', 'setup.py', 'install', '--prefix=demo_install2'], ++ check_call([python, 'setup.py', 'install', '--prefix=demo_install2'], + cwd=os.path.join(cwd, 'test_distutils_packaged', 'sdist2', 'demo2-1.0')) + shutil.rmtree(os.path.join(cwd, 'test_distutils_packaged', 'sdist2')) + + def test_setup_bdist_install2(self): +- check_call(['python', 'setup.py', 'bdist', "--dist-dir=bdist"], ++ check_call([python, 'setup.py', 'bdist', "--dist-dir=bdist"], + cwd=os.path.join(cwd, 'test_distutils_packaged')) + dist_path = os.path.join(cwd, 'test_distutils_packaged', 'bdist') + tgz = [f for f in os.listdir(dist_path) if f.endswith(".tar.gz")][0] +@@ -106,34 +111,34 @@ class TestDistutils(unittest.TestCase): + shutil.rmtree(dist_path) + + def test_setup_build3(self): +- check_call(['python', 'setup.py', 'build'], ++ check_call([python, 'setup.py', 'build'], + cwd=os.path.join(cwd, 'test_distutils_numpy')) +- check_call(['python', 'setup.py', 'install', '--prefix=demo_install3'], ++ check_call([python, 'setup.py', 'install', '--prefix=demo_install3'], + cwd=os.path.join(cwd, 'test_distutils_numpy')) + + base = os.path.join(cwd, 'test_distutils_numpy', 'demo_install3',) + libdir = os.path.join(base, 'lib') + if not os.path.isdir(libdir): + libdir = os.path.join(base, 'lib64') +- check_call(['python', '-c', 'import a'], ++ check_call([python, '-c', 'import a'], + cwd=os.path.join(libdir, python_version, 'site-packages', + 'demo3')) +- check_call(['python', 'setup.py', 'clean'], ++ check_call([python, 'setup.py', 'clean'], + cwd=os.path.join(cwd, 'test_distutils_numpy')) + shutil.rmtree(os.path.join(cwd, 'test_distutils_numpy', 'demo_install3')) + shutil.rmtree(os.path.join(cwd, 'test_distutils_numpy', 'build')) + + def test_setup_sdist_install3(self): +- check_call(['python', 'setup.py', 'sdist', "--dist-dir=sdist3"], ++ check_call([python, 'setup.py', 'sdist', "--dist-dir=sdist3"], + cwd=os.path.join(cwd, 'test_distutils_numpy')) + check_call(['tar', 'xzf', 'demo3-1.0.tar.gz'], + cwd=os.path.join(cwd, 'test_distutils_numpy', 'sdist3')) +- check_call(['python', 'setup.py', 'install', '--prefix=demo_install3'], ++ check_call([python, 'setup.py', 'install', '--prefix=demo_install3'], + cwd=os.path.join(cwd, 'test_distutils_numpy', 'sdist3', 'demo3-1.0')) + shutil.rmtree(os.path.join(cwd, 'test_distutils_numpy', 'sdist3')) + + def test_setup_bdist_install3(self): +- check_call(['python', 'setup.py', 'bdist', "--dist-dir=bdist"], ++ check_call([python, 'setup.py', 'bdist', "--dist-dir=bdist"], + cwd=os.path.join(cwd, 'test_distutils_numpy')) + dist_path = os.path.join(cwd, 'test_distutils_numpy', 'bdist') + tgz = [f for f in os.listdir(dist_path) if f.endswith(".tar.gz")][0]