1
0

- prepare for python 3.13

* Added wrappers for the OSXEnableAutomaticQuoteSubstitution,
  * 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
  * Bug fixes in wx.lib.calendar: key navigation across month boundaries is
  * Switch to using a wx.Overlay in the Widget Inspection Tool to highlight
  * Fixed issue in wx.lib.agw.customtreectrl where the label editor could
    widgets like wx.ListCtrl, wx.TreeCtrl and wx.dataview.DataViewCtrl.
  * 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
  * Fix a sometimes crash when using a wx.Overlay by letting the wx.DCOverlay
  * Replaced the Vagrant VMs used for building wxPython for various Linux distros
  * 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
  * Fixed wx.GetApp() to use wxWidgets' global wxApp instance instead of
    maintaining its own pointer. This way, if the wxApp is created by C++
  * 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
  * 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
    which should be a more efficient (time and memory) way to process large
  * Fixed issue when sys.prefix is not unicode (Python2) and when its contents

OBS-URL: https://build.opensuse.org/package/show/X11:wxWidgets/python-wxPython?expand=0&rev=55
This commit is contained in:
Jan Engelhardt 2024-07-16 14:52:27 +00:00 committed by Git OBS Bridge
commit 2955e5c25f
20 changed files with 7008 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

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

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,26 @@
From 12cb5458cf5c26080158ecbee010ae9073a907e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
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

View File

@ -0,0 +1,33 @@
From 371101db7a010d679d214fde617dae9de02008d9 Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
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

View File

@ -0,0 +1,48 @@
From 6a049ccc0ad96f25c3f7d8540b218ffe8921d8c5 Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
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):

View File

@ -0,0 +1,73 @@
From 7a198b8cae9a81cec4d25a0c6c5cc65ad8822bb2 Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
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

View File

@ -0,0 +1,25 @@
From 3b042c863f4092f802a877a972fd6eb284451a78 Mon Sep 17 00:00:00 2001
From: Ben Greiner <code@bnavigator.de>
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) )

View File

@ -0,0 +1,49 @@
From 00ba66a86f65abb24402427d66bf50e8da477321 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
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

View File

@ -0,0 +1,55 @@
From 70ecc1afcdd59bbd3b700d000e8f92740d218245 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
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

7
_constraints Normal file
View File

@ -0,0 +1,7 @@
<constraints>
<hardware>
<disk>
<size unit="G">8</size>
</disk>
</hardware>
</constraints>

7
_multibuild Normal file
View File

@ -0,0 +1,7 @@
<multibuild>
<package>python3</package>
<package>python39</package>
<package>python310</package>
<package>python311</package>
<package>python312</package>
</multibuild>

5640
drop-py2.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
addFilter("devel-file-in-non-devel-package")
# the multibuild flavors need differently named source packages
addFilter("invalid-spec-name")

617
python-wxPython.changes Normal file
View File

@ -0,0 +1,617 @@
-------------------------------------------------------------------
Sun Jun 30 20:55:59 UTC 2024 - Dirk Müller <dmueller@suse.com>
- prepare for python 3.13
-------------------------------------------------------------------
Thu May 30 13:08:43 UTC 2024 - Markéta Machová <mmachova@suse.com>
- Add drop-py2.patch to get rid of the six dependency (it will die
with Python 3.13)
-------------------------------------------------------------------
Sat May 25 09:16:36 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Add wxwidgets-3.2.5.patch to resolve wxPython FTBFS
-------------------------------------------------------------------
Fri Feb 23 12:16:15 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Use newly supported shrink{} on OBS to exclude python flavors
when all python versions are skipped.
-------------------------------------------------------------------
Mon Jan 15 16:29:26 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Enable python312 as valid multibuild flavor.
-------------------------------------------------------------------
Sat Jan 6 21:47:42 UTC 2024 - Ben Greiner <code@bnavigator.de>
- 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 <alarrosa@suse.com>
- 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 <jengelh@inai.de>
- 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 <stefan.bruens@rwth-aachen.de>
- 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 <dmueller@suse.com>
- 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 <daniel.garcia@suse.com>
- 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 <stefan.bruens@rwth-aachen.de>
- 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 <stefan.bruens@rwth-aachen.de>
- 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 <code@bnavigator.de>
- 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 <code@bnavigator.de>
- The difference of a single whitespace character is significant
-------------------------------------------------------------------
Tue Jan 4 13:58:38 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Appease factory-auto bot about package src name
-------------------------------------------------------------------
Tue Jan 4 10:18:08 UTC 2022 - Matej Cepl <mcepl@suse.com>
- 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 <code@bnavigator.de>
- 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 <antoine.belvire@opensuse.org>
- Bump required wxWidgets version to 3.1.5.
-------------------------------------------------------------------
Fri Jun 11 01:41:18 UTC 2021 - Stanislav Brabec <sbrabec@suse.com>
- Increase disk space constraint to 15G.
-------------------------------------------------------------------
Tue Jun 8 17:52:01 UTC 2021 - Antoine Belvire <antoine.belvire@opensuse.org>
- 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 <steven.kowalik@suse.com>
- 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 <stefan.bruens@rwth-aachen.de>
- 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 <stefan.bruens@rwth-aachen.de>
- 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 <stefan.bruens@rwth-aachen.de>
- 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 <guillaume.gardet@opensuse.org>
- 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 <tchvatal@suse.com>
- 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 <steven.kowalik@suse.com>
- 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 <toddrme2178@gmail.com>
- 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 <guillaume.gardet@opensuse.org>
- 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

338
python-wxPython.spec Normal file
View File

@ -0,0 +1,338 @@
#
# spec file for package python-wxPython
#
# 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
%if "%flavor" != "python313"
%define skip_python313 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
%if "%{shrink:%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
Patch114: wxwidgets-3.2.5.patch
# PATCH-FIX-UPSTREAM https://github.com/wxWidgets/Phoenix/pull/2540
Patch115: drop-py2.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(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: 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

4
repack Normal file
View File

@ -0,0 +1,4 @@
#!/bin/sh
tar -xzf wxPython-*.gz
rm -r wxPython-*/packaging
tar -czf wxPython-*.gz wxPython-*/

11
require-numpy.patch Normal file
View File

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

11
use_stl_build.patch Normal file
View File

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

BIN
wxPython-4.2.1.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

34
wxwidgets-3.2.5.patch Normal file
View File

@ -0,0 +1,34 @@
Do not fail the wxPython build when using a wxWidgets-3.2.5 base.
Generated by:
git diff 5622abb73deaa26dc2f6dc4cd8b4b2050396b49a..78938da1218483024b3a7acf55b5fb5513882916 etg/
diff --git etg/window.py etg/window.py
index c388df76..0c035f14 100644
--- a/etg/window.py
+++ a/etg/window.py
@@ -251,6 +251,23 @@ def run():
return NULL;
#endif
""")
+ c.find('GetOrCreateAccessible').setCppCode("""\
+ #if wxUSE_ACCESSIBILITY
+ return self->GetOrCreateAccessible();
+ #else
+ wxPyRaiseNotImplemented();
+ return NULL;
+ #endif
+ """)
+ c.find('CreateAccessible').factory = True
+ c.find('CreateAccessible').setCppCode("""\
+ #if wxUSE_ACCESSIBILITY
+ return self->CreateAccessible();
+ #else
+ wxPyRaiseNotImplemented();
+ return NULL;
+ #endif
+ """)
c.find('SetAccessible.accessible').transfer = True
c.find('SetAccessible').setCppCode("""\
#if wxUSE_ACCESSIBILITY