From 99445b2c0d03eea4e58e50284cb6362b8922eff5 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Tue, 7 Nov 2023 15:09:34 +0100 Subject: dev-python/translate-toolkit: Enable py3.12 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- .../files/translate-toolkit-3.10.1-py312.patch | 36 ++++++ .../translate-toolkit-3.10.1-r1.ebuild | 124 +++++++++++++++++++++ .../translate-toolkit-3.10.1.ebuild | 120 -------------------- 3 files changed, 160 insertions(+), 120 deletions(-) create mode 100644 dev-python/translate-toolkit/files/translate-toolkit-3.10.1-py312.patch create mode 100644 dev-python/translate-toolkit/translate-toolkit-3.10.1-r1.ebuild delete mode 100644 dev-python/translate-toolkit/translate-toolkit-3.10.1.ebuild (limited to 'dev-python/translate-toolkit') diff --git a/dev-python/translate-toolkit/files/translate-toolkit-3.10.1-py312.patch b/dev-python/translate-toolkit/files/translate-toolkit-3.10.1-py312.patch new file mode 100644 index 000000000000..da0fd91520aa --- /dev/null +++ b/dev-python/translate-toolkit/files/translate-toolkit-3.10.1-py312.patch @@ -0,0 +1,36 @@ +From 3217ed10bb9371ff25cb04e194e0250d42f89206 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= +Date: Tue, 7 Nov 2023 08:42:56 +0100 +Subject: [PATCH] optrecurse: properly close opened files + +This avoids leaking file descriptors in the tests and makes sure the +content is written at the end of conversion. + +Fixes #5071 +--- + translate/misc/optrecurse.py | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/translate/misc/optrecurse.py b/translate/misc/optrecurse.py +index d69666b8e8..9337c7c4ff 100644 +--- a/translate/misc/optrecurse.py ++++ b/translate/misc/optrecurse.py +@@ -684,10 +684,17 @@ def processfile( + tempoutput = False + templatefile = self.opentemplatefile(options, fulltemplatepath) + passthroughoptions = self.getpassthroughoptions(options) +- if fileprocessor(inputfile, outputfile, templatefile, **passthroughoptions): ++ result = fileprocessor( ++ inputfile, outputfile, templatefile, **passthroughoptions ++ ) ++ if fullinputpath is not None: ++ inputfile.close() ++ if result: + if tempoutput: + self.warning("writing to temporary output...") + self.finalizetempoutputfile(options, outputfile, fulloutputpath) ++ if fulloutputpath and os.path.isfile(fulloutputpath): ++ outputfile.close() + return True + else: + # remove the file if it is a file (could be stdout etc) diff --git a/dev-python/translate-toolkit/translate-toolkit-3.10.1-r1.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.10.1-r1.ebuild new file mode 100644 index 000000000000..507a80f7bb74 --- /dev/null +++ b/dev-python/translate-toolkit/translate-toolkit-3.10.1-r1.ebuild @@ -0,0 +1,124 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} ) +PYTHON_REQ_USE="sqlite" + +inherit distutils-r1 + +MY_P=translate-${PV} +DESCRIPTION="Toolkit to convert between many translation formats" +HOMEPAGE=" + https://github.com/translate/translate/ + https://pypi.org/project/translate-toolkit/ +" +SRC_URI=" + https://github.com/translate/translate/archive/${PV}.tar.gz + -> ${MY_P}.gh.tar.gz +" +S="${WORKDIR}"/${MY_P} + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 arm64 x86" +IUSE="+html +ical +ini +subtitles +yaml" + +RDEPEND=" + app-text/iso-codes + >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}] + dev-python/cheroot[${PYTHON_USEDEP}] + >=dev-python/Levenshtein-0.12.0[${PYTHON_USEDEP}] + >=dev-python/lxml-4.3.1[${PYTHON_USEDEP}] + >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}] + >=dev-python/pyparsing-3[${PYTHON_USEDEP}] + dev-python/ruamel-yaml[${PYTHON_USEDEP}] + sys-devel/gettext + html? ( dev-python/utidylib[${PYTHON_USEDEP}] ) + ical? ( dev-python/vobject[${PYTHON_USEDEP}] ) + ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] ) + subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] ) + yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] ) +" +# Technically, the test suite also has undeclared dependency +# on dev-python/snapshottest but all the tests using it are broken +# anyway, so we skip them. +BDEPEND=" + test? ( + dev-python/phply[${PYTHON_USEDEP}] + ) +" + +PATCHES=( + # https://github.com/translate/translate/commit/3217ed10bb9371ff25cb04e194e0250d42f89206 + "${FILESDIR}/${P}-py312.patch" +) + +distutils_enable_tests pytest + +src_test() { + # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS + # correctly, so we need to reassemble all data files in a single directory + local -x XDG_DATA_HOME=${T}/share + cp -r translate/share "${T}/" || die + cp -r "${ESYSROOT}/usr/share"/gaupol "${XDG_DATA_HOME}"/ || die + + distutils-r1_src_test +} + +python_test() { + local EPYTEST_DESELECT=( + # Fails with network-sandbox (and even with it off but w/ softer fail) + 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff' + 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff' + # all tests based on snapshottest are broken and I'm too tired + # to figure this out + translate/tools/test_pocount.py::test_cases + translate/tools/test_pocount.py::test_output + translate/tools/test_junitmsgfmt.py::test_output + ) + local EPYTEST_IGNORE=( + # unpackaged fluent.* + translate/storage/test_fluent.py + # changes directory and does not change it back, sigh + tests/odf_xliff/test_odf_xliff.py + ) + + if ! use ini; then + EPYTEST_IGNORE+=( + translate/convert/test_ini2po.py + translate/convert/test_po2ini.py + ) + fi + + if ! use subtitles; then + EPYTEST_IGNORE+=( + translate/storage/test_subtitles.py + ) + fi + + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + epytest +} + +python_install_all() { + distutils-r1_python_install_all + + insinto /usr + doins -r translate/share + + if ! use html; then + rm "${ED}"/usr/bin/{html2po,po2html} || die + fi + if ! use ical; then + rm "${ED}"/usr/bin/{ical2po,po2ical} || die + fi + if ! use ini; then + rm "${ED}"/usr/bin/{ini2po,po2ini} || die + fi + if ! use subtitles; then + rm "${ED}"/usr/bin/{sub2po,po2sub} || die + fi +} diff --git a/dev-python/translate-toolkit/translate-toolkit-3.10.1.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.10.1.ebuild deleted file mode 100644 index 77dcd8f1db85..000000000000 --- a/dev-python/translate-toolkit/translate-toolkit-3.10.1.ebuild +++ /dev/null @@ -1,120 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_USE_PEP517=setuptools -# py3.12: https://github.com/translate/translate/issues/5071 -PYTHON_COMPAT=( python3_{10..11} ) -PYTHON_REQ_USE="sqlite" - -inherit distutils-r1 - -MY_P=translate-${PV} -DESCRIPTION="Toolkit to convert between many translation formats" -HOMEPAGE=" - https://github.com/translate/translate/ - https://pypi.org/project/translate-toolkit/ -" -SRC_URI=" - https://github.com/translate/translate/archive/${PV}.tar.gz - -> ${MY_P}.gh.tar.gz -" -S="${WORKDIR}"/${MY_P} - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="amd64 arm64 x86" -IUSE="+html +ical +ini +subtitles +yaml" - -RDEPEND=" - app-text/iso-codes - >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}] - dev-python/cheroot[${PYTHON_USEDEP}] - >=dev-python/Levenshtein-0.12.0[${PYTHON_USEDEP}] - >=dev-python/lxml-4.3.1[${PYTHON_USEDEP}] - >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}] - >=dev-python/pyparsing-3[${PYTHON_USEDEP}] - dev-python/ruamel-yaml[${PYTHON_USEDEP}] - sys-devel/gettext - html? ( dev-python/utidylib[${PYTHON_USEDEP}] ) - ical? ( dev-python/vobject[${PYTHON_USEDEP}] ) - ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] ) - subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] ) - yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] ) -" -# Technically, the test suite also has undeclared dependency -# on dev-python/snapshottest but all the tests using it are broken -# anyway, so we skip them. -BDEPEND=" - test? ( - dev-python/phply[${PYTHON_USEDEP}] - ) -" - -distutils_enable_tests pytest - -src_test() { - # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS - # correctly, so we need to reassemble all data files in a single directory - local -x XDG_DATA_HOME=${T}/share - cp -r translate/share "${T}/" || die - cp -r "${ESYSROOT}/usr/share"/gaupol "${XDG_DATA_HOME}"/ || die - - distutils-r1_src_test -} - -python_test() { - local EPYTEST_DESELECT=( - # Fails with network-sandbox (and even with it off but w/ softer fail) - 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff' - 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff' - # all tests based on snapshottest are broken and I'm too tired - # to figure this out - translate/tools/test_pocount.py::test_cases - translate/tools/test_pocount.py::test_output - translate/tools/test_junitmsgfmt.py::test_output - ) - local EPYTEST_IGNORE=( - # unpackaged fluent.* - translate/storage/test_fluent.py - # changes directory and does not change it back, sigh - tests/odf_xliff/test_odf_xliff.py - ) - - if ! use ini; then - EPYTEST_IGNORE+=( - translate/convert/test_ini2po.py - translate/convert/test_po2ini.py - ) - fi - - if ! use subtitles; then - EPYTEST_IGNORE+=( - translate/storage/test_subtitles.py - ) - fi - - local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 - epytest -} - -python_install_all() { - distutils-r1_python_install_all - - insinto /usr - doins -r translate/share - - if ! use html; then - rm "${ED}"/usr/bin/{html2po,po2html} || die - fi - if ! use ical; then - rm "${ED}"/usr/bin/{ical2po,po2ical} || die - fi - if ! use ini; then - rm "${ED}"/usr/bin/{ini2po,po2ini} || die - fi - if ! use subtitles; then - rm "${ED}"/usr/bin/{sub2po,po2sub} || die - fi -} -- cgit v1.2.3-65-gdbad