Hello community, here is the log from the commit of package python-wxPython for openSUSE:Factory checked in at 2020-08-06 17:32:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-wxPython (Old) and /work/SRC/openSUSE:Factory/.python-wxPython.new.3399 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-wxPython" Thu Aug 6 17:32:14 2020 rev:8 rq:824391 version:4.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-wxPython/python-wxPython.changes 2020-06-26 21:44:07.293577214 +0200 +++ /work/SRC/openSUSE:Factory/.python-wxPython.new.3399/python-wxPython.changes 2020-08-06 17:32:54.417105432 +0200 @@ -1,0 +2,11 @@ +Wed Jul 1 12:55:23 UTC 2020 - Stefan BrĂ¼ns <stefan.bru...@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 + +------------------------------------------------------------------- New: ---- 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 use_stl_build.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-wxPython.spec ++++++ --- /var/tmp/diff_new_pack.hP8NHV/_old 2020-08-06 17:32:56.577105937 +0200 +++ /var/tmp/diff_new_pack.hP8NHV/_new 2020-08-06 17:32:56.577105937 +0200 @@ -37,19 +37,31 @@ Source1: python-wxPython-rpmlintrc # PATCH-FIX-OPENSUSE fix_no_return_in_nonvoid.patch -- Fix lack of return in nonvoid functions Patch0: fix_no_return_in_nonvoid.patch +# PATCH-FIX-OPENSUSE +Patch1: use_stl_build.patch +# PATCH-FIX-UPSTREAM -- patch for bundled wxWidgets +Patch2: 0001-Fix-conversion-of-variant-list-members.patch +# PATCH-FIX-UPSTREAM +Patch3: 0001-Fix-wxUIActionSimulator-Text-parameter-documentation.patch +# PATCH-FIX-UPSTREAM +Patch4: 0003-Use-explicit-wxString-c_str-conversion-for-sipFindTy.patch BuildRequires: %{python_module devel} BuildRequires: %{python_module requests} BuildRequires: %{python_module setuptools} BuildRequires: c++_compiler -BuildRequires: doxygen BuildRequires: fdupes -BuildRequires: freeglut-devel -BuildRequires: gstreamer-plugins-base-devel -BuildRequires: libjbig-devel BuildRequires: pkgconfig BuildRequires: python-rpm-macros +%if %{with test} BuildRequires: xorg-x11-server BuildRequires: pkgconfig(cppunit) +%endif +%if %{with syswx} +BuildRequires: wxGTK3-devel +%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) @@ -63,6 +75,7 @@ BuildRequires: pkgconfig(webkit2gtk-4.0) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xtst) +%endif Requires: python-six Requires(post): update-alternatives Requires(postun): update-alternatives @@ -101,6 +114,10 @@ %prep %setup -q -n wxPython-%{version} %patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 sed -i -e '/^#!\//, 1d' wx/py/*.py sed -i -e '/^#!\//, 1d' wx/tools/*.py sed -i -e '/^#!\//, 1d' wx/py/tests/*.py ++++++ 0001-Fix-conversion-of-variant-list-members.patch ++++++ >From 0c055a0af876d4f44ebe04ebb744dfc88b2243ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bru...@rwth-aachen.de> Date: Sat, 30 May 2020 02:04:41 +0200 Subject: [PATCH 1/3] Fix conversion of variant list members Item() returns either a Node* or (with wxUSE_STL=1) a compatibility_iterator. While the former is silently and erroneously converted to a Variant using the Variant(void*) overload, the STL flavor fortunately failed. Dereference the Node*/iterator before passing it to wxVariant_out_helper(const Variant&). --- sip/cpp/sip_corewxVariantList.cpp | 2 +- sip/cpp/sip_propgridwxPGVariantList.cpp | 2 +- src/pgvariant.sip | 2 +- src/variant.sip | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sip/cpp/sip_corewxVariantList.cpp b/sip/cpp/sip_corewxVariantList.cpp index 0c9f0f4c..fe9be050 100644 --- a/sip/cpp/sip_corewxVariantList.cpp +++ b/sip/cpp/sip_corewxVariantList.cpp @@ -84,7 +84,7 @@ static PyObject *convertFrom_wxVariantList(void *sipCppV, PyObject *) size_t idx = 0; PyObject* value = PyList_New(0); for (idx=0; idx < sipCpp->GetCount(); idx++) { - PyObject* item = wxVariant_out_helper(sipCpp->Item(idx)); + PyObject* item = wxVariant_out_helper(sipCpp->Item(idx)->GetData()); PyList_Append(value, item); } return value; diff --git a/sip/cpp/sip_propgridwxPGVariantList.cpp b/sip/cpp/sip_propgridwxPGVariantList.cpp index 2c21df45..ca2d0b65 100644 --- a/sip/cpp/sip_propgridwxPGVariantList.cpp +++ b/sip/cpp/sip_propgridwxPGVariantList.cpp @@ -84,7 +84,7 @@ static PyObject *convertFrom_wxPGVariantList(void *sipCppV, PyObject *) size_t idx = 0; PyObject* value = PyList_New(0); for (idx=0; idx < sipCpp->GetCount(); idx++) { - PyObject* item = wxPGVariant_out_helper(sipCpp->Item(idx)); + PyObject* item = wxPGVariant_out_helper(sipCpp->Item(idx)->GetData()); PyList_Append(value, item); } return value; diff --git a/src/pgvariant.sip b/src/pgvariant.sip index 05a2d429..32cd5fe4 100644 --- a/src/pgvariant.sip +++ b/src/pgvariant.sip @@ -182,7 +182,7 @@ PyObject* wxPGVariant_out_helper(const wxVariant& value) size_t idx = 0; PyObject* value = PyList_New(0); for (idx=0; idx < sipCpp->GetCount(); idx++) { - PyObject* item = wxPGVariant_out_helper(sipCpp->Item(idx)); + PyObject* item = wxPGVariant_out_helper(sipCpp->Item(idx)->GetData()); PyList_Append(value, item); } return value; diff --git a/src/variant.sip b/src/variant.sip index c4a53eef..9e2572e7 100644 --- a/src/variant.sip +++ b/src/variant.sip @@ -77,7 +77,7 @@ size_t idx = 0; PyObject* value = PyList_New(0); for (idx=0; idx < sipCpp->GetCount(); idx++) { - PyObject* item = wxVariant_out_helper(sipCpp->Item(idx)); + PyObject* item = wxVariant_out_helper(sipCpp->Item(idx)->GetData()); PyList_Append(value, item); } return value; -- 2.26.2 ++++++ 0001-Fix-wxUIActionSimulator-Text-parameter-documentation.patch ++++++ >From 5b810b129db00a98c84672cd94a4a4be83ba8e69 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin <va...@wxwidgets.org> Date: Mon, 1 Jun 2020 17:25:41 +0200 Subject: [PATCH] Fix wxUIActionSimulator::Text() parameter documentation This function explicitly accepts ASCII strings only, so it's limited to "const char*", but was incorrectly documented as taking wxString. Closes https://github.com/wxWidgets/wxWidgets/pull/1879 --- ext/wxWidgets/interface/wx/uiaction.h | 4 ++-- sip/cpp/sip_corewxUIActionSimulator.cpp | 2 +- sip/gen/uiaction.sip | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ext/wxWidgets/interface/wx/uiaction.h b/ext/wxWidgets/interface/wx/uiaction.h index 27b3aaf2..7d4eba52 100644 --- a/ext/wxWidgets/interface/wx/uiaction.h +++ b/ext/wxWidgets/interface/wx/uiaction.h @@ -176,8 +176,8 @@ public: keyboard layout but may not work with other layouts. @param text - The string to type. + The string, containing only US ASCII characters, to type. */ - bool Text(const wxString& text); + bool Text(const char* text); }; diff --git a/sip/cpp/sip_corewxUIActionSimulator.cpp b/sip/cpp/sip_corewxUIActionSimulator.cpp index 42bc481a..85a47384 100644 --- a/sip/cpp/sip_corewxUIActionSimulator.cpp +++ b/sip/cpp/sip_corewxUIActionSimulator.cpp @@ -496,7 +496,7 @@ static PyObject *meth_wxUIActionSimulator_Text(PyObject *sipSelf, PyObject *sipA PyErr_Clear(); Py_BEGIN_ALLOW_THREADS - sipRes = sipCpp->Text(*text); + sipRes = sipCpp->Text(text->c_str()); Py_END_ALLOW_THREADS sipReleaseType(const_cast< ::wxString *>(text),sipType_wxString,textState); diff --git a/sip/gen/uiaction.sip b/sip/gen/uiaction.sip index 788e2b65..ff27dfa0 100644 --- a/sip/gen/uiaction.sip +++ b/sip/gen/uiaction.sip @@ -129,7 +129,7 @@ public: %End bool Text( - const wxString & text + const char* text ); %Docstring Text(text) -> bool -- 2.27.0 ++++++ 0003-Use-explicit-wxString-c_str-conversion-for-sipFindTy.patch ++++++ >From a88ca321429320675fba92f74d4f88d7e9a1845e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bru...@rwth-aachen.de> Date: Mon, 1 Jun 2020 04:06:53 +0200 Subject: [PATCH 3/3] Use explicit wxString::c_str conversion for sipFindType(const char*) --- etgtools/tweaker_tools.py | 6 +++--- sip/cpp/sip_corecmodule.cpp | 18 +++++++++--------- sip/gen/object.sip | 6 +++--- sip/gen/window.sip | 6 +++--- src/wxpy_api.sip | 6 +++--- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/etgtools/tweaker_tools.py b/etgtools/tweaker_tools.py index 09c798be..c07fdfa6 100644 --- a/etgtools/tweaker_tools.py +++ b/etgtools/tweaker_tools.py @@ -520,14 +520,14 @@ def addSipConvertToSubClassCode(klass): %ConvertToSubClassCode const wxClassInfo* info = sipCpp->GetClassInfo(); wxString name = info->GetClassName(); - bool exists = sipFindType(name) != NULL; + bool exists = sipFindType(name.c_str()) != NULL; while (info && !exists) { info = info->GetBaseClass1(); name = info->GetClassName(); - exists = sipFindType(name) != NULL; + exists = sipFindType(name.c_str()) != NULL; } if (info) - sipType = sipFindType(name); + sipType = sipFindType(name.c_str()); else sipType = NULL; %End diff --git a/sip/cpp/sip_corecmodule.cpp b/sip/cpp/sip_corecmodule.cpp index bab2a087..3fcddece 100644 --- a/sip/cpp/sip_corecmodule.cpp +++ b/sip/cpp/sip_corecmodule.cpp @@ -7576,7 +7576,7 @@ static PyObject* i_wxPyConstructObject(void* ptr, if (pos != wxNOT_FOUND) name = name.Mid(pos + nsDelimiter.Len()); - const sipTypeDef* td = sipFindType(name); + const sipTypeDef* td = sipFindType(name.c_str()); if (!td) return NULL; PyObject* transferObj = setThisOwn ? Py_None : NULL; @@ -7594,7 +7594,7 @@ static bool i_wxPyWrappedPtr_Check(PyObject* obj) // Check if a PyObject is a specific wrapped class or subclass static bool i_wxPyWrappedPtr_TypeCheck(PyObject* obj, const wxString& className) { - const sipTypeDef* td = sipFindType(className); + const sipTypeDef* td = sipFindType(className.c_str()); if (!td) return false; return sipCanConvertToType(obj, td, SIP_NO_CONVERTORS); @@ -7604,7 +7604,7 @@ static bool i_wxPyWrappedPtr_TypeCheck(PyObject* obj, const wxString& className) // Convert a wrapped SIP object to its C++ pointer, ensuring that it is of the expected type static bool i_wxPyConvertWrappedPtr(PyObject* obj, void **ptr, const wxString& className) { - const sipTypeDef* td = sipFindType(className); + const sipTypeDef* td = sipFindType(className.c_str()); if (!td) return false; if (! sipCanConvertToType(obj, td, SIP_NO_CONVERTORS)) @@ -16045,14 +16045,14 @@ static const sipTypeDef *sipSubClass_wxObject(void **sipCppRet) const wxClassInfo* info = sipCpp->GetClassInfo(); wxString name = info->GetClassName(); - bool exists = sipFindType(name) != NULL; + bool exists = sipFindType(name.c_str()) != NULL; while (info && !exists) { info = info->GetBaseClass1(); name = info->GetClassName(); - exists = sipFindType(name) != NULL; + exists = sipFindType(name.c_str()) != NULL; } if (info) - sipType = sipFindType(name); + sipType = sipFindType(name.c_str()); else sipType = NULL; @@ -16069,14 +16069,14 @@ static const sipTypeDef *sipSubClass_wxWindow(void **sipCppRet) const wxClassInfo* info = sipCpp->GetClassInfo(); wxString name = info->GetClassName(); - bool exists = sipFindType(name) != NULL; + bool exists = sipFindType(name.c_str()) != NULL; while (info && !exists) { info = info->GetBaseClass1(); name = info->GetClassName(); - exists = sipFindType(name) != NULL; + exists = sipFindType(name.c_str()) != NULL; } if (info) - sipType = sipFindType(name); + sipType = sipFindType(name.c_str()); else sipType = NULL; diff --git a/sip/gen/object.sip b/sip/gen/object.sip index d94e1243..71d2fe78 100644 --- a/sip/gen/object.sip +++ b/sip/gen/object.sip @@ -189,14 +189,14 @@ public: %ConvertToSubClassCode const wxClassInfo* info = sipCpp->GetClassInfo(); wxString name = info->GetClassName(); - bool exists = sipFindType(name) != NULL; + bool exists = sipFindType(name.c_str()) != NULL; while (info && !exists) { info = info->GetBaseClass1(); name = info->GetClassName(); - exists = sipFindType(name) != NULL; + exists = sipFindType(name.c_str()) != NULL; } if (info) - sipType = sipFindType(name); + sipType = sipFindType(name.c_str()); else sipType = NULL; %End diff --git a/sip/gen/window.sip b/sip/gen/window.sip index 6ad84464..b29898bb 100644 --- a/sip/gen/window.sip +++ b/sip/gen/window.sip @@ -2932,14 +2932,14 @@ public: %ConvertToSubClassCode const wxClassInfo* info = sipCpp->GetClassInfo(); wxString name = info->GetClassName(); - bool exists = sipFindType(name) != NULL; + bool exists = sipFindType(name.c_str()) != NULL; while (info && !exists) { info = info->GetBaseClass1(); name = info->GetClassName(); - exists = sipFindType(name) != NULL; + exists = sipFindType(name.c_str()) != NULL; } if (info) - sipType = sipFindType(name); + sipType = sipFindType(name.c_str()); else sipType = NULL; %End diff --git a/src/wxpy_api.sip b/src/wxpy_api.sip index 5e63fc58..ac9c10ad 100644 --- a/src/wxpy_api.sip +++ b/src/wxpy_api.sip @@ -111,7 +111,7 @@ static PyObject* i_wxPyConstructObject(void* ptr, if (pos != wxNOT_FOUND) name = name.Mid(pos + nsDelimiter.Len()); - const sipTypeDef* td = sipFindType(name); + const sipTypeDef* td = sipFindType(name.c_str()); if (!td) return NULL; PyObject* transferObj = setThisOwn ? Py_None : NULL; @@ -129,7 +129,7 @@ static bool i_wxPyWrappedPtr_Check(PyObject* obj) // Check if a PyObject is a specific wrapped class or subclass static bool i_wxPyWrappedPtr_TypeCheck(PyObject* obj, const wxString& className) { - const sipTypeDef* td = sipFindType(className); + const sipTypeDef* td = sipFindType(className.c_str()); if (!td) return false; return sipCanConvertToType(obj, td, SIP_NO_CONVERTORS); @@ -139,7 +139,7 @@ static bool i_wxPyWrappedPtr_TypeCheck(PyObject* obj, const wxString& className) // Convert a wrapped SIP object to its C++ pointer, ensuring that it is of the expected type static bool i_wxPyConvertWrappedPtr(PyObject* obj, void **ptr, const wxString& className) { - const sipTypeDef* td = sipFindType(className); + const sipTypeDef* td = sipFindType(className.c_str()); if (!td) return false; if (! sipCanConvertToType(obj, td, SIP_NO_CONVERTORS)) -- 2.26.2 ++++++ use_stl_build.patch ++++++ --- 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 @@ -362,6 +362,7 @@ else: configure_opts.append("--enable-universal_binary=%s" % options.mac_universal_binary) + configure_opts.append("--enable-stl") print("Configure options: " + repr(configure_opts)) wxBuilder = builder.AutoconfBuilder()