Date: Wednesday, October 26, 2022 @ 15:46:54
  Author: dvzrv
Revision: 1336362

upgpkg: mailman3 3.3.6-1: Upgrade to 3.3.6.

Remove all included patches.
Switch to validating using a pinned commit.

Modified:
  mailman3/trunk/PKGBUILD
Deleted:
  mailman3/trunk/mailman3-3.3.5-booleans_rest_api.patch
  mailman3/trunk/mailman3-3.3.5-moderate_cross_posted.patch
  mailman3/trunk/mailman3-3.3.5-python-alembic1.7.patch

--------------------------------------------+
 PKGBUILD                                   |   29 +--------
 mailman3-3.3.5-booleans_rest_api.patch     |   58 ------------------
 mailman3-3.3.5-moderate_cross_posted.patch |   86 ---------------------------
 mailman3-3.3.5-python-alembic1.7.patch     |   13 ----
 4 files changed, 6 insertions(+), 180 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2022-10-26 15:45:45 UTC (rev 1336361)
+++ PKGBUILD    2022-10-26 15:46:54 UTC (rev 1336362)
@@ -2,8 +2,9 @@
 
 _name=mailman
 pkgname=mailman3
-pkgver=3.3.5
-pkgrel=6
+pkgver=3.3.6
+_commit=d98a9106fc6dfb521971c74823cc07d0f922361b  # refs/tags/3.3.6
+pkgrel=1
 pkgdesc="The GNU mailing list manager"
 arch=(any)
 url="https://www.list.org/";
@@ -36,7 +37,7 @@
 # https://gitlab.com/mailman/mailman/-/issues/948
 # 
