diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-06-27 13:35:02 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-06-27 13:35:02 +0100 |
commit | ef593d1ec529be89d755077eee3869006d8c18ae (patch) | |
tree | e17a9fcd71c371059f0168cbdfe109c563536c27 /dev-python/future | |
parent | 61faa1ea0e8302df305bc281038fc00dc7eb1dd4 (diff) |
gentoo auto-resync : 27:06:2023 - 13:35:02
Diffstat (limited to 'dev-python/future')
-rw-r--r-- | dev-python/future/Manifest | 6 | ||||
-rw-r--r-- | dev-python/future/files/future-0.18.2-cve-2022-40899.patch | 52 | ||||
-rw-r--r-- | dev-python/future/files/future-0.18.2-tests.patch | 269 | ||||
-rw-r--r-- | dev-python/future/future-0.18.2-r3.ebuild | 46 | ||||
-rw-r--r-- | dev-python/future/future-0.18.3.ebuild | 2 |
5 files changed, 2 insertions, 373 deletions
diff --git a/dev-python/future/Manifest b/dev-python/future/Manifest index fd28ba29ab1a..cfe83b8918b8 100644 --- a/dev-python/future/Manifest +++ b/dev-python/future/Manifest @@ -1,11 +1,7 @@ -AUX future-0.18.2-cve-2022-40899.patch 2057 BLAKE2B 3ceaac51709be84a594474a35b8cb688c7e4382c7e625f328aa891c7f788efffba093daeff6551567425e7b9b2d1a4a5ed70df99dd5a6d0666bbc9915f72972f SHA512 7bd6743680ed69326eefd61ae517ebacebe2b175879367a66a1fa9729f75f77e2c632c3c50f64be197e71d09446a4ad01b733b15dc3508466ebd0cf06d7b6734 AUX future-0.18.2-py3.10.patch 850 BLAKE2B 79c51778686c03a0b2fa6ed084b38039d9e5c14312cbf534da51a9da66e8fb50f0b619912414439f9975db43d5686e80150e82642d64963d16384fce339a09d4 SHA512 438e7092c4e9ece575e1d4cb341e52e45d6506fed348511266b7a583731516ad5e5eac43bc8b81ff7a24e29a8495612f5bbcb0984f6e428dee2b7dcfbf241ae2 AUX future-0.18.2-py39-fileurl.patch 1005 BLAKE2B 9446c90649e5c06c1d603041c07e81ca96ea982fcf6ac9d7aaf48141015574ca2f81bd4da02c994e41ce96ef2e37290ae45f4ec70e332632e7086d08ce2feca0 SHA512 7d469a212b36828d20f65964aa52db30ab2c82f92b4411d39de054ba6ea7b7860413609b426f3f30dcc715be517e25e99f2b8afc05cc629c9a8e149fee2421b4 AUX future-0.18.2-py39.patch 2789 BLAKE2B db6c0cb0a030d166f01b95721e560d346f8a80ec63f81c58e5fca663f975b8f8f771d169742a421c34c08b0de01069bb5455b5fafdab440af6e73746df0bb24c SHA512 7bb140d526d2e728d5a988898977e8bf87934f68c42a38f97717b3e5fc040ddc736cdb2b366a8dbbb95c857bffee9f448ff1883dff9c61cb46582d3a01aad65f -AUX future-0.18.2-tests.patch 11773 BLAKE2B e2b9321ab2a04e4567c312beaccd23886c87f8b78c1de5d480205181a68b77d8c8b1582a57f43e510d5cd3ecc54252bb85130fe6d7e82756c9f1db11263fdf7b SHA512 d884d6b4e320a6e2aeca2c0c46576d9b0fd0d31aaa6f8f9a79f2007ecbc949f1393aa0b9254f0c51616ca4e8d3fb3f11d828879e4e8c01549acd4ecf04e2cf68 -DIST future-0.18.2.tar.gz 829220 BLAKE2B 68574b589bf54aa8dacbd162a54885589faa32829ccf212f50de5bf036ebd8b9aba0c13e63e80d34e507cc0dae4d8d3d47fea33433b17d2c2e6dbf6c37f66d8f SHA512 91c025f7d94bcdf93df838fab67053165a414fc84e8496f92ecbb910dd55f6b6af5e360bbd051444066880c5a6877e75157bd95e150ead46e5c605930dfc50f2 DIST future-0.18.3-tests.patch.xz 2736 BLAKE2B 55f9f233fb65f006d2055adf8b5d5b3ab00b4cd9b9f5a78d09b3fa2c1e347ef2d8370569fa5374968bf3e84b4fcbc220ad8da1cc2b32da57c46d36050ba1440a SHA512 c18434bc6efe88381aed8c86ed494352a2749c5680a52f62ae043bec70e3adb0163f91a971daa04134508d59172fe2e71ebbf694a74afce060b7fa1e7c385810 DIST future-0.18.3.tar.gz 840896 BLAKE2B 13172c639b0eee80581133a2d46b9fa3a38fb9c47ea6eecc8f0715782536be5965bbd153d6a6dda49d8fa9cfea29231c6cc60a4b3b3a6c0cc5406f02c494a425 SHA512 6de56a5aa5c5dd56a0dc5a6732c753530f9868036bd97e9d355f9ee6e1305e266a60c167de779cba93f09b5b3fae615193074caba2afe857ca7ea944532ef910 -EBUILD future-0.18.2-r3.ebuild 1227 BLAKE2B 245f0952236720af7d8bcdc17f4975ec74236337e617e2e54b7bb554a708dd7b8e15f8615a5a8ac6e573bd83442bd33d1df72333da9b9523dd9d4b6df0f21385 SHA512 6f5a3adf25bda88915425bbf047dea5a6fd3751e2328d7ff49ac941d5cb79a6e565a8fa95b1e4980620a453134bf21f4e78cc1036e234815e330eed512fd3cf2 -EBUILD future-0.18.3.ebuild 1320 BLAKE2B 8b34eed060277e1c3f299de92a499d36b97de4fd7c928bb989d15fc0d2d0113837cdbd21c2f6c78db8f9916e0964510f55dfa2abd9cfd8103dc86c0510e5c2e7 SHA512 371605240f6cc4fa2d974d0f45a7a848b3e5cd7ce8e0adc763d47859089386f6620ee805494e61ac690708da06eb1a481906efc9799f9ade1b6b6755873dc259 +EBUILD future-0.18.3.ebuild 1313 BLAKE2B c648f919af12535a34da49e1b402e3ad52a2c0c3f79843042c86e294d63edeed024aedf0743b0d1ca859808ce75ad638b34141f0caa28167df21763b4b81e31f SHA512 b3500710942d8b6ad18f687cb2f7d294a85c9f1c7307342c291e5019365f637eb29545ec8cd5285ef1562dc48a61bd7fd5af569b8df9bb4190eb6577e9a79459 MISC metadata.xml 402 BLAKE2B 84957a57a39c658794b57e41e2e683d826a6e5b7e1006f0430034a29b82d12f2983b021c63e9d519fe6ea21a90f30822b5561001c7e9283ea770fedb1d40ad9c SHA512 e1a2dfb08304d2cd0751dbde1e1410be0805493bf7624db17b3631dc10051fb443758a0c750ced2846a2769a3d33da752002ad7e92f95d88b4060f7a8be995bd diff --git a/dev-python/future/files/future-0.18.2-cve-2022-40899.patch b/dev-python/future/files/future-0.18.2-cve-2022-40899.patch deleted file mode 100644 index c7341e0d6fdb..000000000000 --- a/dev-python/future/files/future-0.18.2-cve-2022-40899.patch +++ /dev/null @@ -1,52 +0,0 @@ -From c91d70b34ef0402aef3e9d04364ba98509dca76f Mon Sep 17 00:00:00 2001 -From: Will Shanks <wshaos@posteo.net> -Date: Fri, 23 Dec 2022 13:38:26 -0500 -Subject: [PATCH] Backport fix for bpo-38804 - -The regex http.cookiejar.LOOSE_HTTP_DATE_RE was vulnerable to regular -expression denial of service (REDoS). The regex contained multiple -overlapping \s* capture groups. A long sequence of spaces can trigger -bad performance. - -See https://github.com/python/cpython/pull/17157 and https://pyup.io/posts/pyup-discovers-redos-vulnerabilities-in-top-python-packages/ ---- - src/future/backports/http/cookiejar.py | 18 ++++++++++++------ - 1 file changed, 12 insertions(+), 6 deletions(-) - -diff --git a/src/future/backports/http/cookiejar.py b/src/future/backports/http/cookiejar.py -index af3ef415..0ad80a02 100644 ---- a/src/future/backports/http/cookiejar.py -+++ b/src/future/backports/http/cookiejar.py -@@ -225,10 +225,14 @@ def _str2time(day, mon, yr, hr, min, sec, tz): - (?::(\d\d))? # optional seconds - )? # optional clock - \s* -- ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+)? # timezone -+ (?: -+ ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+) # timezone -+ \s* -+ )? -+ (?: -+ \(\w+\) # ASCII representation of timezone in parens. - \s* -- (?:\(\w+\))? # ASCII representation of timezone in parens. -- \s*$""", re.X | re.ASCII) -+ )?$""", re.X | re.ASCII) - def http2time(text): - """Returns time in seconds since epoch of time represented by a string. - -@@ -298,9 +302,11 @@ def http2time(text): - (?::?(\d\d(?:\.\d*)?))? # optional seconds (and fractional) - )? # optional clock - \s* -- ([-+]?\d\d?:?(:?\d\d)? -- |Z|z)? # timezone (Z is "zero meridian", i.e. GMT) -- \s*$""", re.X | re. ASCII) -+ (?: -+ ([-+]?\d\d?:?(:?\d\d)? -+ |Z|z) # timezone (Z is "zero meridian", i.e. GMT) -+ \s* -+ )?$""", re.X | re. ASCII) - def iso2time(text): - """ - As for http2time, but parses the ISO 8601 formats: diff --git a/dev-python/future/files/future-0.18.2-tests.patch b/dev-python/future/files/future-0.18.2-tests.patch deleted file mode 100644 index 3742adb72821..000000000000 --- a/dev-python/future/files/future-0.18.2-tests.patch +++ /dev/null @@ -1,269 +0,0 @@ -diff --git a/tests/test_future/test_backports.py b/tests/test_future/test_backports.py -index 9eeb741..63b1afe 100644 ---- a/tests/test_future/test_backports.py -+++ b/tests/test_future/test_backports.py -@@ -87,7 +87,8 @@ class TestChainMap(unittest.TestCase): - d['b'] = 20 - d['c'] = 30 - self.assertEqual(d.maps, [{'b':20, 'c':30}, {'a':1, 'b':2}]) # check internal state -- self.assertEqual(d.items(), dict(a=1, b=20, c=30).items()) # check items/iter/getitem -+ self.assertEqual(sorted(d.items()), -+ sorted(dict(a=1, b=20, c=30).items())) # check items/iter/getitem - self.assertEqual(len(d), 3) # check len - for key in 'abc': # check contains - self.assertIn(key, d) -@@ -96,7 +97,8 @@ class TestChainMap(unittest.TestCase): - - del d['b'] # unmask a value - self.assertEqual(d.maps, [{'c':30}, {'a':1, 'b':2}]) # check internal state -- self.assertEqual(d.items(), dict(a=1, b=2, c=30).items()) # check items/iter/getitem -+ self.assertEqual(sorted(d.items()), -+ sorted(dict(a=1, b=2, c=30).items())) # check items/iter/getitem - self.assertEqual(len(d), 3) # check len - for key in 'abc': # check contains - self.assertIn(key, d) -diff --git a/tests/test_future/test_builtins.py b/tests/test_future/test_builtins.py -index ca07b9e..944d97b 100644 ---- a/tests/test_future/test_builtins.py -+++ b/tests/test_future/test_builtins.py -@@ -8,7 +8,7 @@ from future.builtins import (bytes, dict, int, range, round, str, super, - ascii, chr, hex, input, next, oct, open, pow, - filter, map, zip, min, max) - --from future.utils import PY3, exec_, native_str, implements_iterator -+from future.utils import PYPY, PY2, PY3, exec_, native_str, implements_iterator - from future.tests.base import (unittest, skip26, expectedFailurePY2, - expectedFailurePY26) - -@@ -699,12 +699,13 @@ class BuiltinTest(unittest.TestCase): - self.assertEqual(eval('dir()', g, m), list('xyz')) - self.assertEqual(eval('globals()', g, m), g) - self.assertEqual(eval('locals()', g, m), m) -- self.assertRaises(TypeError, eval, 'a', m) -+ if not (PYPY and PY2): -+ self.assertRaises(TypeError, eval, 'a', m) - class A: - "Non-mapping" - pass - m = A() -- self.assertRaises(TypeError, eval, 'a', g, m) -+ self.assertRaises((AttributeError, TypeError), eval, 'a', g, m) - - # Verify that dict subclasses work as well - class D(dict): -@@ -784,8 +785,9 @@ class BuiltinTest(unittest.TestCase): - # self.assertRaisesRegex(NameError, "name 'print' is not defined", - # exec_, code, {'__builtins__': {}}) - # Now: -- self.assertRaises(NameError, -- exec_, code, {'__builtins__': {}}) -+ if not PYPY: -+ self.assertRaises(NameError, -+ exec_, code, {'__builtins__': {}}) - # __builtins__ must be a mapping type - # Was: - # self.assertRaises(TypeError, -@@ -797,8 +799,9 @@ class BuiltinTest(unittest.TestCase): - # Was: - # self.assertRaisesRegex(NameError, "__build_class__ not found", - # exec_, code, {'__builtins__': {}}) -- self.assertRaises(NameError, -- exec_, code, {'__builtins__': {}}) -+ if not PYPY: -+ self.assertRaises(NameError, -+ exec_, code, {'__builtins__': {}}) - - class frozendict_error(Exception): - pass -@@ -1304,8 +1307,9 @@ class BuiltinTest(unittest.TestCase): - self.assertAlmostEqual(pow(-1, 0.5), 1j) - self.assertAlmostEqual(pow(-1, 1/3), 0.5 + 0.8660254037844386j) - -- # Raises TypeError in Python < v3.5, ValueError in v3.5: -- self.assertRaises((TypeError, ValueError), pow, -1, -2, 3) -+ if sys.hexversion < 0x03080000: -+ # Raises TypeError in Python < v3.5, ValueError in v3.5: -+ self.assertRaises((TypeError, ValueError), pow, -1, -2, 3) - self.assertRaises(ValueError, pow, 1, 2, 0) - - self.assertRaises(TypeError, pow) -diff --git a/tests/test_future/test_futurize.py b/tests/test_future/test_futurize.py -index 0d7c42d..4590185 100644 ---- a/tests/test_future/test_futurize.py -+++ b/tests/test_future/test_futurize.py -@@ -13,7 +13,7 @@ from lib2to3.pygram import token - - from future.tests.base import (CodeHandler, unittest, skip26, reformat_code, - order_future_lines, expectedFailurePY26) --from future.utils import PY2 -+from future.utils import PY2, PY3, PYPY - - - class TestLibFuturize(unittest.TestCase): -@@ -565,6 +565,7 @@ class TestFuturizeSimple(CodeHandler): - # tarball.write(r2.content) - - @expectedFailurePY26 -+ @unittest.skipIf(PYPY and PY3, '') - def test_raw_input(self): - """ - Passes in a string to the waiting input() after futurize -diff --git a/tests/test_future/test_int.py b/tests/test_future/test_int.py -index 573a0d5..6172e48 100644 ---- a/tests/test_future/test_int.py -+++ b/tests/test_future/test_int.py -@@ -6,7 +6,7 @@ from __future__ import (absolute_import, division, - print_function, unicode_literals) - from future.builtins import * - from future.tests.base import unittest, expectedFailurePY2 --from future.utils import PY26, PY2, raise_from -+from future.utils import PY26, PY2, PY3, PYPY, raise_from - - import sys - import random -@@ -357,7 +357,8 @@ class IntTestCases(unittest.TestCase): - self.assertEqual(int(Foo0()), 42) - self.assertEqual(int(Foo1()), 42) - self.assertEqual(int(Foo2()), 42) -- self.assertEqual(int(Foo3()), 0) -+ if not (PYPY and PY3): -+ self.assertEqual(int(Foo3()), 0) - self.assertEqual(int(Foo4()), 42) - self.assertRaises(TypeError, int, Foo5()) - -diff --git a/tests/test_future/test_isinstance.py b/tests/test_future/test_isinstance.py -index 33c0a58..ccda709 100644 ---- a/tests/test_future/test_isinstance.py -+++ b/tests/test_future/test_isinstance.py -@@ -4,6 +4,7 @@ From the Python 3.3 test suite - - from __future__ import (absolute_import, division, unicode_literals) - from future.builtins import * -+from future.utils import PYPY - - # Tests some corner cases with isinstance() and issubclass(). While these - # tests use new style classes and properties, they actually do whitebox -@@ -264,11 +265,13 @@ class TestIsInstanceIsSubclass(unittest.TestCase): - self.assertEqual(True, issubclass(int, (int, (float, int)))) - self.assertEqual(True, issubclass(str, (str, (Child, NewChild, str)))) - -+ @unittest.skipIf(PYPY, '') - def test_subclass_recursion_limit(self): - # make sure that issubclass raises RuntimeError before the C stack is - # blown - self.assertRaises(RuntimeError, blowstack, issubclass, str, str) - -+ @unittest.skipIf(PYPY, '') - def test_isinstance_recursion_limit(self): - # make sure that issubclass raises RuntimeError before the C stack is - # blown -diff --git a/tests/test_future/test_str.py b/tests/test_future/test_str.py -index 5108548..eac602f 100644 ---- a/tests/test_future/test_str.py -+++ b/tests/test_future/test_str.py -@@ -201,6 +201,7 @@ class TestStr(unittest.TestCase): - with self.assertRaises(TypeError): - s.join(byte_strings2) - -+ @unittest.skipIf(utils.PYPY and utils.PY2, '') - def test_str_join_staticmethod(self): - """ - Issue #33 -@@ -430,10 +431,11 @@ class TestStr(unittest.TestCase): - e = s * long(4) - self.assertTrue(isinstance(e, str)) - self.assertEqual(e, u'ABCABCABCABC') -- with self.assertRaises(TypeError): -- s * 3.3 -- with self.assertRaises(TypeError): -- s * (3.3 + 3j) -+ if not (utils.PYPY and utils.PY2): -+ with self.assertRaises(TypeError): -+ s * 3.3 -+ with self.assertRaises(TypeError): -+ s * (3.3 + 3j) - - def test_rmul(self): - s = str(u'XYZ') -@@ -447,10 +449,11 @@ class TestStr(unittest.TestCase): - e = long(3) * s - self.assertTrue(isinstance(e, str)) - self.assertEqual(e, u'XYZXYZXYZ') -- with self.assertRaises(TypeError): -- 3.3 * s -- with self.assertRaises(TypeError): -- (3.3 + 3j) * s -+ if not (utils.PYPY and utils.PY2): -+ with self.assertRaises(TypeError): -+ 3.3 * s -+ with self.assertRaises(TypeError): -+ (3.3 + 3j) * s - - @unittest.skip('Fails on Python <= 2.7.6 due to string subclass slicing bug') - def test_slice(self): -diff --git a/tests/test_future/test_urllib2.py b/tests/test_future/test_urllib2.py -index 2d69dad..3750737 100644 ---- a/tests/test_future/test_urllib2.py -+++ b/tests/test_future/test_urllib2.py -@@ -691,10 +691,7 @@ class HandlerTests(unittest.TestCase): - h = NullFTPHandler(data) - h.parent = MockOpener() - -- # MIME guessing works in Python 3.8! - guessed_mime = None -- if sys.hexversion >= 0x03080000: -- guessed_mime = "image/gif" - for url, host, port, user, passwd, type_, dirs, filename, mimetype in [ - ("ftp://localhost/foo/bar/baz.html", - "localhost", ftplib.FTP_PORT, "", "", "I", -diff --git a/tests/test_past/test_builtins.py b/tests/test_past/test_builtins.py -index d16978e..f37b26c 100644 ---- a/tests/test_past/test_builtins.py -+++ b/tests/test_past/test_builtins.py -@@ -21,6 +21,7 @@ import random - from os import unlink - from operator import neg - from future.tests.base import unittest, expectedFailurePY3, skip26 -+from future.utils import PYPY, PY2 - - # count the number of test runs. - # used to skip running test_execfile() multiple times -@@ -423,6 +424,7 @@ class BuiltinTest(unittest.TestCase): - self.assertRaises(TypeError, eval, ()) - - @expectedFailurePY3 -+ @unittest.skipIf(PYPY and PY2, '') - def test_general_eval(self): - # Tests that general mappings can be used for the locals argument - -@@ -1174,7 +1176,8 @@ class BuiltinTest(unittest.TestCase): - def __cmp__(self, other): - raise RuntimeError - __hash__ = None # Invalid cmp makes this unhashable -- self.assertRaises(RuntimeError, range, a, a + 1, badzero(1)) -+ if not (PYPY and PY2): -+ self.assertRaises(RuntimeError, range, a, a + 1, badzero(1)) - - # Reject floats. - self.assertRaises(TypeError, range, 1., 1., 1.) -diff --git a/tests/test_past/test_olddict.py b/tests/test_past/test_olddict.py -index 9f21060..539c277 100644 ---- a/tests/test_past/test_olddict.py -+++ b/tests/test_past/test_olddict.py -@@ -7,7 +7,7 @@ from __future__ import absolute_import, unicode_literals, print_function - import os - import sys - --from future.utils import implements_iterator, PY3 -+from future.utils import implements_iterator, PYPY, PY2, PY3 - from future.tests.base import unittest, skip26 - from past.builtins import dict - -@@ -415,6 +415,7 @@ class Py2DictTest(unittest.TestCase): - self.assertRaises(Exc, d.setdefault, x, []) - - @skip26 -+ @unittest.skipIf(PYPY, '') - def test_setdefault_atomic(self): - # Issue #13521: setdefault() calls __hash__ and __eq__ only once. - class Hashed(object): diff --git a/dev-python/future/future-0.18.2-r3.ebuild b/dev-python/future/future-0.18.2-r3.ebuild deleted file mode 100644 index 65a5f973d309..000000000000 --- a/dev-python/future/future-0.18.2-r3.ebuild +++ /dev/null @@ -1,46 +0,0 @@ -# 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_{9..11} pypy3 ) - -inherit distutils-r1 pypi - -DESCRIPTION="Easy, clean, reliable Python 2/3 compatibility" -HOMEPAGE=" - https://python-future.org/ - https://github.com/PythonCharmers/python-future/ - https://pypi.org/project/future/ -" - -LICENSE="MIT" -SLOT="0" -KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux" - -BDEPEND=" - test? ( - $(python_gen_cond_dep ' - dev-python/numpy[${PYTHON_USEDEP}] - ' 'python*') - ) -" - -distutils_enable_tests pytest -distutils_enable_sphinx docs dev-python/sphinx-bootstrap-theme - -PATCHES=( - "${FILESDIR}"/${P}-tests.patch - "${FILESDIR}"/${P}-py39.patch - "${FILESDIR}"/${P}-py39-fileurl.patch - "${FILESDIR}"/${P}-py3.10.patch - "${FILESDIR}"/${P}-cve-2022-40899.patch -) - -EPYTEST_DESELECT=( - # tests requiring network access - tests/test_future/test_requests.py - tests/test_future/test_standard_library.py::TestStandardLibraryReorganization::test_moves_urllib_request_http - tests/test_future/test_standard_library.py::TestStandardLibraryReorganization::test_urllib_request_http -) diff --git a/dev-python/future/future-0.18.3.ebuild b/dev-python/future/future-0.18.3.ebuild index f6793f03233f..37ee871979b9 100644 --- a/dev-python/future/future-0.18.3.ebuild +++ b/dev-python/future/future-0.18.3.ebuild @@ -18,7 +18,7 @@ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-0.18.3- LICENSE="MIT" SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux" BDEPEND=" test? ( |