summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-mail')
-rw-r--r--net-mail/mailman/Manifest1
-rw-r--r--net-mail/mailman/files/mailman-3.3.4-fix-click-8.patch75
-rw-r--r--net-mail/mailman/files/mailman-3.3.4-py3.9-importlib.patch73
-rw-r--r--net-mail/mailman/mailman-3.3.4.ebuild60
4 files changed, 209 insertions, 0 deletions
diff --git a/net-mail/mailman/Manifest b/net-mail/mailman/Manifest
index f87f5acd1552..0772b97b920e 100644
--- a/net-mail/mailman/Manifest
+++ b/net-mail/mailman/Manifest
@@ -1 +1,2 @@
DIST mailman-3.3.2.tar.gz 1396750 BLAKE2B f7db82d8cb217d80313ee7a6c28f7b62876a6d176a108b3fafdc744e0a9fcec3d11a0665069a5c27a42d49c22257bfe2ca8f18233d30fc9acb964027fea3bf12 SHA512 af8b300a9fea9e40a9a42f97531cf0fcd36f9b30a88a5b062994ec6480d91a698dbc37f4910045aacf3bedebf7c9ccacdf8d11bb0ee560d11e1eeef266f19b29
+DIST mailman-3.3.4.tar.gz 1578084 BLAKE2B d0c8ba6dd0df481915397b55521c9a524b44bbdb7c4efe789c6fe92c1383950b6107a76db43337b7a310a7d97eb3931a4289566271ac5b6360645ec8d316230a SHA512 52d7e8355744730f608605b05bc9c977c3e4daf22a78267b1ea6cd3922b2826d3f70dd61a591f13633fc7cbcc536b6d56a2076c00752a6590964cbd4e1aec3cc
diff --git a/net-mail/mailman/files/mailman-3.3.4-fix-click-8.patch b/net-mail/mailman/files/mailman-3.3.4-fix-click-8.patch
new file mode 100644
index 000000000000..c5f5d774fdaa
--- /dev/null
+++ b/net-mail/mailman/files/mailman-3.3.4-fix-click-8.patch
@@ -0,0 +1,75 @@
+From 5d27492403f80c4b4ea1820b3d6f821bd8401ca8 Mon Sep 17 00:00:00 2001
+From: Mark Sapiro <mark@msapiro.net>
+Date: Tue, 11 May 2021 18:14:59 -0700
+Subject: [PATCH] Require click >=8.0.0 and fix the tests it breaks.
+
+--- a/src/mailman/commands/docs/import.rst
++++ b/src/mailman/commands/docs/import.rst
+@@ -58,5 +58,6 @@ import, the mailing list's "real name" will change.
+ Import
+
+ >>> command('mailman import21 import@example.com ' + pickle_file)
++ Importing ...
+ >>> print(mlist.display_name)
+ Test
+--- a/src/mailman/commands/tests/test_cli_addmembers.py
++++ b/src/mailman/commands/tests/test_cli_addmembers.py
+@@ -57,8 +57,8 @@ class TestCLIAddMembers(unittest.TestCase):
+ result.output,
+ 'Usage: addmembers [OPTIONS] FILENAME LISTSPEC\n'
+ 'Try \'addmembers --help\' for help.\n\n'
+- 'Error: Invalid value for \'FILENAME\': Could not open '
+- 'file: bad: No such file or directory\n')
++ 'Error: Invalid value for \'FILENAME\': '
++ '\'bad\': No such file or directory\n')
+
+ def test_already_subscribed_with_display_name(self):
+ subscribe(self._mlist, 'Anne')
+@@ -265,8 +265,8 @@ class TestCLIAddMembers(unittest.TestCase):
+ 'Usage: addmembers [OPTIONS] FILENAME LISTSPEC\n'
+ 'Try \'addmembers --help\' for help.\n\n'
+ 'Error: Invalid value for \'--delivery\' / \'-d\': '
+- 'invalid choice: bogus. (choose from regular, mime, '
+- 'plain, summary, disabled)\n')
++ '\'bogus\' is not one of \'regular\', \'mime\', '
++ '\'plain\', \'summary\', \'disabled\'.\n')
+
+ def test_invite_member(self):
+ with NamedTemporaryFile('w', buffering=1, encoding='utf-8') as infp:
+--- a/src/mailman/commands/tests/test_cli_delmembers.py
++++ b/src/mailman/commands/tests/test_cli_delmembers.py
+@@ -56,8 +56,8 @@ class TestCLIDelMembers(unittest.TestCase):
+ result.output,
+ 'Usage: delmembers [OPTIONS]\n'
+ 'Try \'delmembers --help\' for help.\n\n'
+- 'Error: Invalid value for \'--file\' / \'-f\': Could not open '
+- 'file: bad: No such file or directory\n')
++ 'Error: Invalid value for \'--file\' / \'-f\': '
++ '\'bad\': No such file or directory\n')
+
+ def test_not_subscribed_without_display_name(self):
+ with NamedTemporaryFile('w', buffering=1, encoding='utf-8') as infp:
+--- a/src/mailman/commands/tests/test_cli_syncmembers.py
++++ b/src/mailman/commands/tests/test_cli_syncmembers.py
+@@ -58,8 +58,8 @@ class TestCLISyncMembers(unittest.TestCase):
+ result.output,
+ 'Usage: syncmembers [OPTIONS] FILENAME LISTSPEC\n'
+ 'Try \'syncmembers --help\' for help.\n\n'
+- 'Error: Invalid value for \'FILENAME\': Could not open '
+- 'file: bad: No such file or directory\n')
++ 'Error: Invalid value for \'FILENAME\': '
++ '\'bad\': No such file or directory\n')
+
+ def test_sync_invalid_email(self):
+ with NamedTemporaryFile('w', buffering=1, encoding='utf-8') as infp:
+@@ -374,8 +374,8 @@ class TestCLISyncMembers(unittest.TestCase):
+ 'Usage: syncmembers [OPTIONS] FILENAME LISTSPEC\n'
+ 'Try \'syncmembers --help\' for help.\n\n'
+ 'Error: Invalid value for \'--delivery\' / \'-d\': '
+- 'invalid choice: bogus. (choose from regular, mime, '
+- 'plain, summary, disabled)\n')
++ '\'bogus\' is not one of \'regular\', \'mime\', '
++ '\'plain\', \'summary\', \'disabled\'.\n')
+
+ def test_override_no_welcome(self):
+ self._mlist.send_welcome_message = False
diff --git a/net-mail/mailman/files/mailman-3.3.4-py3.9-importlib.patch b/net-mail/mailman/files/mailman-3.3.4-py3.9-importlib.patch
new file mode 100644
index 000000000000..f8771678b3e9
--- /dev/null
+++ b/net-mail/mailman/files/mailman-3.3.4-py3.9-importlib.patch
@@ -0,0 +1,73 @@
+From 0eced2d273535577645493340c7319ebf27a559c Mon Sep 17 00:00:00 2001
+From: Neal Gompa <ngompa13@gmail.com>
+Date: Fri, 16 Oct 2020 03:47:38 -0400
+Subject: [PATCH] Use importlib.resources for Python 3.9+ and
+ importlib_resources otherwise
+
+This makes it possible to use Mailman 3 in environments where importlib_resources
+is not available.
+
+Signed-off-by: Neal Gompa <ngompa13@gmail.com>
+---
+ setup.py | 2 +-
+ src/mailman/__init__.py | 5 +++++
+ src/mailman/testing/__init__.py | 23 +++++++++++++++++++++++
+ 3 files changed, 29 insertions(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index cd3645611..6d871fbfd 100644
+--- a/setup.py
++++ b/setup.py
+@@ -121,7 +121,7 @@ case second 'm'. Any other spelling is incorrect.""",
+ 'flufl.bounce',
+ 'flufl.i18n>=2.0',
+ 'flufl.lock>=3.1',
+- 'importlib_resources>=1.1.0',
++ 'importlib_resources>=1.1.0 ; python_version<"3.9"',
+ 'gunicorn',
+ 'lazr.config',
+ 'python-dateutil>=2.0',
+diff --git a/src/mailman/__init__.py b/src/mailman/__init__.py
+index 2d94288e0..1c760008d 100644
+--- a/src/mailman/__init__.py
++++ b/src/mailman/__init__.py
+@@ -37,3 +37,8 @@ if 'build_sphinx' not in sys.argv: # pragma: nocover
+ else:
+ from mailman.core.i18n import initialize
+ initialize()
++
++# Switch over to the internal importlib.resources module on Python 3.9+
++if sys.version_info >= (3, 9, 0):
++ import importlib.resources
++ sys.modules['importlib_resources'] = importlib.resources
+diff --git a/src/mailman/testing/__init__.py b/src/mailman/testing/__init__.py
+index e69de29bb..2b2ed536a 100644
+--- a/src/mailman/testing/__init__.py
++++ b/src/mailman/testing/__init__.py
+@@ -0,0 +1,23 @@
++# Copyright (C) 2009-2020 by the Free Software Foundation, Inc.
++#
++# This file is part of GNU Mailman.
++#
++# GNU Mailman is free software: you can redistribute it and/or modify it under
++# the terms of the GNU General Public License as published by the Free
++# Software Foundation, either version 3 of the License, or (at your option)
++# any later version.
++#
++# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
++# more details.
++#
++# You should have received a copy of the GNU General Public License along with
++# GNU Mailman. If not, see <https://www.gnu.org/licenses/>.
++
++import sys
++
++# Switch over to the internal importlib.resources module on Python 3.9+
++if sys.version_info >= (3, 9, 0):
++ import importlib.resources
++ sys.modules['importlib_resources'] = importlib.resources
+--
+GitLab
+
diff --git a/net-mail/mailman/mailman-3.3.4.ebuild b/net-mail/mailman/mailman-3.3.4.ebuild
new file mode 100644
index 000000000000..d6f428c545b1
--- /dev/null
+++ b/net-mail/mailman/mailman-3.3.4.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{8..9} )
+inherit distutils-r1
+
+DESCRIPTION="Mailman -- the GNU mailing list manager"
+HOMEPAGE="https://www.list.org"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="3"
+KEYWORDS="~amd64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/aiosmtpd-1.4.1[${PYTHON_USEDEP}]
+ dev-python/alembic[${PYTHON_USEDEP}]
+ dev-python/atpublic[${PYTHON_USEDEP}]
+ >=dev-python/authheaders-0.13.0[${PYTHON_USEDEP}]
+ >=dev-python/authres-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/click-8.0[${PYTHON_USEDEP}]
+ >=dev-python/dnspython-1.14.0[${PYTHON_USEDEP}]
+ >=dev-python/falcon-2.0.0[${PYTHON_USEDEP}]
+ dev-python/flufl-bounce[${PYTHON_USEDEP}]
+ >=dev-python/flufl-i18n-2.0.1[${PYTHON_USEDEP}]
+ >=dev-python/flufl-lock-3.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/importlib_resources[${PYTHON_USEDEP}]
+ ' python3_8)
+ www-servers/gunicorn[${PYTHON_USEDEP}]
+ dev-python/lazr-config[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.0[${PYTHON_USEDEP}]
+ dev-python/passlib[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ <dev-python/sqlalchemy-1.4[${PYTHON_USEDEP}]
+ dev-python/zope-component[${PYTHON_USEDEP}]
+ dev-python/zope-configuration[${PYTHON_USEDEP}]
+ dev-python/zope-event[${PYTHON_USEDEP}]
+ >=dev-python/zope-interface-5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/flufl-testing[${PYTHON_USEDEP}]
+ virtual/python-greenlet[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-py3.9-importlib.patch"
+ "${FILESDIR}/${P}-fix-click-8.patch"
+)
+
+python_test() {
+ distutils_install_for_testing --via-venv
+ "${EPYTHON}" -m nose2 -vv || die "Tests failed with ${EPYTHON}"
+}