From 965590bb235b5da5ec5032347dc8dd5f3861e09de7178b006842eef590280321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Fri, 3 May 2024 23:32:27 +0200 Subject: [PATCH] Sync from SUSE:SLFO:Main python-wxPython revision 2e466cb9b835c1abb066312125e9863a --- .gitattributes | 23 + 0001-Check-HSV-values-in-image-test.patch | 26 + ...s-CreateSurface-which-is-only-availa.patch | 33 + ...-Support-building-with-Doxygen-1.9.7.patch | 48 ++ ...l-OSX-overrides-since-they-re-now-do.patch | 73 +++ 0001-wxWidgets-Phoenix-integer-division.patch | 25 + 0003-Make-pip-usage-in-wxget-optional.patch | 49 ++ ...ypedef-extend-DateTime.FromTimeT-tes.patch | 55 ++ _constraints | 7 + _multibuild | 7 + python-wxPython-rpmlintrc | 3 + python-wxPython.changes | 595 ++++++++++++++++++ python-wxPython.spec | 335 ++++++++++ repack | 4 + require-numpy.patch | 11 + use_stl_build.patch | 11 + wxPython-4.2.1.tar.gz | 3 + 17 files changed, 1308 insertions(+) create mode 100644 .gitattributes create mode 100644 0001-Check-HSV-values-in-image-test.patch create mode 100644 0001-Handle-wxGLCanvas-CreateSurface-which-is-only-availa.patch create mode 100644 0001-Support-building-with-Doxygen-1.9.7.patch create mode 100644 0001-Update-wxTextCtrl-OSX-overrides-since-they-re-now-do.patch create mode 100644 0001-wxWidgets-Phoenix-integer-division.patch create mode 100644 0003-Make-pip-usage-in-wxget-optional.patch create mode 100644 0004-Fix-time_t-ETG-typedef-extend-DateTime.FromTimeT-tes.patch create mode 100644 _constraints create mode 100644 _multibuild create mode 100644 python-wxPython-rpmlintrc create mode 100644 python-wxPython.changes create mode 100644 python-wxPython.spec create mode 100644 repack create mode 100644 require-numpy.patch create mode 100644 use_stl_build.patch create mode 100644 wxPython-4.2.1.tar.gz 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/0001-Check-HSV-values-in-image-test.patch b/0001-Check-HSV-values-in-image-test.patch new file mode 100644 index 0000000..b16aa7d --- /dev/null +++ b/0001-Check-HSV-values-in-image-test.patch @@ -0,0 +1,26 @@ +From 12cb5458cf5c26080158ecbee010ae9073a907e7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Sun, 4 Oct 2020 21:19:36 +0200 +Subject: [PATCH] Check HSV values in image test + +--- + unittests/test_image.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/unittests/test_image.py b/unittests/test_image.py +index 767b36a7..a1dc0d7d 100644 +--- a/unittests/test_image.py ++++ b/unittests/test_image.py +@@ -234,6 +234,9 @@ class image_Tests(wtc.WidgetTestCase): + rgb = wx.Image.RGBValue(1,2,3) + hsv = wx.Image.RGBtoHSV(rgb) + rgb = wx.Image.HSVtoRGB(hsv) ++ self.assertAlmostEqual(hsv.value * 255.0, 3.0) ++ self.assertAlmostEqual(hsv.saturation* 255.0, 170.0) ++ self.assertAlmostEqual(hsv.hue * 360.0, 210.0) + self.assertEqual(rgb.red, 1) + self.assertEqual(rgb.green, 2) + self.assertEqual(rgb.blue, 3) +-- +2.28.0 + diff --git a/0001-Handle-wxGLCanvas-CreateSurface-which-is-only-availa.patch b/0001-Handle-wxGLCanvas-CreateSurface-which-is-only-availa.patch new file mode 100644 index 0000000..e308492 --- /dev/null +++ b/0001-Handle-wxGLCanvas-CreateSurface-which-is-only-availa.patch @@ -0,0 +1,33 @@ +From 371101db7a010d679d214fde617dae9de02008d9 Mon Sep 17 00:00:00 2001 +From: Scott Talbert +Date: Fri, 14 Jul 2023 13:23:03 -0400 +Subject: [PATCH] Handle wxGLCanvas::CreateSurface which is only available on + EGL + +--- + etg/_glcanvas.py | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/etg/_glcanvas.py b/etg/_glcanvas.py +index 52992ed8..2e578645 100644 +--- a/etg/_glcanvas.py ++++ b/etg/_glcanvas.py +@@ -125,6 +125,15 @@ def run(): + sipRes = wxGLCanvas::IsDisplaySupported(attribPtr); + """) + ++ c.find('CreateSurface').setCppCode("""\ ++ #if wxUSE_GLCANVAS_EGL ++ return self->CreateSurface(); ++ #else ++ wxPyRaiseNotImplemented(); ++ return false; ++ #endif ++ """) ++ + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) +-- +2.43.0 + diff --git a/0001-Support-building-with-Doxygen-1.9.7.patch b/0001-Support-building-with-Doxygen-1.9.7.patch new file mode 100644 index 0000000..d6a2f42 --- /dev/null +++ b/0001-Support-building-with-Doxygen-1.9.7.patch @@ -0,0 +1,48 @@ +From 6a049ccc0ad96f25c3f7d8540b218ffe8921d8c5 Mon Sep 17 00:00:00 2001 +From: Scott Talbert +Date: Tue, 5 Dec 2023 23:42:21 -0500 +Subject: [PATCH] Support building with Doxygen 1.9.7 + +Doxygen 1.9.7 made some changes whereby some method definitions are now +defined in separate XML files, with a "refid" that links to them. In +order to support this, we need to follow these "refids" to pick up the +method definition from the separate group XML files. +--- + etgtools/extractors.py | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/etgtools/extractors.py b/etgtools/extractors.py +index 8c992cb14..5ae1361f9 100644 +--- a/etgtools/extractors.py ++++ b/etgtools/extractors.py +@@ -62,6 +62,8 @@ def extract(self, element): + # class. Should be overridden in derived classes to get what each one + # needs in addition to the base. + self.name = element.find(self.nameTag).text ++ if self.name is None: ++ self.name = '' + if '::' in self.name: + loc = self.name.rfind('::') + self.name = self.name[loc+2:] +@@ -1574,12 +1576,21 @@ def addElement(self, element): + extractingMsg(kind, element) + for node in element.findall('sectiondef/memberdef'): + self.addElement(node) ++ for node in element.findall('sectiondef/member'): ++ node = self.resolveRefid(node) ++ self.addElement(node) + + else: + raise ExtractorError('Unknown module item kind: %s' % kind) + + return item + ++ def resolveRefid(self, node): ++ from etgtools import XMLSRC ++ refid = node.get('refid') ++ fname = os.path.join(XMLSRC, refid.rsplit('_', 1)[0]) + '.xml' ++ root = et.parse(fname).getroot() ++ return root.find(".//memberdef[@id='{}']".format(refid)) + + + def addCppFunction(self, type, name, argsString, body, doc=None, **kw): diff --git a/0001-Update-wxTextCtrl-OSX-overrides-since-they-re-now-do.patch b/0001-Update-wxTextCtrl-OSX-overrides-since-they-re-now-do.patch new file mode 100644 index 0000000..bee8771 --- /dev/null +++ b/0001-Update-wxTextCtrl-OSX-overrides-since-they-re-now-do.patch @@ -0,0 +1,73 @@ +From 7a198b8cae9a81cec4d25a0c6c5cc65ad8822bb2 Mon Sep 17 00:00:00 2001 +From: Scott Talbert +Date: Mon, 20 Nov 2023 22:12:58 -0500 +Subject: [PATCH] Update wxTextCtrl OSX overrides since they're now documented + +--- + etg/textctrl.py | 48 +++++++++++++++++++++--------------------------- + 1 file changed, 21 insertions(+), 27 deletions(-) + +diff --git a/etg/textctrl.py b/etg/textctrl.py +index af631a53..690d68c4 100644 +--- a/etg/textctrl.py ++++ b/etg/textctrl.py +@@ -114,35 +114,29 @@ def parseAndTweakModule(): + + + # OSX methods for controlling native features +- c.addCppMethod('void', 'OSXEnableAutomaticQuoteSubstitution', '(bool enable)', +- doc="Mac-only method for turning on/off automatic quote substitutions.", +- body="""\ +- #ifdef __WXMAC__ +- self->OSXEnableAutomaticQuoteSubstitution(enable); +- #else +- wxPyRaiseNotImplemented(); +- #endif +- """) ++ c.find('OSXEnableAutomaticQuoteSubstitution').setCppCode("""\ ++ #ifdef __WXMAC__ ++ self->OSXEnableAutomaticQuoteSubstitution(enable); ++ #else ++ wxPyRaiseNotImplemented(); ++ #endif ++ """) + +- c.addCppMethod('void', 'OSXEnableAutomaticDashSubstitution', '(bool enable)', +- doc="Mac-only method for turning on/off automatic dash substitutions.", +- body="""\ +- #ifdef __WXMAC__ +- self->OSXEnableAutomaticDashSubstitution(enable); +- #else +- wxPyRaiseNotImplemented(); +- #endif +- """) ++ c.find('OSXEnableAutomaticDashSubstitution').setCppCode("""\ ++ #ifdef __WXMAC__ ++ self->OSXEnableAutomaticDashSubstitution(enable); ++ #else ++ wxPyRaiseNotImplemented(); ++ #endif ++ """) + +- c.addCppMethod('void', 'OSXDisableAllSmartSubstitutions', '()', +- doc="Mac-only method to disable all automatic text substitutions.", +- body="""\ +- #ifdef __WXMAC__ +- self->OSXDisableAllSmartSubstitutions(); +- #else +- wxPyRaiseNotImplemented(); +- #endif +- """) ++ c.find('OSXDisableAllSmartSubstitutions').setCppCode("""\ ++ #ifdef __WXMAC__ ++ self->OSXDisableAllSmartSubstitutions(); ++ #else ++ wxPyRaiseNotImplemented(); ++ #endif ++ """) + + # TODO: add support for wxTextProofOptions (only supported on MSW/GTK3) + # so will need stubs on other platforms. +-- +2.43.0 + diff --git a/0001-wxWidgets-Phoenix-integer-division.patch b/0001-wxWidgets-Phoenix-integer-division.patch new file mode 100644 index 0000000..6ea13d2 --- /dev/null +++ b/0001-wxWidgets-Phoenix-integer-division.patch @@ -0,0 +1,25 @@ +From 3b042c863f4092f802a877a972fd6eb284451a78 Mon Sep 17 00:00:00 2001 +From: Ben Greiner +Date: Sat, 6 Jan 2024 21:58:29 +0100 +Subject: [PATCH] integer division for randint + +Python 3.12 does not accept floats for random.randint() anymore +--- + unittests/test_dcDrawLists.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/unittests/test_dcDrawLists.py b/unittests/test_dcDrawLists.py +index 9e35e5eaf..6696a79a0 100644 +--- a/unittests/test_dcDrawLists.py ++++ b/unittests/test_dcDrawLists.py +@@ -63,8 +63,8 @@ def makeRandomRectangles(): + rects = [] + + for i in range(num): +- W = random.randint(10, w/2) +- H = random.randint(10, h/2) ++ W = random.randint(10, w//2) ++ H = random.randint(10, h//2) + x = random.randint(0, w - W) + y = random.randint(0, h - H) + rects.append( (x, y, W, H) ) diff --git a/0003-Make-pip-usage-in-wxget-optional.patch b/0003-Make-pip-usage-in-wxget-optional.patch new file mode 100644 index 0000000..f88daa4 --- /dev/null +++ b/0003-Make-pip-usage-in-wxget-optional.patch @@ -0,0 +1,49 @@ +From 00ba66a86f65abb24402427d66bf50e8da477321 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Tue, 28 Jun 2022 18:16:34 +0200 +Subject: [PATCH 3/4] Make pip usage in wxget optional + +As the code states, using pip to download is abusing it, and as it is +just a fallback in case neither wget nor urllib works. +--- + wx/tools/wxget.py | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/wx/tools/wxget.py b/wx/tools/wxget.py +index c83ced7a..75eb0f47 100644 +--- a/wx/tools/wxget.py ++++ b/wx/tools/wxget.py +@@ -33,7 +33,6 @@ import os + import wx + import subprocess + import ssl +-import pip + + if sys.version_info >= (3,): + from urllib.error import (HTTPError, URLError) +@@ -44,6 +43,11 @@ else: + from urllib2 import (HTTPError, URLError) + import urlparse + ++try: ++ import pip ++except ImportError as e: ++ pip = None ++ + def get_docs_demo_url(demo=False): + """ Get the URL for the docs or demo.""" + if demo: +@@ -196,8 +200,8 @@ def download_file(url, dest=None, force=False, trusted=False): + success = download_wget(url, filename, trusted) # Try wget + if not success: + success = download_urllib(url, filename) # Try urllib +- if not success: +- success = download_pip(url, filename, force, trusted) # Try urllib ++ if not success and pip not None: ++ success = download_pip(url, filename, force, trusted) # Try pip + if not success: + split_url = url.split('/') + msg = '\n'.join([ +-- +2.36.1 + diff --git a/0004-Fix-time_t-ETG-typedef-extend-DateTime.FromTimeT-tes.patch b/0004-Fix-time_t-ETG-typedef-extend-DateTime.FromTimeT-tes.patch new file mode 100644 index 0000000..a7db15b --- /dev/null +++ b/0004-Fix-time_t-ETG-typedef-extend-DateTime.FromTimeT-tes.patch @@ -0,0 +1,55 @@ +From 70ecc1afcdd59bbd3b700d000e8f92740d218245 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Tue, 28 Jun 2022 18:32:32 +0200 +Subject: [PATCH 4/4] Fix time_t ETG typedef, extend DateTime.FromTimeT tests + +Before c78823549bac ("Ensure time_t is treated as a 64-bit value by SIP") +the typedef used "long" instead of wxInt64, which caused issues on Win64, +as long is 32bit there (LLP64). On the other hand, wxInt64 is wrong on +32 bit Linux (e.g. armv7, i586), and thus the code crashes. + +As SIP_SSIZE_T is 64 bit for both LLP64 (Windows) and LP64 (Linux), but +32 bit on 32bit archs, it matches time_t better (though, according to the +C standard, it could even be a double). +--- + etg/defs.py | 2 +- + unittests/test_wxdatetime.py | 8 +++++++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/etg/defs.py b/etg/defs.py +index 4445cf93..ceb9e2ef 100644 +--- a/etg/defs.py ++++ b/etg/defs.py +@@ -73,7 +73,7 @@ def run(): + td = module.find('wxUIntPtr') + module.insertItemAfter(td, etgtools.TypedefDef(type='wchar_t', name='wxUChar')) + module.insertItemAfter(td, etgtools.TypedefDef(type='wchar_t', name='wxChar')) +- module.insertItemAfter(td, etgtools.TypedefDef(type='wxInt64', name='time_t')) ++ module.insertItemAfter(td, etgtools.TypedefDef(type='long', name='time_t')) + module.insertItemAfter(td, etgtools.TypedefDef(type='long long', name='wxFileOffset')) + module.insertItemAfter(td, etgtools.TypedefDef(type='SIP_SSIZE_T', name='ssize_t')) + module.insertItemAfter(td, etgtools.TypedefDef(type='unsigned char', name='byte', pyInt=True)) +diff --git a/unittests/test_wxdatetime.py b/unittests/test_wxdatetime.py +index 62e7d141..2f620045 100644 +--- a/unittests/test_wxdatetime.py ++++ b/unittests/test_wxdatetime.py +@@ -25,9 +25,15 @@ class datetime_Tests(wtc.WidgetTestCase): + def test_datetime2(self): + d1 = wx.DateTime.FromHMS(8, 15, 45, 123) + d2 = wx.DateTime.FromJDN(12345.67) +- d3 = wx.DateTime.FromTimeT(int(time.time())) + d4 = wx.DateTime.FromDMY(1, wx.DateTime.Mar, 2012, 8, 15, 45, 123) + ++ def test_datetimeTimeT(self): ++ d1 = wx.DateTime.FromTimeT(0) ++ self.assertEqual(d1.year, 1970) ++ d2 = wx.DateTime.FromTimeT(1643756400) # 2022-02-02 ++ self.assertEqual(d2.year, 2022) ++ d3 = wx.DateTime.FromTimeT(int(time.time())) ++ + def test_datetime3(self): + d1 = wx.DateTime.Today() + d2 = wx.DateTime.Now() +-- +2.36.1 + diff --git a/_constraints b/_constraints new file mode 100644 index 0000000..02387b4 --- /dev/null +++ b/_constraints @@ -0,0 +1,7 @@ + + + + 8 + + + diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..4f9bf23 --- /dev/null +++ b/_multibuild @@ -0,0 +1,7 @@ + + python3 + python39 + python310 + python311 + python312 + diff --git a/python-wxPython-rpmlintrc b/python-wxPython-rpmlintrc new file mode 100644 index 0000000..eb3a8d8 --- /dev/null +++ b/python-wxPython-rpmlintrc @@ -0,0 +1,3 @@ +addFilter("devel-file-in-non-devel-package") +# the multibuild flavors need differently named source packages +addFilter("invalid-spec-name") diff --git a/python-wxPython.changes b/python-wxPython.changes new file mode 100644 index 0000000..89e3f3e --- /dev/null +++ b/python-wxPython.changes @@ -0,0 +1,595 @@ +------------------------------------------------------------------- +Mon Jan 15 16:29:26 UTC 2024 - Dominique Leuenberger + +- Enable python312 as valid multibuild flavor. + +------------------------------------------------------------------- +Sat Jan 6 21:47:42 UTC 2024 - Ben Greiner + +- Update buildset: + * Tumbleweed: Prepare python312, drop python38 + * 15.X: Prepare for "SLE15 Python module pythons" (The repository + does not have all the requirements yet to build) +- Add 0001-wxWidgets-Phoenix-integer-division.patch + * Required for Python 3.12 + * gh#wxWidgets/Phoenix#2508 +- Update requirements: + * This version requires Pillow again. + * Require numpy for all flavors: Add require-numpy.patch + * Upstream goes back and forth, see + https://github.com/wxWidgets/Phoenix/commits/master/requirements/install.txt +- Repack the source: Remove stray wxWidgets-4.1.0 tree + +------------------------------------------------------------------- +Wed Dec 27 07:37:06 UTC 2023 - Antonio Larrosa + +- Add patch from upstream to fix building the package with + doxygen >=1.9.7 (gh#wxWidgets/Phoenix#2497): + * 0001-Support-building-with-Doxygen-1.9.7.patch + +------------------------------------------------------------------- +Wed Dec 13 23:00:29 UTC 2023 - Jan Engelhardt + +- Add 0001-Update-wxTextCtrl-OSX-overrides-since-they-re-now-do.patch + 0001-Handle-wxGLCanvas-CreateSurface-which-is-only-availa.patch + to fix build failures with wx 3.2.4. + +------------------------------------------------------------------- +Mon Sep 11 14:47:53 UTC 2023 - Stefan Brüns + +- Update to release 4.2.1 + * No changelog provided +- Drop upstream patches: + * 0001-pypubsub-Replace-deprecated-inspect.getargspec.patch + * 0001-Fix-overflow-check-for-wxUIntPtr-type.patch + * 0001-Only-import-attrdict-where-needed.patch + * ba0d8cfcec3d3b0112d1c54991853e6003f2fbf6.patch + +------------------------------------------------------------------- +Sat Jan 28 09:38:44 UTC 2023 - Dirk Müller + +- add ba0d8cfcec3d3b0112d1c54991853e6003f2fbf6.patch to resolve + python 3.11 build failure +- add 0001-pypubsub-Replace-deprecated-inspect.getargspec.patch + to fix another python 3.11 build failure + +------------------------------------------------------------------- +Thu Jan 26 09:14:45 UTC 2023 - pgajdos@suse.com + +- add repack script to sources in spec file + +------------------------------------------------------------------- +Tue Jan 17 13:51:03 UTC 2023 - pgajdos@suse.com + +- add repack script, do not include packaging/ dir in sources + [gh#wxWidgets/Phoenix#2105], [bsc#670523] + +------------------------------------------------------------------- +Mon Dec 5 13:07:46 UTC 2022 - Daniel Garcia + +- Add python-pytest-forked as test dependency + * The pytest parameter --forked is provided by python-pytest-forked + which is no longer a transitive build requirement of + python-pytest-xdist + * gh#pytest-dev/pytest-xdist#468, gh#pytest-dev/pytest-xdist#821 + +------------------------------------------------------------------- +Sat Aug 13 23:03:31 UTC 2022 - Stefan Brüns + +- Update to relase 4.2.0, matching wxWidgets 3.2.0 + For a detailed changelog, see + https://www.wxpython.org/news/2022-08-07-wxpython-411-release/index.html +- Drop patch obsoleted by upstream changes: + * 0002-SIP-6.5-compat.patch +- Do not depend on pip for downloading in wxget, add + 0003-Make-pip-usage-in-wxget-optional.patch +- Fix a wrong type size on 32 bit archs, add + 0004-Fix-time_t-ETG-typedef-extend-DateTime.FromTimeT-tes.patch + +------------------------------------------------------------------- +Sun Jun 26 13:46:42 UTC 2022 - Stefan Brüns + +- Update to current git version for wxWidgets 3.1.6/3.1.7 + compatibility. +- Drop upstream patches: + * fix_no_return_in_nonvoid.patch + * wxPython-4.1.1-fix-overrides.patch + * 2039-bunch-py310-fixes.patch + * additional-310-fixes.patch +- Regenerate bindings from wxWidgets 3.1.7 code +- Allow SIP generation with SIP 6.x < 6.6, + * 0001-Only-import-attrdict-where-needed.patch + * 0002-SIP-6.5-compat.patch +- Add patches for test suite (pending): + * 0001-Check-HSV-values-in-image-test.patch + * 0001-Fix-overflow-check-for-wxUIntPtr-type.patch +- Add some more dependencies required for the test suite +- Disable some tests which can not succeed +- Enable test suite by default +- Do not ship copy of wxWidgets locale + +------------------------------------------------------------------- +Wed Jan 5 11:12:25 UTC 2022 - Ben Greiner + +- Reduce complexity by not rewriting subpackages at all. + Multibuild flavors now must be a superset of all existing + python3 flavors. + +------------------------------------------------------------------- +Tue Jan 4 22:28:51 UTC 2022 - Ben Greiner + +- The difference of a single whitespace character is significant + +------------------------------------------------------------------- +Tue Jan 4 13:58:38 UTC 2022 - Ben Greiner + +- Appease factory-auto bot about package src name + +------------------------------------------------------------------- +Tue Jan 4 10:18:08 UTC 2022 - Matej Cepl + +- Add additional patches fixing the situation with Python 3.10 + compatibility: + - 2039-bunch-py310-fixes.patch (from gh#wxWidgets/Phoenix#2039) + - additional-310-fixes.patch (from various commits on master) + +------------------------------------------------------------------- +Wed Dec 29 10:23:20 UTC 2021 - Ben Greiner + +- Split out the TW python3 flavors into multibuild using the + python_subpackage_only mechanism: Multiple python3 flavors + sequentially require too much space and time in one build. + +------------------------------------------------------------------- +Sat Jun 12 16:32:57 UTC 2021 - Antoine Belvire + +- Bump required wxWidgets version to 3.1.5. + +------------------------------------------------------------------- +Fri Jun 11 01:41:18 UTC 2021 - Stanislav Brabec + +- Increase disk space constraint to 15G. + +------------------------------------------------------------------- +Tue Jun 8 17:52:01 UTC 2021 - Antoine Belvire + +- Update to version 4.1.1: + * wxWidgets is now validating the flags passed when adding items + to a sizer, to ensure that they are the correct flags for the + type of the sizer. If the given flags do not make sense, for + example using horizontal alignment flags in a horizontal box + sizer, then a wxAssertionError error is raised. + * Fixed missing binder for wxEVT_STC_AUTOCOMP_SELECTION_CHANGE. + (PR#1613). + * DataViewModel.HasValue can be overridden and will inform the + DataViewCtrl whether or not an item and column has data. If + HasValue returns False, then GetValue for that item/col will + not be called. This allows a distinction between a truly empty + cell, and one that has a value even if it is an empty string. + (PR#1600) + * Added flag that allows blocking of item dragging in the + UltimateListControl class. (PR#1620) + * Add the column index to notification events in + UltimateListControl (PR#1630). + * Added orientation parameter to UltimateListControl.GetScrollPos. + (PR#1632) + * wx.lib.agw.aui.AuiNotebook RemovePage() now hides the removed + page, so it needs to be shown again if it is reused in another + place. (PR#1668) + * Fixed issue that could modify bytes objects under Python. + (PR#1680) + * Added wx.lib.agw.aui.EVT_AUI_PANE_CLOSE event which is sent when + a AUI (the agw version) Pane has been closed (after it has been + closed, not when it is about to be closed, which is when + EVT_AUI_PANE_CLOSE is sent.) (PR#1628) + * Exposed the wx.DC methods GetGraphicsContext and + SetGraphicsContext. Depending on the platform and the type of + the DC, there may be a wx.GraphicsContext used for the + implementation of the DC. If so, the GetGraphicsContext method + enables access to it. Be sure to check that the return value is + not None before trying to use it. + * Simplified the implementation of the wx.App.InitLocale method. + See the MigrationGuide for more information. + * Added wx.lib.agw.aui.AUI_DOCKART_HINT_WINDOW_BORDER_COLOUR + constant so the hint window border color can be themed as well. + * The wx.lib.mixins.listCtrl.CheckListCtrlMixin is now obsolete + because wx.ListCtrl has new functionality which does pretty much + the same thing. In fact there is some overlap in method names + which may trip up some use cases. It is advised to drop the use + of CheckListCtrlMixin and just use the wx.ListBox functionality. + You will need to call EnableCheckBoxes to turn it on, and you + may need to change some event handlers or overloaded methods. + * wx.html2.WebView is now able to use Microsoft's Edge browser + component as its backend renderer. This should improve the + capabilities of the WebView widget on Windows, and be more + consistent with the WebViews on the other platforms, compared to + the original IE 11 backend. Using this backed requires that a + new-ish version of the Edge browser is installed on the end + user's computer. + * Added the wx.Image.ConvertToRegion method. This lets you create + a wx.Region from an image and a specified color or the mask if + the image has one. This was done to workaround a bug in wxMac, + but it seems worthwhile enough to keep it around even after the + bug was fixed. + * Added the missing context manager methods for wx.LogNull. + (PR#1842) + * Refactored ScrolledThumbnail out of agw.ThumbnailCtrl so as to + be usable outside of ThumbnailCtrl. +- Add wxPython-4.1.1-fix-overrides.patch: Fix build with wxWidgets + 3.1.5 (gh#wxWidgets/Phoenix#1909). +- Remove patches merged upstream: + * 0001-Fix-conversion-of-variant-list-members.patch + * 0001-Fix-wxUIActionSimulator-Text-parameter-documentation.patch + * 0003-Use-explicit-wxString-c_str-conversion-for-sipFindTy.patch +- Increase required disk space to 15GB: Fix build failures due to + disk space exhaustion. + +------------------------------------------------------------------- +Wed Mar 31 01:32:34 UTC 2021 - Steve Kowalik + +- Don't build using Python 3.6 for test package, when that gets reenabled. +- Since build.py install helpfully installs every built shared object + under site-package directories, remove those not for that version of + Python. (bsc#1182822) +- Correct python uninstall alternatives to list all of them, not just one. + +------------------------------------------------------------------- +Wed Sep 30 17:48:02 UTC 2020 - Stefan Brüns + +- Use system wxWidgets (wxGTK3) instead of bundling +- Cleanup test dependencies and check section (tests still disabled + due to too many failures) + +------------------------------------------------------------------- +Wed Jul 1 12:55:23 UTC 2020 - Stefan Brüns + +- Wrap all relevant build dependencies when building with system + wxWidgets library. +- Add patches to allow building with STL variant of wxGTK: + * 0001-Fix-conversion-of-variant-list-members.patch + * use_stl_build.patch + * 0001-Fix-wxUIActionSimulator-Text-parameter-documentation.patch + * 0003-Use-explicit-wxString-c_str-conversion-for-sipFindTy.patch + +------------------------------------------------------------------- +Fri May 29 22:21:35 UTC 2020 - Stefan Brüns + +- Add explicit libXtst build dependency, required for Leap 15.1 + (already implicit on Leap 15.2 and TW). + +------------------------------------------------------------------- +Tue Apr 28 09:01:51 UTC 2020 - Guillaume GARDET + +- Update to 4.1.0: + * Add a sample for wx.Font.AddPrivateFont to the demo. + * Added wrappers for the OSXEnableAutomaticQuoteSubstitution, + OSXEnableAutomaticDashSubstitution, and OSXDisableAllSmartSubstitutions + methods in wx.TextCtrl. Also added OSXEnableAutomaticTabbing in wx.App. + * Added wx.ColourDialogEvent, wx.DCTextBgColourChanger, wx.DCTextBgModeChanger, + wx.grid.GridCellDateRenderer, wx.grid.GridCellDateEditor, wx.SystemAppearance, etc. + * Many of the deprecated items in wxWidgets and wxPython are being or have + been removed. Be sure to test your code in a recent 4.0.x release with + warnings enabled so you can see which class, method or function calls + you need to change. + * Bug fixes in wx.lib.calendar: key navigation across month boundaries is + now possible; key navigation now sets the date and fires the EVT_CALENDAR event; + setter APIs now set the date correctly #1230. + * Switch to using a wx.Overlay in the Widget Inspection Tool to highlight + widgets when running on a GTK3 port. + * Fixed issue in wx.lib.agw.customtreectrl where the label editor could + remain stuck forever #1235. + * Grafted on a EnableSystemTheme method to the classes which support it. + This can be used to disable the default system theme on Windows for native + widgets like wx.ListCtrl, wx.TreeCtrl and wx.dataview.DataViewCtrl. + It has no effect on the other platforms. + * The wx.WS_EX_VALIDATE_RECURSIVELY extended style flag is obsolete, + as it is now the default (and only) behavior. The style flag has been added + back into wxPython for compatibility, but with a zero value. You can just + stop using it in your code with no change in behavior. #1278 + * Fix a sometimes crash when using a wx.Overlay by letting the wx.DCOverlay + hold a reference to the DC, to ensure that the DCOverlay is destroyed first. PR#1301 + * Replaced the Vagrant VMs used for building wxPython for various Linux distros + with Docker images. + * Add some missing methods in wx.adv.BitmapComboBox #1307 + * Added the wx.svg package which contains code for parsing SVG + (Scalable Vector Graphics) files, and also code for integrating with + wxPython. It can rasterize the SVG to a wx.Bitmap of any size with no + loss of quality, and it can also render the SVG directly to a + wx.GraphicsContext using the GC's drawing primitives. PR#1323 + * Ported the embedding sample from Classic, which shows how to use wxPython + from a C++ wxWidgets application that embeds Python. PR#1353 + * Fixed wx.GetApp() to use wxWidgets' global wxApp instance instead of + maintaining its own pointer. This way, if the wxApp is created by C++ + code wxPython will still be able to get access to it. #1126 + * Added wrappers for the wx.ActivityIndicator class. + * Added wrappers for the wx.CollapsibleHeaderCtrl class. + * Fixed issues in PlotCanvas around displaying and using scrollbars. #1428 + * Added wx.msw.CHMHelpController, and also a wx.HelpController factory function + that creates an instance of the best Help Controller for the platform. #1536 + * Added wx.adv.GenericAnimationCtrl so the generic version of the animation + classes can be used even on the platforms that have a native version. + Note that due to internal changes to support both types of animations, + some API changes in how the Animation objects are created. See the + AnimationCtrl.py sample in the demo for the various usage patterns #1579 + * Added wrappers for the wx.grid.GridBlockCoords, wx.grid.GridBlocks, and + wx.grid.GridBlockDiffResult classes, as well as associated new methods + in the wx.grid.Grid class. These provide a new way to interact with blocks + of selected cells, including an iterator interface in wx.grid.GridBlocks + which should be a more efficient (time and memory) way to process large + groups of selections. +- Disable Python2 + +------------------------------------------------------------------- +Mon Mar 2 12:41:31 UTC 2020 - Tomáš Chvátal + +- Update to 4.0.7.post2: + * Bugfix to switch to AVFoundation instead of QTKit +- Fix building with new glut (pc file changed) + +------------------------------------------------------------------- +Tue Nov 12 04:15:41 UTC 2019 - Steve Kowalik + +- Update to 4.0.7.post1 + * This post-release just fixes a problem with the numpy dependency constraint + for Python 2.7. (#1415) + * Bug fixes in wx.lib.calendar: key navigation across month boundaries is + now possible; key navigation now sets the date and fires the EVT_CALENDAR + event; setter APIs now set the date correctly (#1230). + * Switch to using a wx.Overlay in the Widget Inspection Tool to highlight + widgets when running on a GTK3 port. + * Fixed issue in wx.lib.agw.customtreectrl where label editor could remain + stuck forever (#1235). + * Fix a sometimes crash when using a wx.Overlay by letting the wx.DCOverlay + hold a reference to the DC, to ensure that the DCOverlay is destroyed + first. (PR#1301) + * Ported the embedding sample from Classic, which shows how to use wxPython + from a C++ wxWidgets application that embeds Python. (PR #1353) + * Fixed wx.GetApp() to use wxWidgets' global wxApp instance instead of + maintaining its own pointer. This way, if the wxApp is created by C++ code + wxPython will still be able to get access to it. (#1126) + * Several other PRs have been backported from the master branch (which will + become wxPython 4.1.0), the full list can be seen here: + https://github.com/wxWidgets/Phoenix/pull/1357 + * Fixed a probably rare, but fatal bug on OSX when calling certain overloaded + virtual methods with implementations in Python. + * Fixed char pointers in generated stub code to have a valid pointer value. + * Reverted the change that loads up install_requires from the contents of + requirements.txt. Split the requirements.txt file into one for install and + one for development. + * Added missing HtmlWindow.ScrollToAnchor method, and also a couple methods + in HtmlCell too. (#1141) + * Added missing setters for the wheel-related properties in wx.MouseEvent. + (#1140) + * Updated wxWidgets commit reference, bringing fixes for #1140, #1086 and + #1147. + * Fix the use of the output parameter in HtmlWindow.OnOpeningURL the same + way it was fixed in HtmlWindowInterface.OnHTMLOpeningURL. (#1068) + * Fixed a crashing bug when using a member of a transient wx.VisualAttributes + object. Also set the attributes to be read-only to simplify the fix. + (#1198). + * Updated the sip being used in wxPython builds to version 4.19.16. + * Added helper functions to check results of wxWidgets configure during the + build of wxPython. Currently used to determine if the wx webview, glcanvas, + and media libraries should be added to the link command. (#1138) + * Fixed scrollbar issue with ListCtrlAutoWidthMixin (#1215) + * Fixed file access in the wx.py and wx.tools.pywxrc packages to be Python 2 + and 3 compatible. (#1193, #1156) + * Fixes for building with Python 3.8 on Linux. (#1227) + +------------------------------------------------------------------- +Thu Feb 7 18:42:42 UTC 2019 - Todd R + +- Update to 4.0.4 + * Fixed an issue where wx.lib.intctrl would erroneously attempt to use long + on Python3. (#898) + * Include the MSVC runtime DLLs for Python 3.7 builds too. + * Clear LIBPATH_PYEXT and LIB_PYEXT for linux builds too. (#904) + * Added a dependency on the Pillow package since it's used in some wx.lib.agw + modules. (PR #908) + * Add flag to hide page in wx.lib.agw.aui.notebook. (#895) + * Switch wx.lib.plot to issue deprecation warnings with PlotPendingDeprecation + so it doesn't have to enable all warnings to get them to be shown by default. + (#902) + * Added a Python 3.7 builder on Fedora 28. (#925) + * Fix the object ownership transfer for wx.Menu.Insert() (#931) + * Added wx.Treebook.GetTreeCtrl, wx.Listbook.GetListView and + wx.Choicebook.GetChoiceCtrl. (#918) + * Removed the wx.BookCtrlBase.RemovePage workaround as it was causing problems + and doesn't seem to be necessary any more. The existing wxWidgets assertions + are catching the out of range error just fine, however if wxWidgets was built + without the debug helpers turned on then it could still cause a crash. (#888) + * Reverted the changes which removed the content of the wx.lib.pubsub package + and encouraged users to switch to the real PyPubSub package instead. Removing + it caused more issues than were expected so it has been restored and the code + updated to PyPubSub v3.3.0. Version 4.0.0 is available upstream, but it is not + compatible with Python 2.7. Now, wx.lib.pubsub is actually deprecated instead + of just trying to pass control over to the upstream PyPubSub library. (#932) + * Improve calltip stability in pyshell. (#941) + * Fix TypeError in wx.lib.throbber. (#924) + * Fix missing parameter tool_id in + wx.lib.agw.ribbon.toolbar.RibbonToolBar.AddToggleTool. (#947) + * Add a step to wx.Config.ReadInt to attempt converting from long to int + under python2. (#384) + * Add virtual behavior for wx.RichTextCtrl and wx.TextCtrl's Copy/Cut/Paste methods + and their Can* counterparts. (#954) + * Fix IO type in wx.lib.agw.thumbnailctrl (#959) + * Fix type error that would occur using pycolourchooser. (#957) + * Optimize line drawing in HyperTreeList. (#973) + * Add wrapper for wx.StaticBox.GetBordersForSizer and use it in the demo to do + platform-specific layout of the items in the StaticBox. (#974) + * Update wx.Point, wx.RealPoint, and wx.Size to use floating + point arithmetic when conducting scalar multiplication (#971) + * Fix load/save bugs in PySlices (PR#978) + * Replace deprecated PIL.Image.tostring (PR#1005) + * Fix rendering and mouse sensitivity in UltimateListCtrl when adding HyperText + items. (#1010) + * Added a parameter to lib.agw.CustomTreeCtrl.SetItemWindow(), to allow + positioning the Window (a small image) on the left of text in a + CustomTreeItem. (#PR886). + * Declared DeleteAllPages in the notebook subclasses, so the proper C++ + implementation will be called. (#972) + * Removed wx.lib.floatbar, which has been deprecated forever and probably + hasn't been working in nearly as long. (#976) + * Updated SIP to version 4.19.13. + * Fix an issue in wx.lib.agw.aui.AuiManager where the orientation of + an AuiToolBar would not be updated when calling LoadPerspective. (#917) + * Fixed a bug in wx.FileSystemHandler.OpenFile where the object ownership was + not being transferred correctly, causing a crash after a premature object + deletion. (#926) + * Fixed wx.ListCtrl.Append when wx.LC_SORT style is used, so appending items out + of order does not lose the data for the remaining columns. (#906) + * Add wx.Accessible, it's Windows-only, will raise a NotImplementedError + exception on the other platforms. (#958) + * Added the ability to generate stub classes for use when optional wxWidgets + features are not part of the build. So far, stubs are available for + wx.Accessible, wx.FileSystemWatcher, wx.glcanvas, wx.media and wx.html2. + * Moved the wxpy_api.h file into the wx package at wx/include/wxPython so it + will be included in the wheel file. (#961) + * Fixed how string data is added to a virtual file-like object in + wx.MemoryFSHandler. All strings are now added to the file as utf-8 encoded data, + in both Python2 and Python3, and will be read from the virtual file the same + way. If you need to use some other encoding for some reason you can first + convert the text to a bytesarray or other buffer protocol compatible object and + then create the virtual file from that data. (#969) + * Performance update for wx.lib.agw.customtreectrl (#1049) + * Ensure that colours set in wx.lib.agw.customtreectrl.TreeItemAttr are + instances of wx.Colour. (#1032) + * Fix drawing of ticks in wx.lib.agw.speedmeter when there are negative bounds + values. (#1013) + * wxWidgets for Mac includes the wxJoystick class now, also update the demo. + (#997) + * Fix wx.html.HtmlPrintout to not be seen as an abstract class, so it can be + instantiated. (#1060) + * Fix wx.aui.AuiNotbook.SetArtProvider to properly transfer ownership of the art + object from Python to C++. This possible double-deletion and related crashing + problems. (#1061) + * Fixed the wrappers for wx.html.HtmlWindow.OnOpeningURL to properly handle the + redirect output parameter. (#1068) This is a backwards-incompatible change, + please see the Migration Guide for details. + * TabNavigatorWindow works similarly to other programs now. It's resizable and + draggable so if user has tons of files with long names, it isn't an irritation + anymore plastered right in the middle of the screen and can't be worked with + easily and ESC now cancels the popup with a proper returnId. (#1096) + * Added missing methods in wx.ListBox, SetItemForegroundColour, + SetItemBackgroundColour and SetItemFont. (#1095) + * Backported a fix in wxWidgets that avoids crashing in hhctrl.ocx when using + context sensitive help in 64-bit builds on Windows. (#1104) +- Update to 4.0.3 + * Fixed a linking problem on macOS. The new waf added an explicit link to the + Python shared library which meant that it would try to load it at runtime, + even if a different Python (such as Anaconda, EDM or Homebrew) was used to + import wxPython. This, of course, caused runtime errors. (#892) + * Sort pages by dock_pos when added to automatic (agw.aui) notebook. (#882) + * Fix a bug in py.introspect.getTokens. (#889) + * Added Vagrant configuration for Fedora-28. Removed Fedora-23 (#884) + * Added wrappers for the wx.WindowIDRef class and added the wx.NewIdRef + function. These will make it possible to create reserved Window IDs using the + same mechanism which is used when passing wx.ID_ANY to a widget constructor. + The object returned by wx.NewIdRef will automatically convert to an int when + passing it to a window constructor, and can also be used as the source in a + Bind(). (#896) + * Fixed issue when sys.prefix is not unicode (Python2) and when its contents + are not translatable to utf-8. +- Update to 4.0.2 + * Fixed wx.html2.EVT_WEBVIEW_NAVIGATING event not being sent on some versions + of Linux. (#741) + * wx.Sizers can now be used as an iterator to iterate over the items within + the sizer. (#738) + * Fix Python3 division in ThumbnailCtrl. (#746) + * Fix leaking image list in CheckListCtrlMixin (#752) + * All items marked as deprecated in the wxWidgets interface (documentation) + files will now throw a DeprecationWarning when used from wxPython. Many of + these items are disappearing in 4.1 so it's important to ensure they are + deprecated at runtime too instead of just in the docs. (#749) + * Ensure that the attribute list given to the GLCanvas constructor is + zero-terminated like it was in Classic. (#770) + * Updated to the wxWidgets 3.0.4 release version. + * Added the wxWidgets version number to the tail end of the string returned by + wx.version(). + * Bind EVT_WINDOW_DESTROY event only to the tree windows in CustomTreeCtrl, + since otherwise it would be caught when child windows are destroyed too, + which causes problems in this case. (#778) + * Fixed a problem where wx.TreeCtrl.OnCompareItems was not being called in + derived classes on Windows. This was due to an optimization that wasn't + compatible with how the classes are wrapped. (#774) + * Added wrappers for wx.ClassInfo and exposed wx.Object.GetClassInfo. This + class is part of wxWidgets' internal type information system and although + it is not very useful for Python applications it is useful for debugging + some internal wxPython issues. + * Removed the wx.lib.pubsub package, and replaced it with code that imports + the standalone PyPubSub in order remain compatible with older code that + still uses wx.lib.pubsub. (#782, #792) + * Fixed bug in wx.lib.intctrl (#790) + * Fixed subclassing of wx.TextCompleter and wx.TextCompleterSimple (#827) + * Fixes for Python3 compatibility in PyCrust. (#823) + * Fix wxGet to be able to use pip v10. (#817) + * Change winid parameter in wx.ScrolledWindow to id, for consistency. (#816) + * Ensure that the page exists in book controls GetPage and RemovePage methods. + At least one of the wx ports do not do this. (#830) + * Added missing wx.NumberEntryDialog + * Change wx.TextCompleterSimple.GetCompletions to send the list of strings + as a return value, rather than a parameter that gets filled. (#836) + * Enabled the wx.GraphicsContext.Create(metaFileDC) wrapper (#811) + * Metafile support is also available on OSX, so wx.msw.Metafile and + wx.msw.MetafileDC have been moved to the core wx module. So they can now be + accessed as wx.Metafile and wx.MetafileDC. + * Updated the waf tool used by the build to version 2.0.7. This fixes problems + with building for Python 3.7. + * Fixed alignment in buttons on MSW which have had foreground or background + colors set. (#815) + * Fix for unexpected assertion inside wx.aui.AuiMDIChildFrame.Close. + * Fix a bug in setting AuiDockingGuide size. (#727) + * Remove unnecessary AUI notebook updating, and use wx.BufferedDC in Repaint() + to mitigate flicker. (wx.lib.agw.aui). (#851, #686) + * Fixed crashing bug when using client data with items in + wx.dataview.DataViewTreeCtrl. (#856) + * Detach wx.Control in AuiToolbar from current sizer before attach to a new + one. (#843) + * Fixed a problem in wx.lib.mixins.listctrl.TextEditMixin where the height of + the editor widget could be set to zero. (See discussion in #849) + * Fix a bug in calculating whether a tool fits into the AuiToolBar. (#863) + * Override SetForegroundColour and SetBackgroundColour in MaskedEditMixin (#808) + * Add an explicit wx.GraphicsContext.Create overload for wx.AutoBufferedPaintDC. (#783) + * Return original AGW window style in AuiToolBar.GetAGWWindowStyleFlag. (#870) + * Fix a bug in group management on wx.lib.masked.numctrl; the previous code used + truediv ('/') to calculate _groupSpace, but in python 3.x this leads to a float + result, instead of an integer as was expected. Using floordiv ('//') instead + to solve the problem. (#865) + * Hide the window when the tool does not fit into AuiToolBar. (#872) + * Fixed the virtual dispatch code for the PGEditor.GetValueFromControl method + to properly pass the parameters to the Python implementation, and also fixed + how the return value is handled. (#742) + * Fixed all implementations of the PGProperty.StringToValue and IntToValue + methods to treat the value parameter as a return value. (#742) + * Add missing wx.adv.EVT_CALENDAR_WEEK_CLICKED (#875) + * Fixed the stock labels to conform to Windows design guidelines. (#787) + * Always reset floating size and style when floating a toolbar in agw.aui. (#880) + +------------------------------------------------------------------- +Fri Jan 18 14:40:11 UTC 2019 - Guillaume GARDET + +- Add _constraints to avoid 'no space left' error + +------------------------------------------------------------------- +Wed Jun 13 03:42:38 UTC 2018 - toddrme2178@gmail.com + +- Add fix_no_return_in_nonvoid.patch + Fix lack of return in non-void function issue in generated sip + bindings. + +------------------------------------------------------------------- +Mon Jun 4 09:11:22 UTC 2018 - petr@cervinka.net + +- Move "wx/*.so" libraries to main package, remove devel package (boo#1095747) +- Add rpmlintrc file to filter devel-file-in-non-devel-package +- Apply spec-cleaner + +------------------------------------------------------------------- +Fri May 18 07:36:08 UTC 2018 - jengelh@inai.de + +- Trim filler wording from description. + +------------------------------------------------------------------- +Wed Feb 28 20:32:18 UTC 2018 - toddrme2178@gmail.com + +- Initial version diff --git a/python-wxPython.spec b/python-wxPython.spec new file mode 100644 index 0000000..617d897 --- /dev/null +++ b/python-wxPython.spec @@ -0,0 +1,335 @@ +# +# spec file +# +# Copyright (c) 2024 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/ +# + + +%define X_display ":98" +%bcond_without test +%bcond_without syswx +# We rebuild the ETG and SIP files for two reasons: +# - Fixing a bug in the ETG time_t typedef (see patch) +# - Compatibility with SIP 6.5.x, for Leap 15.x +%bcond_without rebuild_sip + +%if %{with syswx} +%define wx_args --use_syswx --gtk3 -v +%else +%define wx_args --gtk3 -v +%endif + +%global flavor @BUILD_FLAVOR@%{nil} +%if "%flavor" == "" +# factory-auto requires the main build_flavor to match the specfile name +%define pprefix python +%define python_module() no-build-without-multibuild-flavor +ExclusiveArch: donotbuild +%else +%define pprefix %flavor +%if 0%{suse_version} >= 1599 +# Tumbleweed has a varying number of python3 flavors. The flavor +# selection here and in _multibuild must be kept in sync with the Factory +# prjconf definition for pythons. If a skip is missing, all builds fail. +# Extraneous build_flavors and skips are excluded automatically so future +# additions can be included here early and old flavors can be removed some time +# after the global drop in Factory. +%if "%flavor" != "python39" +%define skip_python39 1 +%endif +%if "%flavor" != "python310" +%define skip_python310 1 +%endif +%if "%flavor" != "python311" +%define skip_python311 1 +%endif +%if "%flavor" != "python312" +%define skip_python312 1 +%endif +%else +# SLE/Leap +%if "%flavor" == "python3" +# python3 is the old 3.6 +%define pythons python3 +%define python3_provides %{nil} +%else +%{?sle15_python_module_pythons} +%if "%flavor" != "%pythons" +# sle15_python_module_pythons defines the flavor, otherwise don't build +%define pythons %{nil} +%endif +%endif +%endif +# The obs server-side interpreter cannot use lua or rpm shrink +%if "%pythons" == "" || "%pythons" == " " || "%pythons" == " " || "%pythons" == " " || "%pythons" == " " +ExclusiveArch: donotbuild +%define python_module() %flavor-not-enabled-in-buildset-for-suse-%{?suse_version} +%else +%define python_files() -n %flavor-%{**} +%define python_module() %flavor-%{**} +%define python_exec python%{expand:%%%{flavor}_bin_suffix} +%define python_version %{expand:%%%{flavor}_version} +%define python_sitearch %{expand:%%%{flavor}_sitearch} +%define python_provides %{expand:%%%{flavor}_provides} +%endif +%endif + +Name: %{pprefix}-wxPython +Version: 4.2.1 +Release: 0 +Summary: The "Phoenix" variant of the wxWidgets Python bindings +License: GPL-2.0-or-later +Group: System/Libraries +URL: https://github.com/wxWidgets/Phoenix +# repacked https://files.pythonhosted.org/packages/source/w/wxPython/wxPython-%%{version}.tar.gz +Source0: wxPython-%{version}.tar.gz +Source1: python-wxPython-rpmlintrc +Source2: repack +Patch1: 0001-Update-wxTextCtrl-OSX-overrides-since-they-re-now-do.patch +Patch2: 0001-Handle-wxGLCanvas-CreateSurface-which-is-only-availa.patch +# PATCH-FIX-UPSTREAM https://github.com/wxWidgets/Phoenix/pull/2497 +Patch3: 0001-Support-building-with-Doxygen-1.9.7.patch +# PATCH-FIX-UPSTREAM https://github.com/wxWidgets/Phoenix/pull/2508 +Patch4: 0001-wxWidgets-Phoenix-integer-division.patch +# PATCH-FIX-OPENSUSE +Patch12: use_stl_build.patch +# PATCH-FIX-UPSTREAM - https://github.com/wxWidgets/Phoenix/pull/2232 +Patch13: 0003-Make-pip-usage-in-wxget-optional.patch +# PATCH-FIX-OPENSUSE +Patch14: 0004-Fix-time_t-ETG-typedef-extend-DateTime.FromTimeT-tes.patch +# PATCH-FIX-OPENSUSE - Test fixes/additions: +Patch112: 0001-Check-HSV-values-in-image-test.patch +# PATCH-FIX-OPENSUSE - Numpy for Python 3.12 is a thing +Patch113: require-numpy.patch +# TODO: Replace deprecated setup.py calls in build.py with PEP517 without building wxWidgets into the wheel +BuildRequires: %{python_module base} +BuildRequires: %{python_module devel} +BuildRequires: %{python_module setuptools} +BuildRequires: c++_compiler +BuildRequires: fdupes +BuildRequires: pkgconfig +BuildRequires: python-rpm-macros +%if %{with syswx} +BuildRequires: %{python_module sip6-devel >= 6.5.1} +BuildRequires: waf +BuildRequires: wxGTK3-devel >= 3.2.0 +BuildRequires: wxWidgets-3_2-doc-xml >= 3.2.0 +%else +BuildRequires: freeglut-devel +BuildRequires: gstreamer-plugins-base-devel +BuildRequires: libjbig-devel +BuildRequires: pkgconfig(gstreamer-1.0) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(liblzma) +BuildRequires: pkgconfig(libmspack) +BuildRequires: pkgconfig(libnotify) +BuildRequires: pkgconfig(libpng16) +BuildRequires: pkgconfig(libtiff-4) +BuildRequires: pkgconfig(sdl2) +BuildRequires: pkgconfig(sm) +BuildRequires: pkgconfig(webkit2gtk-4.0) +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xtst) +%endif +Requires: %{pprefix}-Pillow +Requires: %{pprefix}-numpy +Requires: %{pprefix}-six +Requires(post): update-alternatives +Requires(postun):update-alternatives +Conflicts: %{pprefix}-wxWidgets +Provides: %{pprefix}-wxWidgets = %{version} +%if "%{python_provides}" != "" +# for TW primary flavor provider +Conflicts: %{python_provides}-wxWidgets +Provides: %{python_provides}-wxPython = %{version}-%{release} +Provides: %{python_provides}-wxWidgets = %{version} +Obsoletes: %{python_provides}-wxPython < %{version}-%{release} +%endif +%if %{with test} +BuildRequires: %{python_module Pillow} +BuildRequires: %{python_module numpy} +BuildRequires: %{python_module pytest-forked} +BuildRequires: %{python_module pytest-xdist} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module six} +BuildRequires: Mesa-dri +# Need at least one font installed +BuildRequires: google-opensans-fonts +# BuildRequires: wxWidgets-lang +BuildRequires: xorg-x11-server +BuildRequires: pkgconfig(cppunit) +%endif + +%description +Phoenix is a reimplementation of wxPython. Like the "classic" +wxPython, Phoenix wraps the wxWidgets C++ toolkit and provides access +to the user interface portions of the wxWidgets API, enabling Python +applications to have a GUI on Windows, macOS or Unix-like systems, +with a native look and feel and requiring very little (if any) +platform specific code. + +%package lang +# We cannot use %%lang_package here. Editra translations use noarch incompatible path. +Summary: Languages for package %{name} +Group: System/Libraries +Requires: %{name} = %{version} +Requires: python(abi) = %python_version +Supplements: (bundle-lang-other and %{name}) +Provides: %{name}-lang-all = %{version} +%if "%{python_provides}" != "" +# for TW primary flavor provider +Provides: %{python_provides}-wxPython-lang = %{version}-%{release} +Obsoletes: %{python_provides}-wxPython-lang < %{version}-%{release} +%endif + +%description lang +Provides translations to the package %{name}. + +%prep +%autosetup -n wxPython-%{version} -p1 +# https://github.com/wxWidgets/Phoenix/issues/2105 +# https://bugzilla.suse.com/show_bug.cgi?id=670523 +find -iname *.dll | grep . && \ + { echo "please run repack script (gh#2105)"; exit 1; } +# Lower minimum Python version +sed -i -e '/check_python_version/ s@3,7,0@3,6,0@' wscript + +# Reuse locale from wxWidgets package +%if %{with syswx} +rm -Rf wx/locale +%endif + +sed -i -e '/^#!\//, 1d' wx/py/*.py +sed -i -e '/^#!\//, 1d' wx/tools/*.py +sed -i -e '/^#!\//, 1d' wx/py/tests/*.py +echo "# empty module" >> wx/lib/pubsub/core/itopicdefnprovider.py + +%build +export CFLAGS="%{optflags}" + +%if %{with rebuild_sip} +# Save LICENSE* files from bundled siplib +mv sip/siplib{,_old} + +export DOXYGEN=%{_bindir}/doxygen +export SIP=%{_bindir}/sip +export WAF=%{_bindir}/waf +mkdir -p /tmp/wxxml/docs/doxygen/out/ +rm -f /tmp/wxxml/docs/doxygen/out/xml +cp ext/wxWidgets/docs/*.txt /tmp/wxxml/docs/ +ln -sf %{_docdir}/wxWidgets*doc-xml /tmp/wxxml/docs/doxygen/out/xml +export WXWIN=/tmp/wxxml/ + +%python_exec build.py touch %{wx_args} +%python_exec build.py etg --nodoc %{wx_args} +%python_exec build.py sip %{wx_args} +cp sip/siplib_old/LICENSE* sip/siplib/ +if [ ! -e sip/siplib/sip_array.c ]; then + cp sip/siplib/{,sip_}array.c + cp sip/siplib/{,sip_}array.h +fi +%endif + +%python_exec build.py build %{wx_args} + +%install +%python_exec build.py install %{wx_args} --destdir=%{buildroot} --extra_setup="-O1 --force" + +%fdupes %{buildroot}%{_libdir} + +%python_clone -a %{buildroot}%{_bindir}/helpviewer +%python_clone -a %{buildroot}%{_bindir}/img2png +%python_clone -a %{buildroot}%{_bindir}/img2py +%python_clone -a %{buildroot}%{_bindir}/img2xpm +%python_clone -a %{buildroot}%{_bindir}/pycrust +%python_clone -a %{buildroot}%{_bindir}/pyshell +%python_clone -a %{buildroot}%{_bindir}/pyslices +%python_clone -a %{buildroot}%{_bindir}/pyslicesshell +%python_clone -a %{buildroot}%{_bindir}/pywxrc +%python_clone -a %{buildroot}%{_bindir}/wxdemo +%python_clone -a %{buildroot}%{_bindir}/wxdocs +%python_clone -a %{buildroot}%{_bindir}/wxget + +%if %{without syswx} +%find_lang wxstd +%endif + +%check +%if %{with test} +############################################# +### Launch a virtual framebuffer X server ### +############################################# +export DISPLAY=%{X_display} +Xvfb %{X_display} >& Xvfb.log & +trap "kill $! || true" EXIT +sleep 5 + +# Make sure "import wx" does not confuse the wx dir with the module +mv wx wx_temp + +# pytest --forked from python-pytest-forked: +# Run each test as a separate process, otherwise multiple app +# instances will corrupt each others static data. +# +# Run UiAction tests one by one +%pytest_arch --forked -n 1 -k 'test_uiaction or test_mousemanager' unittests/ +# Skip Auto ID management test (only enabled on Windows) +# Skip Frame restore (requires a window manager) +# Skip Locale.GetString, we do not ship translations for wxWidgets-3_2 +# Skip wx.lib.pubsub, fails due to PYTHONDONTWRITEBYTECODE, also deprecated for pypubsub +# Skip UiAction tests (already done) +%{pytest_arch --forked -n 4 -k \ + '(not test_newIdRef03) and (not test_uiaction) and (not test_mousemanager) and (not test_frameRestore) and (not test_intlGetString) and (not lib_pubsub_Except) and (not test_xrc7)' \ + unittests/ +} + +mv wx_temp wx +%endif + +%post +%python_install_alternative pywxrc helpviewer img2png img2py img2xpm pycrust pyshell pyslices pyslicesshell wxdemo wxdocs wxget + +%postun +%python_uninstall_alternative pywxrc + +%files +%license LICENSE.txt license/*.txt +%doc CHANGES.rst README.rst TODO.rst +%python_alternative %{_bindir}/helpviewer +%python_alternative %{_bindir}/img2png +%python_alternative %{_bindir}/img2py +%python_alternative %{_bindir}/img2xpm +%python_alternative %{_bindir}/pycrust +%python_alternative %{_bindir}/pyshell +%python_alternative %{_bindir}/pyslices +%python_alternative %{_bindir}/pyslicesshell +%python_alternative %{_bindir}/pywxrc +%python_alternative %{_bindir}/wxdemo +%python_alternative %{_bindir}/wxdocs +%python_alternative %{_bindir}/wxget +%{python_sitearch}/wxPython-%{version}-py*.egg-info +%{python_sitearch}/wx/ +%if %{without syswx} +%exclude %{python_sitearch}/wx/locale/ +%endif + +%if %{without syswx} +%files lang -f wxstd.lang +%dir %{python_sitearch}/wx/locale/ +%dir %{python_sitearch}/wx/locale/* +%dir %{python_sitearch}/wx/locale/*/LC_MESSAGES +%endif + +%changelog diff --git a/repack b/repack new file mode 100644 index 0000000..ec8d3c2 --- /dev/null +++ b/repack @@ -0,0 +1,4 @@ +#!/bin/sh +tar -xzf wxPython-*.gz +rm -r wxPython-*/packaging +tar -czf wxPython-*.gz wxPython-*/ diff --git a/require-numpy.patch b/require-numpy.patch new file mode 100644 index 0000000..c4895d1 --- /dev/null +++ b/require-numpy.patch @@ -0,0 +1,11 @@ +Revert https://github.com/wxWidgets/Phoenix/commit/b1c55639dfb73db3a11307c9de888540cec512df + +--- a/requirements/install.txt 2023-06-07 01:31:16.000000000 +0000 ++++ b/requirements/install.txt 2024-01-06 22:08:26.485981672 +0000 +@@ -1,5 +1,4 @@ + # Runtime dependencies needed when using wxPython Phoenix +-numpy < 1.17 ; python_version <= '2.7' +-numpy ; python_version >= '3.0' and python_version < '3.12' ++numpy + pillow + six diff --git a/use_stl_build.patch b/use_stl_build.patch new file mode 100644 index 0000000..b142338 --- /dev/null +++ b/use_stl_build.patch @@ -0,0 +1,11 @@ +--- wxPython-4.1.0/buildtools/build_wxwidgets.py_orig 2020-05-30 01:24:47.890132236 +0200 ++++ wxPython-4.1.0/buildtools/build_wxwidgets.py 2020-05-30 01:25:59.574988273 +0200 +@@ -370,6 +370,8 @@ + if os.path.exists(frameworkRootDir): + shutil.rmtree(frameworkRootDir) + ++ configure_opts.append("--enable-stl") ++ + print("Configure options: " + repr(configure_opts)) + wxBuilder = builder.AutoconfBuilder() + if not options.no_config and not options.clean: diff --git a/wxPython-4.2.1.tar.gz b/wxPython-4.2.1.tar.gz new file mode 100644 index 0000000..e3b743f --- /dev/null +++ b/wxPython-4.2.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aae4cca64cb53ef17f964c75ca8d1aaa1af12f33a0aaf1a483c5989537f6121a +size 72503592