Accepting request 990028 from devel:languages:python:numeric

OBS-URL: https://build.opensuse.org/request/show/990028
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-pythran?expand=0&rev=3
This commit is contained in:
Dominique Leuenberger 2022-08-08 06:44:53 +00:00 committed by Git OBS Bridge
commit 8f9543b5fd
3 changed files with 181 additions and 3 deletions

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Jul 18 12:24:47 UTC 2022 - Ben Greiner <code@bnavigator.de>
- 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 <mliska@suse.cz>

View File

@ -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

View File

@ -0,0 +1,163 @@
From 934e31d86a6721c378598d4000c3ee39c59a154f Mon Sep 17 00:00:00 2001
From: serge-sans-paille <serge.guelton@telecom-bretagne.eu>
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]