python3-wxgtk4: add recipe

Add recipe for python3-wxgtk4 which is a python3 interface to the
wxWidgets Cross-platform C++ GUI toolkit.

Add patches to
* add back build options for oe
* fixup build scripts for cross compile
* fix sip oevrride functions compile errors

Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Kai Kang 2022-03-30 17:39:33 +08:00 committed by Khem Raj
parent ce604d453c
commit 6eb78d932f
4 changed files with 142 additions and 0 deletions

View File

@ -0,0 +1,22 @@
Add back default user options for cross build.
Upstream-Status: Pending [oe specific]
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
setup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/setup.py b/setup.py
index a215da7..dccfeb3 100644
--- a/setup.py
+++ b/setup.py
@@ -105,7 +105,7 @@ class wx_build(orig_build):
Delegate to build.py for doing the actual build, (including wxWidgets)
instead of letting distutils do it all.
"""
- user_options = [
+ user_options = orig_build.user_options + [
('skip-build', None, 'skip building the C/C++ code (assumes it has already been done)'),
]
boolean_options = ['skip-build']

View File

@ -0,0 +1,35 @@
It fails to compile with errors:
| ../../../../sip/cpp/sip_gridwxGridEvent.cpp:35:9: error: 'int sipwxGridEvent::GetRow()'
marked 'override', but does not override
| 35 | int GetRow() SIP_OVERRIDE;
| | ^~~~~~
| ../../../../sip/cpp/sip_gridwxGridEvent.cpp:36:9: error: 'int sipwxGridEvent::GetCol()'
marked 'override', but does not over ride
| 36 | int GetCol() SIP_OVERRIDE;
| | ^~~~~~
Make these functions non-override.
Upstream-Status: Pending
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
sip/cpp/sip_gridwxGridEvent.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sip/cpp/sip_gridwxGridEvent.cpp b/sip/cpp/sip_gridwxGridEvent.cpp
index 0830b677..314aec94 100644
--- a/sip/cpp/sip_gridwxGridEvent.cpp
+++ b/sip/cpp/sip_gridwxGridEvent.cpp
@@ -32,8 +32,8 @@ public:
* this class.
*/
protected:
- int GetRow() SIP_OVERRIDE;
- int GetCol() SIP_OVERRIDE;
+ int GetRow() ;
+ int GetCol() ;
::wxEvent* Clone() const SIP_OVERRIDE;
::wxEventCategory GetEventCategory() const SIP_OVERRIDE;

View File

@ -0,0 +1,53 @@
Fix issues in build scripts:
* remove hardcode lib path from buildtools/config.py which is not suitable for
cross build
* only build target 'build_py' in setup.py
* do not override self.install_lib with self.install_platlib which causes
package issue when multilib is enabled.
Upstream-Status: Pending [cross build specific]
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
buildtools/config.py | 4 ++--
setup.py | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/buildtools/config.py b/buildtools/config.py
index c837e5d..d426005 100644
--- a/buildtools/config.py
+++ b/buildtools/config.py
@@ -312,8 +312,8 @@ class Configuration(object):
# wx-config doesn't output that for some reason. For now, just
# add it unconditionally but we should really check if the lib is
# really found there or wx-config should be fixed.
- if self.WXPORT != 'msw':
- self.libdirs.append("/usr/X11R6/lib")
+ #if self.WXPORT != 'msw':
+ # self.libdirs.append("/usr/X11R6/lib")
# Move the various -I, -D, etc. flags we got from the config scripts
# into the distutils lists.
diff --git a/setup.py b/setup.py
index 64bec4b..fb29253 100644
--- a/setup.py
+++ b/setup.py
@@ -130,7 +130,7 @@ class wx_build(orig_build):
'message and the wxWidgets and Phoenix build steps in the future.\n')
# Use the same Python that is running this script.
- cmd = ['"{}"'.format(sys.executable), '-u', 'build.py', 'build']
+ cmd = ['"{}"'.format(sys.executable), '-u', 'build.py', 'build_py']
cmd = ' '.join(cmd)
runcmd(cmd)
@@ -233,7 +233,7 @@ if haveWheel:
class wx_install(orig_install):
def finalize_options(self):
orig_install.finalize_options(self)
- self.install_lib = self.install_platlib
+ #self.install_lib = self.install_platlib
def run(self):
self.run_command("build")

View File

@ -0,0 +1,32 @@
DESCRIPTION = "Python3 interface to the wxWidgets Cross-platform C++ GUI toolkit."
HOMEPAGE = "http://www.wxpython.org"
LICENSE = "WXwindows"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=fce1d18e2d633d41786c0a8dfbc80917"
DEPENDS = "wxwidgets-native wxwidgets"
PYPI_PACKAGE = "wxPython"
SRC_URI += "file://add-back-option-build-base.patch \
file://wxgtk-fixup-build-scripts.patch \
file://sip-fix-override-functions.patch \
"
SRC_URI[sha256sum] = "00e5e3180ac7f2852f342ad341d57c44e7e4326de0b550b9a5c4a8361b6c3528"
S = "${WORKDIR}/wxPython-${PV}"
inherit pypi setuptools3 pkgconfig
export WX_CONFIG = "${RECIPE_SYSROOT_NATIVE}${bindir}/wx-config"
RDEPENDS:${PN} = "\
python3-difflib \
python3-image \
python3-numpy \
python3-pillow \
python3-pprint \
python3-pycairo \
python3-six \
python3-xml \
"