From f44fa40f164efb4aeccdf2d279728d03101497df9c69191d1202a99217d76649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Mon, 10 Feb 2025 14:27:11 +0000 Subject: [PATCH] - Update to 1.5.2 * Roll back agent change due to misbehaving JVM installs. * Correct issues with non-ascii path for jdbc connections and forName. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-JPype1?expand=0&rev=21 --- .gitattributes | 23 ++++++ .gitignore | 1 + JPype1-1.5.0.tar.gz | 3 + JPype1-java8compat.patch | 63 ++++++++++++++++ JPype1-numpy2compat.patch | 84 +++++++++++++++++++++ jpype1-1.5.1.tar.gz | 3 + jpype1-1.5.2.tar.gz | 3 + python-JPype1.changes | 152 ++++++++++++++++++++++++++++++++++++++ python-JPype1.spec | 106 ++++++++++++++++++++++++++ 9 files changed, 438 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 JPype1-1.5.0.tar.gz create mode 100644 JPype1-java8compat.patch create mode 100644 JPype1-numpy2compat.patch create mode 100644 jpype1-1.5.1.tar.gz create mode 100644 jpype1-1.5.2.tar.gz create mode 100644 python-JPype1.changes create mode 100644 python-JPype1.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/JPype1-1.5.0.tar.gz b/JPype1-1.5.0.tar.gz new file mode 100644 index 0000000..7885f78 --- /dev/null +++ b/JPype1-1.5.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:425a6e1966afdd5848b60c2688bcaeb7e40ba504a686f1114589668e0631e878 +size 819110 diff --git a/JPype1-java8compat.patch b/JPype1-java8compat.patch new file mode 100644 index 0000000..60167ff --- /dev/null +++ b/JPype1-java8compat.patch @@ -0,0 +1,63 @@ +Only in JPype1-1.4.1: JPype1-java8compat.patch +--- JPype1-1.4.1/native/build.xml 2020-07-17 00:34:07.000000000 +0200 ++++ JPype1-1.4.1/native/build.xml 2023-06-12 11:24:36.344297754 +0200 +@@ -1,7 +1,7 @@ + + + +- ++ + + + +@@ -16,6 +16,7 @@ + + +@@ -23,6 +24,7 @@ + + +--- JPype1-1.4.1/test/build.xml 2020-07-17 00:34:07.000000000 +0200 ++++ JPype1-1.4.1/test/build.xml 2023-06-12 12:47:52.223097870 +0200 +@@ -20,8 +20,6 @@ + + + + + +@@ -34,8 +32,9 @@ + + + + + +@@ -47,8 +46,9 @@ + + + diff --git a/JPype1-numpy2compat.patch b/JPype1-numpy2compat.patch new file mode 100644 index 0000000..6fd8ec9 --- /dev/null +++ b/JPype1-numpy2compat.patch @@ -0,0 +1,84 @@ +diff -rup JPype1-1.5.0.orig/test/jpypetest/test_conversionInt.py JPype1-1.5.0.new/test/jpypetest/test_conversionInt.py +--- JPype1-1.5.0.orig/test/jpypetest/test_conversionInt.py 2023-12-26 06:51:56.000000000 -0500 ++++ JPype1-1.5.0.new/test/jpypetest/test_conversionInt.py 2024-09-11 17:03:59.996582210 -0400 +@@ -76,7 +76,7 @@ class ConversionIntTestCase(common.JPype + def testIntFromNPFloat(self): + import numpy as np + with self.assertRaises(TypeError): +- self.Test.callInt(np.float_(2)) ++ self.Test.callInt(np.float64(2)) + + @common.unittest.skipUnless(haveNumpy(), "numpy not available") + def testIntFromNPFloat32(self): +diff -rup JPype1-1.5.0.orig/test/jpypetest/test_conversionLong.py JPype1-1.5.0.new/test/jpypetest/test_conversionLong.py +--- JPype1-1.5.0.orig/test/jpypetest/test_conversionLong.py 2023-12-26 06:51:56.000000000 -0500 ++++ JPype1-1.5.0.new/test/jpypetest/test_conversionLong.py 2024-09-11 17:03:59.996582210 -0400 +@@ -76,7 +76,7 @@ class ConversionLongTestCase(common.JPyp + def testLongFromNPFloat(self): + import numpy as np + with self.assertRaises(TypeError): +- self.Test.callLong(np.float_(2)) ++ self.Test.callLong(np.float64(2)) + + @common.unittest.skipUnless(haveNumpy(), "numpy not available") + def testLongFromNPFloat32(self): +diff -rup JPype1-1.5.0.orig/test/jpypetest/test_conversionShort.py JPype1-1.5.0.new/test/jpypetest/test_conversionShort.py +--- JPype1-1.5.0.orig/test/jpypetest/test_conversionShort.py 2023-12-26 06:51:56.000000000 -0500 ++++ JPype1-1.5.0.new/test/jpypetest/test_conversionShort.py 2024-09-11 17:03:59.996582210 -0400 +@@ -76,7 +76,7 @@ class ConversionShortTestCase(common.JPy + def testShortFromNPFloat(self): + import numpy as np + with self.assertRaises(TypeError): +- self.Test.callShort(np.float_(2)) ++ self.Test.callShort(np.float64(2)) + + @common.unittest.skipUnless(haveNumpy(), "numpy not available") + def testShortFromNPFloat32(self): +diff -rup JPype1-1.5.0.orig/test/jpypetest/test_jboolean.py JPype1-1.5.0.new/test/jpypetest/test_jboolean.py +--- JPype1-1.5.0.orig/test/jpypetest/test_jboolean.py 2023-12-26 06:51:56.000000000 -0500 ++++ JPype1-1.5.0.new/test/jpypetest/test_jboolean.py 2024-09-11 17:03:59.996582210 -0400 +@@ -103,7 +103,7 @@ class JBooleanTestCase(common.JPypeTestC + def testBooleanFromNPFloat(self): + import numpy as np + with self.assertRaises(TypeError): +- self.Test.callBoolean(np.float_(2)) ++ self.Test.callBoolean(np.float64(2)) + + @common.requireNumpy + def testBooleanFromNPFloat32(self): +diff -rup JPype1-1.5.0.orig/test/jpypetest/test_jbyte.py JPype1-1.5.0.new/test/jpypetest/test_jbyte.py +--- JPype1-1.5.0.orig/test/jpypetest/test_jbyte.py 2023-12-26 06:51:56.000000000 -0500 ++++ JPype1-1.5.0.new/test/jpypetest/test_jbyte.py 2024-09-11 17:03:59.996582210 -0400 +@@ -111,7 +111,7 @@ class JByteTestCase(common.JPypeTestCase + def testByteFromNPFloat(self): + import numpy as np + with self.assertRaises(TypeError): +- self.fixture.callByte(np.float_(2)) ++ self.fixture.callByte(np.float64(2)) + + @common.requireNumpy + def testByteFromNPFloat32(self): +diff -rup JPype1-1.5.0.orig/test/jpypetest/test_jdouble.py JPype1-1.5.0.new/test/jpypetest/test_jdouble.py +--- JPype1-1.5.0.orig/test/jpypetest/test_jdouble.py 2023-12-26 06:51:56.000000000 -0500 ++++ JPype1-1.5.0.new/test/jpypetest/test_jdouble.py 2024-09-11 17:03:59.996582210 -0400 +@@ -375,7 +375,7 @@ class JDoubleTestCase(common.JPypeTestCa + + @common.requireNumpy + def testArrayInitFromNPFloat(self): +- a = np.random.random(100).astype(np.float_) ++ a = np.random.random(100).astype(np.float64) + jarr = JArray(JDouble)(a) + self.assertElementsAlmostEqual(a, jarr) + +diff -rup JPype1-1.5.0.orig/test/jpypetest/test_jfloat.py JPype1-1.5.0.new/test/jpypetest/test_jfloat.py +--- JPype1-1.5.0.orig/test/jpypetest/test_jfloat.py 2023-12-26 06:51:56.000000000 -0500 ++++ JPype1-1.5.0.new/test/jpypetest/test_jfloat.py 2024-09-11 17:03:59.996582210 -0400 +@@ -383,7 +383,7 @@ class JFloatTestCase(common.JPypeTestCas + + @common.requireNumpy + def testArrayInitFromNPFloat(self): +- a = np.random.random(100).astype(np.float_) ++ a = np.random.random(100).astype(np.float64) + jarr = JArray(JFloat)(a) + self.assertElementsAlmostEqual(a, jarr) + diff --git a/jpype1-1.5.1.tar.gz b/jpype1-1.5.1.tar.gz new file mode 100644 index 0000000..f1da234 --- /dev/null +++ b/jpype1-1.5.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbb8ea952bf0a0c6011f21a31a97baed241c4aad0e2499db386edfd5cf2adece +size 856550 diff --git a/jpype1-1.5.2.tar.gz b/jpype1-1.5.2.tar.gz new file mode 100644 index 0000000..db754c8 --- /dev/null +++ b/jpype1-1.5.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74a42eccf21d30394c1832aec3985a14965fa5320da087b65029d172c0cec43b +size 1011421 diff --git a/python-JPype1.changes b/python-JPype1.changes new file mode 100644 index 0000000..f6991e4 --- /dev/null +++ b/python-JPype1.changes @@ -0,0 +1,152 @@ +------------------------------------------------------------------- +Mon Feb 10 10:18:53 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 1.5.2 + * Roll back agent change due to misbehaving JVM installs. + * Correct issues with non-ascii path for jdbc connections and forName. + +------------------------------------------------------------------- +Sun Nov 24 23:13:17 UTC 2024 - Steve Kowalik + +- Update to 1.5.1: + * Make use of pyproject.toml for static project metadata + * Fix error in 3.12 during exception handling + * Changes for numpy 2.0 to fix test matrix. + * fix compatibility of jpype with setuptools==72.0.0 + * Update LICENSE + * prevent misuse of PyTuple_Pack + * Remove use of tp_new + * fix JUnpickler BufferOverflowException + * "Generic" JArray support + * Fix IllegalArgumentException with non-ascii paths + * Support extracting javadoc HTML files generated by Javadoc 17 + * [ci] allow to download missing Python versions + * Access to default methods in @JImplements + * handle non ascii classpath with system classloader + * free threaded build +- Drop patch JPype1-numpy2compat.patch, included upstream. + +------------------------------------------------------------------- +Wed Sep 11 21:14:09 UTC 2024 - Fergal Mc Carthy + +- Added patch JPype1-numpy2compat.patch to update the test code + to be numpy 2+ compatible. +- Add a BuildRequires for ca-certificates-mozilla to resolve + a certificates validation error during wheel creation for + Tumbleweed builds. + +------------------------------------------------------------------- +Thu Aug 22 14:52:07 UTC 2024 - Aline Werner + +- Switch to modern python on sle15. + +------------------------------------------------------------------- +Tue Feb 27 01:50:13 UTC 2024 - Steve Kowalik + +- Switch to pyproject and autosetup macros. + +------------------------------------------------------------------- +Sat Jan 6 17:12:01 UTC 2024 - Dirk Müller + +- update to 1.5.0: + * Support for Python 3.12 + * Switched __eq__ and __ne__ operator to use equals rather than + compareTo for comparable objects to avoid exception when + comparing object of different types. + * Fixed segmentation fault when comparing Java Comparable to + primitives. + * Java exceptions that occur in inequality comparisons now map + to Python TypeError. + * Fixed crash when calling subscript on JArray. + * Fixed direct byte buffers not reporting nbytes correctly when + cast to memoryview. + * Expand the defintion for Functional interface to include + classes without FunctionInterface annotation. + * Add additional matching level for derived types to resolve + ambiguities when a derived type is used in place of base + class when determining the method overload. This will + resolve some previous ambiguities between methods. + +------------------------------------------------------------------- +Mon Jun 12 11:00:29 UTC 2023 - Fridrich Strba + +- Do not hardcode java-15-openjdk, since this can be built with + any Java >= 9 +- Added patch: + * JPype1-java8compat.patch + + Build packages that are fully backward compatible to Java 8 + +------------------------------------------------------------------- +Tue Mar 7 00:25:49 UTC 2023 - John Vandenberg + +- Update to v1.4.1 + * Fixed issue with startJVM changing locale settings + * Changes to support Python 3.11 + * Fix truncation of strings on null when using convert strings + * Replaced distutil with packaging + +------------------------------------------------------------------- +Thu Aug 18 13:28:45 UTC 2022 - John Vandenberg + +- ExcludeArch armv7 and i586 due to significant test failures + +------------------------------------------------------------------- +Tue Aug 16 21:45:24 UTC 2022 - Yogalakshmi Arunachalam + +- Update to 1.4.0 + Support for all different buffer type conversions. + * Improved buffer transfers to numpy as guaranteed to match Java types. + However, exact dtype for conversions is os/numpy version dependent. + * Support for byte order channels on buffer transfers. + * Byte size for buffers now fixed to Java definitions. + * When directly accessing Java arrays using memory view, Python requires a cast + from buffers. Required because Python does not support memory view alterations + on non-native sizes. + Fix crash when comparing JChar. + * Order handling for numerical operations with JChar fixed. + * Improved matching for Java functors based on parameter count. + * Dropped support for Python 3.5 and 3.6 + * dbapi2 handles drivers that don't support autocommit. + * Fixed issue when Java classes with dunder methods such as __del__ caused + conflicts in Python type system. Java method which match dunder patterns are longer + translated to Python. + * Fix issue with numpy arrays with no dimensions resulting in crash. + * Support for user defined conversions for java.lang.Class and array types. + * Fixed issue with ssize_t on Windows for Python 3.10. + +------------------------------------------------------------------- +Mon Feb 21 12:18:03 UTC 2022 - John Vandenberg + +- Update to v1.3.0 + * Fixes for memory issues found when upgrading to Python 3.10 beta. + * Add additional diagnositics for importing of non-public class. + * Fixed issue with classes with unsatified dependencies leading to + a crash on windows. + * Fixed a bug with arrays created using the short cut. +- from v1.2.1 + * Missing stub files added. + * Python 3.9 issues are resolved on Windows. + * JPype scans jar files and rebuilding missing directories to + allow imports from stripped and obfuscated jar files. +- from v1.2.0 + * Added builds for Python 3.9. + * Fixed bug when importing from multi-release jars. + * addClassPath can add jar files after the JVM is started. + The default loader for JPype class is + ``org.jpype.classloader.DynamicClassLoader``. + * Build support of z/OS added. + * Bug causing ambiguity between primitives and variadic arguments + in method resolution was corrected. + * Boolean was inadvertently left out of method resolution. + ``boolean`` now properly matched with boxed types. + * Support for PyInstaller was added. + +------------------------------------------------------------------- +Tue Apr 27 09:47:52 UTC 2021 - Markéta Machová + +- skip python36 because of numpy + +------------------------------------------------------------------- +Sat Nov 14 05:05:32 AM UTC 2020 - John Vandenberg + +- Initial spec for v1.1.2 diff --git a/python-JPype1.spec b/python-JPype1.spec new file mode 100644 index 0000000..aefd237 --- /dev/null +++ b/python-JPype1.spec @@ -0,0 +1,106 @@ +# +# spec file for package python-JPype1 +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%bcond_without test +# https://build.opensuse.org/package/show/Java:packages/h2database is not in Factory +%bcond_with test_jdbc +%{?sle15_python_module_pythons} +Name: python-JPype1 +Version: 1.5.2 +Release: 0 +Summary: Python to Java bridge +License: Apache-2.0 +URL: https://github.com/jpype-project/jpype +Source: https://files.pythonhosted.org/packages/source/j/jpype1/jpype1-%{version}.tar.gz +Patch0: JPype1-java8compat.patch +BuildRequires: %{python_module devel} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: ant +BuildRequires: ca-certificates-mozilla +BuildRequires: fdupes +BuildRequires: gcc-c++ +BuildRequires: java-devel >= 9 +BuildRequires: javapackages-tools +BuildRequires: python-rpm-macros +Requires: java-headless >= 1.8 +Recommends: python-numpy +Suggests: python-typing_extensions +ExcludeArch: %{ix86} armv7 +%if %{with test} +# SECTION test requirements +BuildRequires: %{python_module jedi} +BuildRequires: %{python_module numpy} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module typing_extensions} +%if %{with test_jdbc} +BuildRequires: h2database +BuildRequires: hsqldb +BuildRequires: sqlite-jdbc +%endif +# /SECTION +%endif +%python_subpackages + +%description +A Python to Java bridge. + +%prep +%autosetup -p1 -n jpype1-%{version} +# Avoid build dependency on PyInstaller +rm jpype/_pyinstaller/test_jpype_pyinstaller.py + +%build +ant -f native/build.xml jar +export CFLAGS="%{optflags}" +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitearch} + +%if %{with test} +%check +ant -f test/build.xml compile + +# JClassTestCase.testAsArray fails on i586 +# https://github.com/jpype-project/jpype/issues/1029 +skip_tests="(JClassTestCase and testAsArray)" + +# v1.4.1: https://github.com/jpype-project/jpype/issues/1116 +skip_tests+=" or (HtmlTestCase and testClass)" + +%if %{without test_jbdc} +skip_tests+=" or test_sql_h2 or test_sql_hsqldb or test_sql_sqlite" +%endif + +export CLASSPATH=${PWD}/test/classes:%{_libdir}/java/sqlite-jdbc.jar:%{_localstatedir}/lib/hsqldb/lib/hsqldb.jar:%{_datadir}/java/h2database/h2.jar:%{_datadir}/java/jts/jts-core.jar:%{_datadir}/java/osgi-service-jdbc/org.osgi.service.jdbc.jar +%pytest_arch -rs -k "not ($skip_tests)" + +%endif + +%files %{python_files} +%doc AUTHORS.rst README.rst +%license LICENSE +%{python_sitearch}/jpype +%{python_sitearch}/org.jpype.jar +%{python_sitearch}/_jpype*.so +%{python_sitearch}/jpype1-%{version}.dist-info + +%changelog