source=(https://files.pythonhosted.org/packages/source/${_name::1}/$_name/$_name-$pkgver.tar.gz{,.asc}
 source=(
-  $pkgname::git+https://gitlab.com/$_name/$_name#tag=$pkgver?signed
+  $pkgname::git+https://gitlab.com/$_name/$_name#tag=$_commit?signed
   $pkgname.service
   $pkgname-digests.service
   $pkgname-digests.timer
@@ -46,9 +47,6 @@
   $pkgname-notify.timer
   $pkgname.sysusers
   $pkgname.tmpfiles
-  $pkgname-3.3.5-python-alembic1.7.patch
-  $pkgname-3.3.5-moderate_cross_posted.patch
-  $pkgname-3.3.5-booleans_rest_api.patch
 )
 sha512sums=('SKIP'
             
'5773eae02dee11b83eb73ba81bca98d9d0a22fa3175d53172d17bbc0e9821360a4d562b6f42a3bb55c2f0c0b5b50ab84ee82da4cf8b3ff38555a378687dcde3c'
@@ -59,10 +57,7 @@
             
'edc14e009d117c9799bb5d20f0f81dd580acdc184c35cbaf6596056467bc3116d77e5e4a1d9957cf23201cfd57c3a82970fe996e0565c8e527d83fcfc132051a'
             
'b8538618be8bdd6313d24b844d15c8f25a059c3391cd06db69314b7be19996bfbe913d6c0c9c99d6a19c4f92df32212d31785e92fb32faf5eb792fffe121fcce'
             
'074cf58a93204d4b7631c4cc8af62d5720560301c6fefef6baa5d3aa33e72720870757fac7803f7b2835f8f02bb776f9d049df5c7528c743b56dda7da2085b07'
-            
'6f4b51fd5eb34ac974b3312c34eb1437d9435cfd50f0cb89db02b94ce514bceca2c6dc7cb172b79b2d6a23d68e7ea391ec58dbd9899938c0fe88c03c67c521b9'
-            
'3cba6577f70a212eca3590afbb03de0943c3509c7f93c29cd50da538e7a109626790becfa3f83098ee085ccf33c0612a9bedf3292089cfc9bdeabb83bda3f653'
-            
'55fa201bedc7926dfe1b8d7ca81c72e575f4c83a80ca3585c66f222efbc78c1a70af74be864d3e310aec7f10d2fc740e746c7d995b84aea716aceadd4c266d16'
-            
'd4912abf8b13f205993f68d2f18fcad4e3b11a00da0ed54b4177417f129e074f066527e5984f237a8ae71d6c4277c12163ea53e695d376434a6cfe2c65ee3c2a')
+            
'6f4b51fd5eb34ac974b3312c34eb1437d9435cfd50f0cb89db02b94ce514bceca2c6dc7cb172b79b2d6a23d68e7ea391ec58dbd9899938c0fe88c03c67c521b9')
 b2sums=('SKIP'
         
'3efaa4559bcf54b322f4a21ee3000f5b2bea72dad2f9f436967f5c4d4ed8046bc08f8e31457991e63252237134f3f7d2f9e7e7862ebc211aeef11d506ded4440'
         
'fc6d6545dad6cecfd4c1197269a3ec025eb0b830e04151bb2dee778b9e357127667c5a65ea401b10e31e2ec6a8509719de29c30471fa50d09634c934bdf50b9b'
@@ -72,22 +67,10 @@
         
'ca8aca1a916e99ed313adfd57c33fdd7a3e1b883e22daae8a1e32084331aa32e7ab99b8adfb6ef95b8b696232d044c65de23dba28b2c7e31a9bd02a5f2cb22c2'
         
'b980470b16171ed0e32a0c1d9de7d5e6802431dd5275089c03f7bc862d5ac886b78af8aa8828faa71a63e847c9caf660c3da2890828ecb2e0bea537c2c4001a5'
         
'594d6a6712f9e817f4d935225d3a1d87c96e23f1e449caab6bfb00ce2a0421af1401505c6d1d280a03f8c551136639f0dabf27d8b549ca4ea26bdb3febdda660'
-        
'461dce577696405011ed89f7fc109caaf27f4183b4d315baa8ad03db0f12015ebc447cbe9c0b8c5bcba38b63fcaf45adcfcb3e5bf5afb7eb0bd87a2e1b0301e5'
-        
'736b7bfb0d41cbf0703212139f326c1aeb04d7d800b0819c4f5fe101d5d105686dfe2fa0d8c2ae2c87d3e23314a8c126a83b5b4d467d7fb1b8073e176daa297b'
-        
'21e9213373b2432e0c7a90bd11b203e7e71dc110001dde40e9a258d6c26de9484a6b45c06444864bb65f727a587c5eec7b052358549025a9fab4e9cb9762a5fb'
-        
'20bae136e041690fe000659ce400499cc7391176cd5852888863fb85669d514b6a6081674eac9d73ee6fe2b89416665aedc9bec5aa4570406842d652dbfcb765')
+        
'461dce577696405011ed89f7fc109caaf27f4183b4d315baa8ad03db0f12015ebc447cbe9c0b8c5bcba38b63fcaf45adcfcb3e5bf5afb7eb0bd87a2e1b0301e5')
 validpgpkeys=('541EA0448453394FF77A0ECC9D9B2BA061D0A67C') # Abhilash Raj 
