diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-08-28 12:00:19 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-08-28 12:00:19 +0100 |
commit | 7166f3a0a0b7886d340010458d0b130013cb9989 (patch) | |
tree | 3ff502007dde9dba943a004a3bf201ae4e0787bd /dev-python/lxml | |
parent | 345c02ca33341652116ddec6705530223af2de85 (diff) |
gentoo auto-resync : 28:08:2024 - 12:00:19
Diffstat (limited to 'dev-python/lxml')
-rw-r--r-- | dev-python/lxml/Manifest | 3 | ||||
-rw-r--r-- | dev-python/lxml/files/lxml-5.3.0-pypy.patch | 177 | ||||
-rw-r--r-- | dev-python/lxml/lxml-5.3.0.ebuild | 119 |
3 files changed, 299 insertions, 0 deletions
diff --git a/dev-python/lxml/Manifest b/dev-python/lxml/Manifest index 2a529e8b9aa5..a60d530cd51a 100644 --- a/dev-python/lxml/Manifest +++ b/dev-python/lxml/Manifest @@ -1,4 +1,7 @@ AUX lxml-5.1.1-pypy.patch 6414 BLAKE2B 367cb47fe9466a1f0035fc26884cc55109b2dd69291993f7f2711a943023e5d2b3436f26c879126b4df1b50f0829845fb312eaae6f3bc40cb083a62c6504dc54 SHA512 b95790c42023a296f2eee06b93b381d74e2b7742eb833c22a8a98888cbbadd84032295bdc880c7df98e7ca7aeb8b66c6114e902cdeba0910a91dd8a46269e470 +AUX lxml-5.3.0-pypy.patch 6909 BLAKE2B 47c57123a140681037900141c54cc47ea95e0a45eed32385db9bc35b91850e5424511a53c8afa9fd40413b5f59d81e6af2320345e03b1d403a533d2ec2a94ff4 SHA512 2b4310e4d0a151f49f54623eff603aae00777bfca3fc0b98adec39c30e2114402f1626780317ef11c31161027574f555e094a2e57798e1410f16a538bc7cfaa1 DIST lxml-5.2.2.gh.tar.gz 950650 BLAKE2B d9e3bd96f386a808eca58ffa9a6b5a79e43102b7161fac9b97905de2bd22d21feaddb093e27463f597ef5378d754011c2999a38953e6288595b8dd171976688b SHA512 20b87a2d6e7ac82b6979d6fd18ecd5c224fec6eeee6b69d47a5bf2947ce53e6a517d1b86ab68836a5974f78ce86551ddc2317c1a7255932b418b98dc64d59376 +DIST lxml-5.3.0.gh.tar.gz 951199 BLAKE2B 8317179c524856593b323f665c288ddddd8af7e716e1ddf1222a857c8466cfc62a6c20b21744ca418f809a3c8492216c5c9c38cfa62f2e7d51daea7343b6810b SHA512 514477bf4c865541233d73f20de816b51d265dbd75c56a0d13779e14527c73e85ca890718d06c08728da228d410459016e9cb8abdad4d03b44a81a04a198fb54 EBUILD lxml-5.2.2.ebuild 2981 BLAKE2B cb9d6df4ddc6afb9e3183fb467747be9ee41acf5f38b74064716d99f16ffcc63c57b3d6dd5f7ec631595308c5b6c33119d3ae4692e558fc4af7ae9793d39ddff SHA512 ed0c89b7951e0c4a12b8faef2b6da5778ef84de45b3aeea65790ebc24f34b7a52819883c45b2571ca92b89b521a79bac584ed09f7031414d40dc2e2a2621a18a +EBUILD lxml-5.3.0.ebuild 3066 BLAKE2B 2f6ae340279ed6777edd5532576eac92544a9698e48027e5075b308dc8afba3aca66760135a793fdf406539b22892816b2ec0a0e46722f9d37acd972f4a25929 SHA512 bebec03ff32fbe94a5f9c69bf2985686b42035082b9504467205f109185b7c96e50264394abc1d67920f88450b211d92e53cc66a6788a7b7343ad6a3bf8e937e MISC metadata.xml 463 BLAKE2B 9bcd092b61568f5d467230617b101f36245c41078e6a66c7ff63b22a6b4095de2ba3a59e48ce8b7842ce58d1255fa293995652daa3fab4c3af988498eaa30e97 SHA512 2ba5e340b59e0de4e472380e9c19b1f6f573e86e5c3c2e075f6151d369e94eea70e3ce36bfb5ece4da3fa69459e3ff83368f1df8302aa5754ae52f13c8f2312e diff --git a/dev-python/lxml/files/lxml-5.3.0-pypy.patch b/dev-python/lxml/files/lxml-5.3.0-pypy.patch new file mode 100644 index 000000000000..c83c73c81934 --- /dev/null +++ b/dev-python/lxml/files/lxml-5.3.0-pypy.patch @@ -0,0 +1,177 @@ +From b6ba59657c8c7e169e8eeb763d85ca6136df3eea Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org> +Date: Fri, 29 Mar 2024 16:22:00 +0100 +Subject: [PATCH] skip tests that are broken on pypy + +--- + src/lxml/tests/test_http_io.py | 3 ++- + src/lxml/tests/test_nsclasses.py | 3 ++- + src/lxml/tests/test_objectify.py | 37 ++++++++++++++++++++++++++++++-- + 3 files changed, 39 insertions(+), 4 deletions(-) + +diff --git a/src/lxml/tests/test_http_io.py b/src/lxml/tests/test_http_io.py +index 8385e393..0b259299 100644 +--- a/src/lxml/tests/test_http_io.py ++++ b/src/lxml/tests/test_http_io.py +@@ -10,3 +10,3 @@ import gzip + +-from .common_imports import etree, HelperTestCase, BytesIO, _bytes ++from .common_imports import etree, HelperTestCase, BytesIO, _bytes, IS_PYPY + from .dummy_http_server import webserver, HTTPRequestCollector +@@ -14,2 +14,3 @@ from .dummy_http_server import webserver, HTTPRequestCollector + ++@unittest.skipIf(IS_PYPY, "broken on pypy") + class HttpIOTestCase(HelperTestCase): +diff --git a/src/lxml/tests/test_nsclasses.py b/src/lxml/tests/test_nsclasses.py +index 0c33f20c..08540001 100644 +--- a/src/lxml/tests/test_nsclasses.py ++++ b/src/lxml/tests/test_nsclasses.py +@@ -8,3 +8,3 @@ import unittest + +-from .common_imports import etree, HelperTestCase, _bytes, make_doctest ++from .common_imports import etree, HelperTestCase, _bytes, make_doctest, IS_PYPY + +@@ -45,2 +45,3 @@ class ETreeNamespaceClassesTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_ns_classes(self): +diff --git a/src/lxml/tests/test_objectify.py b/src/lxml/tests/test_objectify.py +index 39fe0098..92c857f8 100644 +--- a/src/lxml/tests/test_objectify.py ++++ b/src/lxml/tests/test_objectify.py +@@ -10,3 +10,4 @@ import unittest + from .common_imports import ( +- etree, HelperTestCase, fileInTestDir, doctest, make_doctest, _bytes, _str, BytesIO ++ etree, HelperTestCase, fileInTestDir, doctest, make_doctest, _bytes, _str, BytesIO, ++ IS_PYPY + ) +@@ -383,2 +384,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_setattr(self): +@@ -818,2 +820,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_build_tree(self): +@@ -847,2 +850,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_bool(self): +@@ -884,2 +888,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_str(self): +@@ -891,2 +896,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_str_intliteral(self): +@@ -898,2 +904,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_str_floatliteral(self): +@@ -905,2 +912,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_str_mul(self): +@@ -917,2 +925,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_str_add(self): +@@ -992,2 +1001,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_ustr(self): +@@ -999,2 +1009,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_ustr_intliteral(self): +@@ -1006,2 +1017,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_ustr_floatliteral(self): +@@ -1013,2 +1025,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_ustr_mul(self): +@@ -1025,2 +1038,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_ustr_add(self): +@@ -1050,2 +1064,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_int(self): +@@ -1066,2 +1081,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_float(self): +@@ -1082,2 +1098,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_float_precision(self): +@@ -1101,2 +1118,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_float_precision_consistency(self): +@@ -1187,2 +1205,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_unregistered(self): +@@ -1349,2 +1368,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_str_cmp(self): +@@ -1376,2 +1396,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_int_cmp(self): +@@ -1398,2 +1419,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_type_bool_cmp(self): +@@ -2067,2 +2089,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_registered_type_stringify(self): +@@ -2537,2 +2560,3 @@ class ObjectifyTestCase(HelperTestCase): + # type-looked-up as ObjectifiedElement (no annotations) ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_efactory_int(self): +@@ -2542,2 +2566,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_efactory_float(self): +@@ -2547,2 +2572,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_efactory_str(self): +@@ -2552,2 +2578,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_efactory_unicode(self): +@@ -2557,2 +2584,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_efactory_bool(self): +@@ -2562,2 +2590,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_efactory_none(self): +@@ -2567,2 +2596,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_efactory_value_concatenation(self): +@@ -2577,2 +2607,3 @@ class ObjectifyTestCase(HelperTestCase): + ++ @unittest.skipIf(IS_PYPY, "broken on pypy") + def test_efactory_nested(self): +@@ -2745,3 +2776,5 @@ def test_suite(): + suite.addTests(doctest.DocTestSuite(objectify)) +- suite.addTests([make_doctest('objectify.txt')]) ++ if not IS_PYPY: ++ suite.addTests([make_doctest('objectify.txt')]) ++ suite.addTests([make_doctest('../../../doc/objectify.txt')]) + return suite +-- +2.46.0 + diff --git a/dev-python/lxml/lxml-5.3.0.ebuild b/dev-python/lxml/lxml-5.3.0.ebuild new file mode 100644 index 000000000000..324b1faf7bfd --- /dev/null +++ b/dev-python/lxml/lxml-5.3.0.ebuild @@ -0,0 +1,119 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..13} pypy3 ) + +inherit distutils-r1 optfeature toolchain-funcs + +DESCRIPTION="A Pythonic binding for the libxml2 and libxslt libraries" +HOMEPAGE=" + https://lxml.de/ + https://pypi.org/project/lxml/ + https://github.com/lxml/lxml/ +" +SRC_URI=" + https://github.com/lxml/lxml/archive/${P}.tar.gz + -> ${P}.gh.tar.gz +" +S=${WORKDIR}/lxml-${P} + +LICENSE="BSD ElementTree GPL-2 PSF-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="doc examples +threads test" +RESTRICT="!test? ( test )" + +# Note: lib{xml2,xslt} are used as C libraries, not Python modules. +DEPEND=" + >=dev-libs/libxml2-2.10.3 + >=dev-libs/libxslt-1.1.38 +" +RDEPEND=" + ${DEPEND} +" +BDEPEND=" + virtual/pkgconfig + >=dev-python/cython-3.0.10[${PYTHON_USEDEP}] + doc? ( + $(python_gen_any_dep ' + dev-python/docutils[${PYTHON_USEDEP}] + dev-python/pygments[${PYTHON_USEDEP}] + dev-python/sphinx[${PYTHON_USEDEP}] + dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}] + ') + ) + test? ( + dev-python/cssselect[${PYTHON_USEDEP}] + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-5.3.0-pypy.patch" +) + +python_check_deps() { + use doc || return 0 + python_has_version -b "dev-python/docutils[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/pygments[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]" +} + +python_prepare_all() { + # don't use some random SDK on Darwin + sed -i -e '/_ldflags =/s/=.*isysroot.*darwin.*None/= None/' \ + setupinfo.py || die + + distutils-r1_python_prepare_all +} + +python_compile() { + local DISTUTILS_ARGS=( + # by default it adds -w to CFLAGS + --warnings + ) + tc-export PKG_CONFIG + distutils-r1_python_compile +} + +python_compile_all() { + use doc && emake html +} + +python_test() { + local dir=${BUILD_DIR}/test$(python_get_sitedir)/lxml + local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH} + + cp -al "${BUILD_DIR}"/{install,test} || die + cp -al src/lxml/tests "${dir}/" || die + cp -al src/lxml/html/tests "${dir}/html/" || die + mkdir "${dir}"/../../doc || die + # this one needs to be copied, because upstream uses doc/../../../doc + cp -r "${S}"/doc "${dir}"/../../ || die + ln -s "${S}"/doc "${dir}"/../../../../ || die + + "${EPYTHON}" test.py --no-src -vv --all-levels -p || + die "Tests fail on ${EPYTHON}" +} + +python_install_all() { + if use doc; then + local DOCS=( README.rst *.txt doc/*.txt ) + local HTML_DOCS=( doc/html/. ) + fi + if use examples; then + dodoc -r samples + fi + + distutils-r1_python_install_all +} + +pkg_postinst() { + optfeature "Support for BeautifulSoup as a parser backend" dev-python/beautifulsoup4 + optfeature "Translates CSS selectors to XPath 1.0 expressions" dev-python/cssselect + optfeature "Support for lxml.html.clean sanitizer" dev-python/lxml-html-clean +} |