mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-06 00:48:18 -07:00
dev-python/wxpython: fix tests on 32-bit arches
See commentary in the patch, but the gist is that we go back to 'long' as a hack, although it's not right for Windows. Closes: https://bugs.gentoo.org/922328 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
34
dev-python/wxpython/files/wxpython-4.2.1-x86-time.patch
Normal file
34
dev-python/wxpython/files/wxpython-4.2.1-x86-time.patch
Normal file
@@ -0,0 +1,34 @@
|
||||
https://bugs.gentoo.org/922328
|
||||
https://github.com/wxWidgets/Phoenix/issues/1910
|
||||
https://github.com/wxWidgets/Phoenix/issues/2197 (specifically https://github.com/wxWidgets/Phoenix/issues/2197#issuecomment-1169378156)
|
||||
https://github.com/StefanBruens/Phoenix/commit/8b743981d557d0465ba53e938784be94f4679145 but w/ s/SIP_SSIZE_T/long
|
||||
i.e. a revert of https://github.com/wxWidgets/Phoenix/commit/c78823549bac1b28d99a1ad6dc1008485a2afb33.
|
||||
|
||||
From 8b743981d557d0465ba53e938784be94f4679145 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] 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).
|
||||
|
||||
Fixes #2197.
|
||||
etg/defs.py | 2 +-
|
||||
|
||||
--- 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))
|
||||
128
dev-python/wxpython/wxpython-4.2.1-r2.ebuild
Normal file
128
dev-python/wxpython/wxpython-4.2.1-r2.ebuild
Normal file
@@ -0,0 +1,128 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DISTUTILS_EXT=1
|
||||
DISTUTILS_IN_SOURCE_BUILD="1"
|
||||
PYTHON_COMPAT=( python3_{10..12} )
|
||||
PYPI_NO_NORMALIZE=1
|
||||
PYPI_PN="wxPython"
|
||||
WX_GTK_VER="3.2-gtk3"
|
||||
|
||||
inherit distutils-r1 multiprocessing virtualx wxwidgets pypi
|
||||
|
||||
DESCRIPTION="A blending of the wxWindows C++ class library with Python"
|
||||
HOMEPAGE="
|
||||
https://www.wxpython.org/
|
||||
https://github.com/wxWidgets/Phoenix/
|
||||
https://pypi.org/project/wxPython/
|
||||
"
|
||||
|
||||
LICENSE="wxWinLL-3"
|
||||
SLOT="4.0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
|
||||
IUSE="test webkit"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
# wxPython doesn't seem to be able to optionally disable features. webkit is
|
||||
# optionally patched out because it's so huge, but other elements are not,
|
||||
# which makes us have to require all features from wxGTK
|
||||
DEPEND="
|
||||
>=x11-libs/wxGTK-3.0.4-r301:${WX_GTK_VER}=[gstreamer,libnotify,opengl,sdl,tiff,webkit?,X]
|
||||
media-libs/libpng:=
|
||||
media-libs/tiff:=
|
||||
media-libs/libjpeg-turbo:=
|
||||
"
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
"
|
||||
BDEPEND="
|
||||
app-text/doxygen
|
||||
dev-python/cython[${PYTHON_USEDEP}]
|
||||
dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
>=dev-python/sip-6.6.2[${PYTHON_USEDEP}]
|
||||
dev-python/six[${PYTHON_USEDEP}]
|
||||
test? (
|
||||
${VIRTUALX_DEPEND}
|
||||
dev-python/appdirs[${PYTHON_USEDEP}]
|
||||
dev-python/numpy[${PYTHON_USEDEP}]
|
||||
dev-python/pillow[${PYTHON_USEDEP}]
|
||||
dev-python/pytest[${PYTHON_USEDEP}]
|
||||
dev-python/pytest-forked[${PYTHON_USEDEP}]
|
||||
dev-python/pytest-xdist[${PYTHON_USEDEP}]
|
||||
)
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-4.2.0-flags.patch"
|
||||
"${FILESDIR}/${PN}-4.2.0-cython-3.patch"
|
||||
"${FILESDIR}/${PN}-4.2.1-integer-division-for-randint.patch"
|
||||
"${FILESDIR}/${PN}-4.2.1-x86-time.patch"
|
||||
)
|
||||
|
||||
python_prepare_all() {
|
||||
if ! use webkit; then
|
||||
eapply "${FILESDIR}/${PN}-4.2.0-no-webkit.patch"
|
||||
fi
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
setup-wxwidgets
|
||||
}
|
||||
|
||||
python_compile() {
|
||||
DOXYGEN="$(type -P doxygen)" ${PYTHON} build.py dox etg --nodoc || die
|
||||
|
||||
# Refresh the bundled/pregenerated sip files
|
||||
"${EPYTHON}" build.py sip || die
|
||||
|
||||
# Build the bindings
|
||||
"${EPYTHON}" build.py build_py \
|
||||
--use_syswx \
|
||||
--no_magic \
|
||||
--jobs="$(makeopts_jobs)" \
|
||||
--verbose \
|
||||
--release || die
|
||||
}
|
||||
|
||||
python_test() {
|
||||
local EPYTEST_DESELECT=(
|
||||
# virtx probably
|
||||
unittests/test_display.py::display_Tests::test_display
|
||||
unittests/test_frame.py::frame_Tests::test_frameRestore
|
||||
unittests/test_mousemanager.py::mousemanager_Tests::test_mousemanager1
|
||||
unittests/test_uiaction.py::uiaction_KeyboardTests::test_uiactionKeyboardChar
|
||||
unittests/test_uiaction.py::uiaction_KeyboardTests::test_uiactionKeyboardKeyDownUp
|
||||
unittests/test_uiaction.py::uiaction_MouseTests
|
||||
|
||||
# assertion (TODO)
|
||||
unittests/test_aboutdlg.py::aboutdlg_Tests::test_aboutdlgGeneric
|
||||
unittests/test_lib_agw_piectrl.py::lib_agw_piectrl_Tests::test_lib_agw_piectrlCtor
|
||||
|
||||
# seems to rely on state from a previous test (sigh)
|
||||
unittests/test_lib_agw_persist_persistencemanager.py::lib_agw_persist_persistencemanager_Tests::test_persistencemanagerRestore
|
||||
|
||||
# requires Spanish localization
|
||||
unittests/test_intl.py::intl_Tests::test_intlGetString
|
||||
|
||||
# TODO
|
||||
unittests/test_tipwin.py::tipwin_Tests::test_tipwinCtor
|
||||
unittests/test_lib_pubsub_provider.py::lib_pubsub_Except::test1
|
||||
unittests/test_windowid.py::IdManagerTest::test_newIdRef03
|
||||
)
|
||||
local EPYTEST_IGNORE=()
|
||||
if ! use webkit; then
|
||||
EPYTEST_IGNORE+=( unittests/test_webview.py )
|
||||
fi
|
||||
|
||||
# We use pytest-forked as opensuse does to avoid tests corrupting each
|
||||
# other.
|
||||
virtx epytest --forked -n "$(makeopts_jobs)" unittests
|
||||
}
|
||||
|
||||
python_install() {
|
||||
distutils-r1_python_install --skip-build
|
||||
}
|
||||
Reference in New Issue
Block a user