<[email protected]>
 
 prepare() {
-  # use python-alembic >= 1.7 as well, as alembic upstream claims to support 
sqlalchemy >= 1.3
-  patch -d $pkgname -Np1 -i ../$pkgname-3.3.5-python-alembic1.7.patch
-
-  # fix issue with moderating cross-posted messages: 
https://gitlab.com/mailman/mailman/-/issues/955
-  patch -d $pkgname -Np1 -i ../$pkgname-3.3.5-moderate_cross_posted.patch
-
-  # accept booleans in REST API: 
https://gitlab.com/mailman/mailman/-/issues/970
-  patch -d $pkgname -Np1 -i ../$pkgname-3.3.5-booleans_rest_api.patch
-
   cd $pkgname
   # make sure that mailman runs in a FHS compliant way
   printf "[mailman]\nlayout: fhs\n" >> ../$_name.cfg

Deleted: mailman3-3.3.5-booleans_rest_api.patch
===================================================================
--- mailman3-3.3.5-booleans_rest_api.patch      2022-10-26 15:45:45 UTC (rev 
1336361)
+++ mailman3-3.3.5-booleans_rest_api.patch      2022-10-26 15:46:54 UTC (rev 
1336362)
@@ -1,58 +0,0 @@
-diff --git a/src/mailman/rest/helpers.py b/src/mailman/rest/helpers.py
-index 
6f5d02872551d68942bfcc09b89dfec2934dce27..3efd772411769b502a2d32fec19e83d87d44a47c
 100644
---- a/src/mailman/rest/helpers.py
-+++ b/src/mailman/rest/helpers.py
-@@ -249,6 +249,8 @@ class GetterSetter:
-         """
-         if self.decoder is None:
-             return value
-+        if self.decoder is as_boolean and isinstance(value, bool):
-+            return value
-         return self.decoder(value)
- 
- 
-diff --git a/src/mailman/rest/tests/test_listconf.py 
b/src/mailman/rest/tests/test_listconf.py
-index 
e9f1844fb0d5393c66b91b1ff9a01597a7a48e9b..59885bd9ef57f9258cb224281244dd2983788ebe
 100644
---- a/src/mailman/rest/tests/test_listconf.py
-+++ b/src/mailman/rest/tests/test_listconf.py
-@@ -292,6 +292,17 @@ class TestConfiguration(unittest.TestCase):
-             'Invalid Parameter "archive_policy": Accepted Values are:'
-             ' never, private, public.')
- 
-+    def test_patch_with_json_boolean(self):
-+        # Ensure we can patch with JSON boolean value.
-+        with transaction():
-+            self._mlist.gateway_to_mail = False
-+        response = call_api(
-+            'http://localhost:9001/3.0/lists/ant.example.com/config',
-+            method='PATCH', headers={'Content-Type': 'application/json'},
-+            json={'gateway_to_mail': True})
-+        self.assertEqual(response[1].status_code, 204)
-+        self.assertTrue(self._mlist.gateway_to_mail)
-+
-     def test_bad_pipeline_name(self):
-         with self.assertRaises(HTTPError) as cm:
-             call_api(
-diff --git a/src/mailman/rest/tests/test_validator.py 
b/src/mailman/rest/tests/test_validator.py
-index 
32c4a60c8d8920592a83d8296934a404f89eadfe..664770d7261872f428ac4a7991df7015d1414679
 100644
---- a/src/mailman/rest/tests/test_validator.py
-+++ b/src/mailman/rest/tests/test_validator.py
-@@ -19,6 +19,7 @@
- 
- import unittest
- 
-+from lazr.config import as_boolean
- from mailman.app.lifecycle import create_list
- from mailman.core.api import API30, API31
- from mailman.database.transaction import transaction
-@@ -170,3 +171,10 @@ class TestGetterSetter(unittest.TestCase):
-                          ['application/octet-stream'])
-         self.assertEqual(list(self._mlist.pass_extensions),
-                          ['.pdf'])
-+
-+    def test_set_boolean_as_bool(self):
-+        # Non-pythonic POST data can contain JSON booleans. Ensure we can
-+        # handle that.
-+        getset = helpers.GetterSetter(as_boolean)
-+        self.assertTrue(getset(True))
-+        self.assertFalse(getset(False))

Deleted: mailman3-3.3.5-moderate_cross_posted.patch
===================================================================
--- mailman3-3.3.5-moderate_cross_posted.patch  2022-10-26 15:45:45 UTC (rev 
1336361)
+++ mailman3-3.3.5-moderate_cross_posted.patch  2022-10-26 15:46:54 UTC (rev 
1336362)
@@ -1,86 +0,0 @@
-diff --git a/src/mailman/app/moderator.py b/src/mailman/app/moderator.py
-index 513d0108e..aa044b83d 100644
---- a/src/mailman/app/moderator.py
-+++ b/src/mailman/app/moderator.py
-@@ -189,7 +189,7 @@ def handle_message(mlist, id, action, comment=None, 
forward=None):
-     # Delete the request and message if it's not being kept.
-     if not keep:
-         # There are two pended tokens.  The request id has the moderator
--        # token, but wee need to delete the user token too.
-+        # token, but we need to delete the user token too.
-         user_token = None
-         pendings = getUtility(IPendings)
-         for token, data in pendings.find(pend_type='held message'):
-@@ -200,7 +200,14 @@ def handle_message(mlist, id, action, comment=None, 
forward=None):
-         if user_token is not None:
-             pendings.confirm(user_token, expunge=True)
-         requestdb.delete_request(id)
--        message_store.delete_message(message_id)
-+        # Only delete the message from the message store if there's no other
-+        # request for it.
-+        delete = True
-+        for token, data in pendings.find(pend_type='data'):
-+            if data['_mod_message_id'] == message_id:
-+                delete = False
-+        if delete:
-+            message_store.delete_message(message_id)
-     # Log the rejection
-     if rejection:
-         note = """%s: %s posting:
-diff --git a/src/mailman/app/tests/test_moderation.py 
b/src/mailman/app/tests/test_moderation.py
-index a99048a48..1206611f5 100644
---- a/src/mailman/app/tests/test_moderation.py
-+++ b/src/mailman/app/tests/test_moderation.py
-@@ -206,9 +206,36 @@ Message-ID: <alpha>
-         self.assertIsNone(message)
-         self.assertIsNone(getUtility(IPendings).confirm(hash))
- 
-+    def test_handled_cross_posted_message_not_removed(self):
-+        # A cross posted message is not removed when handled on the first 
list.
-+        mlist2 = create_list('[email protected]')
-+        request_db2 = IListRequests(mlist2)
-+        request_id = hold_message(self._mlist, self._msg)
-+        request_id2 = hold_message(mlist2, self._msg)
-+        # Get the hashes for these pending requests.
-+        hash0 = list(self._request_db.held_requests)[0].data_hash
-+        hash1 = list(request_db2.held_requests)[0].data_hash
-+        # Handle the first list's message.
-+        handle_message(self._mlist, request_id, Action.discard)
-+        # There's now only the request for list2.
-+        self.assertEqual(self._request_db.count, 0)
-+        self.assertEqual(request_db2.count, 1)
-+        message = getUtility(IMessageStore).get_message_by_id('<alpha>')
-+        self.assertIsNotNone(message)
-+        self.assertIsNone(getUtility(IPendings).confirm(hash0))
-+        self.assertIsNotNone(getUtility(IPendings).confirm(hash1,
-+                                                           expunge=False))
-+        # Handle the second list's message.
-+        handle_message(mlist2, request_id2, Action.discard)
-+        # Now the request and message are gone.
-+        self.assertEqual(request_db2.count, 0)
-+        message = getUtility(IMessageStore).get_message_by_id('<alpha>')
-+        self.assertIsNone(message)
-+        self.assertIsNone(getUtility(IPendings).confirm(hash1))
-+
-     def test_all_pendings_removed(self):
-         # A held message pends two tokens, One for the moderator and one for
--        # the user.  Ensure both are removed when meddage is handled.
-+        # the user.  Ensure both are removed when message is handled.
-         request_id = hold_message(self._mlist, self._msg)
-         # The hold chain does more.
-         pendings = getUtility(IPendings)
-diff --git a/src/mailman/app/moderator.py b/src/mailman/app/moderator.py
-index aa044b83d..898b14160 100644
---- a/src/mailman/app/moderator.py
-+++ b/src/mailman/app/moderator.py
-@@ -204,8 +204,9 @@ def handle_message(mlist, id, action, comment=None, 
forward=None):
-         # request for it.
-         delete = True
-         for token, data in pendings.find(pend_type='data'):
--            if data['_mod_message_id'] == message_id:
-+            if data and data.get('_mod_message_id') == message_id:
-                 delete = False
-+                break
-         if delete:
-             message_store.delete_message(message_id)
-     # Log the rejection

Deleted: mailman3-3.3.5-python-alembic1.7.patch
===================================================================
--- mailman3-3.3.5-python-alembic1.7.patch      2022-10-26 15:45:45 UTC (rev 
1336361)
+++ mailman3-3.3.5-python-alembic1.7.patch      2022-10-26 15:46:54 UTC (rev 
1336362)
@@ -1,13 +0,0 @@
-diff --git i/setup.py w/setup.py
-index 60c165cbe..c7042c0b1 100644
---- i/setup.py
-+++ w/setup.py
-@@ -111,7 +111,7 @@ case second 'm'.  Any other spelling is incorrect.""",
-         },
-     install_requires = [
-         'aiosmtpd>=1.4.1',
--        'alembic>=1.6.2,<1.7',
-+        'alembic>=1.6.2',
-         'atpublic',
-         'authheaders>=0.9.2',
-         'authres>=1.0.1',

Reply via email to