Merge lp:~salgado/launchpad/update-pygpgme into lp:launchpad

Proposed by Guilherme Salgado
Status: Merged
Approved by: Brad Crittenden
Approved revision: no longer in the source branch.
Merged at revision: not available
Proposed branch: lp:~salgado/launchpad/update-pygpgme
Merge into: lp:launchpad
Diff against target: 249 lines (+31/-35)
8 files modified
lib/canonical/launchpad/doc/emailauthentication.txt (+1/-1)
lib/canonical/launchpad/doc/gpghandler.txt (+6/-6)
lib/canonical/launchpad/utilities/gpghandler.py (+2/-2)
lib/lp/archivepublisher/tests/archive-signing.txt (+1/-2)
lib/lp/archiveuploader/tests/nascentuploadfile.txt (+4/-4)
lib/lp/registry/doc/gpg-signatures.txt (+14/-13)
lib/lp/soyuz/doc/soyuz-upload.txt (+2/-6)
utilities/sourcedeps.conf (+1/-1)
To merge this branch: bzr merge lp:~salgado/launchpad/update-pygpgme
Reviewer Review Type Date Requested Status
Brad Crittenden (community) code Approve
Review via email: mp+23790@code.launchpad.net

Description of the change

Use the latest pygpgme, in preparation for switching to python2.6.

The last pygpgme revision (r49) includes a merge from trunk, which
brings http://bazaar.launchpad.net/~jamesh/pygpgme/trunk/revision/57
that was responsible for turning gpgmekey.fpr into a unicode. That
exposed a bug in our code where we were not ascii-encoding the
fingerprint before passing it to gpgme.Context.export(), like all other
callsites on that module do.

Another alternative here would be to change PymeKey._buildFromGpgmeKey()
to store the ascii-encoded fingerprint, instead of the unicode one, in
an instance variable. I'd be in favour of this, I think.

= Launchpad lint =

Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.

Linting changed files:
  lib/canonical/launchpad/utilities/gpghandler.py
  lib/lp/archiveuploader/tests/nascentuploadfile.txt
  lib/lp/registry/doc/gpg-signatures.txt
  lib/canonical/launchpad/doc/emailauthentication.txt
  lib/canonical/launchpad/doc/gpghandler.txt
  lib/lp/soyuz/doc/soyuz-upload.txt
  utilities/sourcedeps.conf

== Pylint notices ==

lib/canonical/launchpad/utilities/gpghandler.py
    25: [F0401] Unable to import 'gpgme'
    26: [F0401] Unable to import 'gpgme'
    30: [F0401] Unable to import 'canonical.config'
    31: [F0401] Unable to import 'lp.registry.interfaces.gpg'
    33: [F0401] Unable to import 'canonical.launchpad.interfaces.gpghandler'
    37: [F0401] Unable to import 'canonical.launchpad.validators.email'

To post a comment you must log in.
Revision history for this message
Brad Crittenden (bac) wrote :

Thanks for the fix Salgado.

To get around the unicode marker in test output we decided to do:

>>> print name
Salgado

instead of

>>> name
u'Salgado'

I think that is less fragile. Would you make the change? Of course you can't do anything about the unicode inside the exceptions.

review: Approve (code)
Revision history for this message
Guilherme Salgado (salgado) wrote :

On Tue, 2010-04-20 at 20:07 +0000, Brad Crittenden wrote:
> Review: Approve code
> Thanks for the fix Salgado.

Thank you for the review!

>
> To get around the unicode marker in test output we decided to do:
>
> >>> print name
> Salgado
>
> instead of
>
> >>> name
> u'Salgado'
>
> I think that is less fragile. Would you make the change? Of course you can't do anything about the unicode inside the exceptions.

I didn't know we have a policy for that, but I'm happy to change that,
except for the cases where the string is empty or contains non-ascii
characters. Attached is the incremental diff.

=== modified file 'lib/canonical/launchpad/doc/gpghandler.txt'
--- lib/canonical/launchpad/doc/gpghandler.txt 2010-04-20 18:49:36 +0000
+++ lib/canonical/launchpad/doc/gpghandler.txt 2010-04-20 20:57:31 +0000
@@ -59,8 +59,8 @@
59 >>> verifyObject(IPymeKey, key)59 >>> verifyObject(IPymeKey, key)
60 True60 True
6161
62 >>> key.fingerprint62 >>> print key.fingerprint
63 u'A419AE861E88BC9E04B9C26FBA2B9389DFD20543'63 A419AE861E88BC9E04B9C26FBA2B9389DFD20543
6464
65 >>> print key.secret65 >>> print key.secret
66 False66 False
@@ -119,8 +119,8 @@
119 >>> assert key is not None119 >>> assert key is not None
120 >>> verifyObject(IPymeKey, key)120 >>> verifyObject(IPymeKey, key)
121 True121 True
122 >>> key.fingerprint122 >>> print key.fingerprint
123 u'A419AE861E88BC9E04B9C26FBA2B9389DFD20543'123 A419AE861E88BC9E04B9C26FBA2B9389DFD20543
124124
125But we get an error if the damage is big:125But we get an error if the damage is big:
126(what probably happened in bug #2547)126(what probably happened in bug #2547)
127127
=== modified file 'lib/lp/archiveuploader/tests/nascentuploadfile.txt'
--- lib/lp/archiveuploader/tests/nascentuploadfile.txt 2010-04-20 18:49:36 +0000
+++ lib/lp/archiveuploader/tests/nascentuploadfile.txt 2010-04-20 20:58:13 +0000
@@ -468,8 +468,8 @@
468468
469The IGPGKey fingerprint used to sign this ChangesFile:469The IGPGKey fingerprint used to sign this ChangesFile:
470470
471 >>> ed_mixed_changes.fingerprint471 >>> print ed_mixed_changes.fingerprint
472 u'340CA3BB270E2716C9EE0B768E7EB7086C64A8C5'472 340CA3BB270E2716C9EE0B768E7EB7086C64A8C5
473473
474474
475== DSCFile ==475== DSCFile ==
@@ -530,8 +530,8 @@
530530
531The IGPGKey fingerprint used to sign this DSC:531The IGPGKey fingerprint used to sign this DSC:
532532
533 >>> ed_mixed_dsc.fingerprint533 >>> print ed_mixed_dsc.fingerprint
534 u'340CA3BB270E2716C9EE0B768E7EB7086C64A8C5'534 340CA3BB270E2716C9EE0B768E7EB7086C64A8C5
535535
536A DSCFile provides a verification API similiar to what we have in536A DSCFile provides a verification API similiar to what we have in
537ChangesFile itself:537ChangesFile itself:
538538
=== modified file 'lib/lp/registry/doc/gpg-signatures.txt'
--- lib/lp/registry/doc/gpg-signatures.txt 2010-04-20 18:55:06 +0000
+++ lib/lp/registry/doc/gpg-signatures.txt 2010-04-20 20:59:25 +0000
@@ -39,8 +39,8 @@
39 ... """39 ... """
4040
41 >>> master_sig = gpghandler.verifySignature(content)41 >>> master_sig = gpghandler.verifySignature(content)
42 >>> master_sig.fingerprint 42 >>> print master_sig.fingerprint
43 u'A419AE861E88BC9E04B9C26FBA2B9389DFD20543'43 A419AE861E88BC9E04B9C26FBA2B9389DFD20543
4444
45The text below was "clear signed" by a 0x02BA5EF6, a subkey of 0xDFD2054345The text below was "clear signed" by a 0x02BA5EF6, a subkey of 0xDFD20543
4646
@@ -59,8 +59,8 @@
59 >>>59 >>>
6060
61 >>> subkey_sig = gpghandler.verifySignature(content)61 >>> subkey_sig = gpghandler.verifySignature(content)
62 >>> subkey_sig.fingerprint62 >>> print subkey_sig.fingerprint
63 u'A419AE861E88BC9E04B9C26FBA2B9389DFD20543'63 A419AE861E88BC9E04B9C26FBA2B9389DFD20543
6464
6565
66 >>> master_sig.fingerprint == subkey_sig.fingerprint66 >>> master_sig.fingerprint == subkey_sig.fingerprint
@@ -109,22 +109,22 @@
109 >>> content = """109 >>> content = """
110 ... -----BEGIN PGP SIGNED MESSAGE-----110 ... -----BEGIN PGP SIGNED MESSAGE-----
111 ... Hash: SHA1111 ... Hash: SHA1
112 ... 112 ...
113 ... Test Message.113 ... Test Message.
114 ... -----BEGIN PGP SIGNATURE-----114 ... -----BEGIN PGP SIGNATURE-----
115 ... Version: GnuPG v1.4.1 (GNU/Linux)115 ... Version: GnuPG v1.4.1 (GNU/Linux)
116 ... 116 ...
117 ... iD8DBQFD3xV52yWXVgK6XvYRAtJQAJ4ojuLC4aap4R9T0og17RkPYoND+ACfbCA3117 ... iD8DBQFD3xV52yWXVgK6XvYRAtJQAJ4ojuLC4aap4R9T0og17RkPYoND+ACfbCA3
118 ... yrZD6MZcqzyaGNy1s28Co2Q=118 ... yrZD6MZcqzyaGNy1s28Co2Q=
119 ... =5QGd119 ... =5QGd
120 ... -----END PGP SIGNATURE-----120 ... -----END PGP SIGNATURE-----
121 ... -----BEGIN PGP SIGNED MESSAGE-----121 ... -----BEGIN PGP SIGNED MESSAGE-----
122 ... Hash: SHA1122 ... Hash: SHA1
123 ... 123 ...
124 ... Some data appended by foo.bar@canonical.com124 ... Some data appended by foo.bar@canonical.com
125 ... -----BEGIN PGP SIGNATURE-----125 ... -----BEGIN PGP SIGNATURE-----
126 ... Version: GnuPG v1.4.1 (GNU/Linux)126 ... Version: GnuPG v1.4.1 (GNU/Linux)
127 ... 127 ...
128 ... iD8DBQFD3xWpjn63CGxkqMURAmi6AJ4yHAnhIpt49VlYDG1uxpGy9BmHwwCeKbFM128 ... iD8DBQFD3xWpjn63CGxkqMURAmi6AJ4yHAnhIpt49VlYDG1uxpGy9BmHwwCeKbFM
129 ... aHIJLqhWVf8bGLHZBIH5odw=129 ... aHIJLqhWVf8bGLHZBIH5odw=
130 ... =iUSC130 ... =iUSC
131131
=== modified file 'lib/lp/soyuz/doc/soyuz-upload.txt'
--- lib/lp/soyuz/doc/soyuz-upload.txt 2010-04-20 18:55:06 +0000
+++ lib/lp/soyuz/doc/soyuz-upload.txt 2010-04-20 20:59:49 +0000
@@ -220,8 +220,8 @@
220 >>> key_data = open(key_path).read()220 >>> key_data = open(key_path).read()
221 >>> key = gpg_handler.importPublicKey(key_data)221 >>> key = gpg_handler.importPublicKey(key_data)
222 >>> assert key is not None222 >>> assert key is not None
223 >>> key.fingerprint223 >>> print key.fingerprint
224 u'33C0A61893A5DC5EB325B29E415A12CAC2F30234'224 33C0A61893A5DC5EB325B29E415A12CAC2F30234
225225
226226
227Create the katie user and register it in a team that is allowed to227Create the katie user and register it in a team that is allowed to
228228

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/canonical/launchpad/doc/emailauthentication.txt'
--- lib/canonical/launchpad/doc/emailauthentication.txt 2009-02-19 23:55:18 +0000
+++ lib/canonical/launchpad/doc/emailauthentication.txt 2010-04-21 11:58:24 +0000
@@ -116,7 +116,7 @@
116 ... msg.signedContent, msg.signature)116 ... msg.signedContent, msg.signature)
117 Traceback (most recent call last):117 Traceback (most recent call last):
118 ...118 ...
119 GPGVerificationError: (7, 8, 'Bad signature')119 GPGVerificationError: (7, 8, u'Bad signature')
120120
121 >>> getUtility(IGPGHandler).getVerifiedSignature(121 >>> getUtility(IGPGHandler).getVerifiedSignature(
122 ... msg.signedContent.replace('\n', '\r\n'), msg.signature)122 ... msg.signedContent.replace('\n', '\r\n'), msg.signature)
123123
=== modified file 'lib/canonical/launchpad/doc/gpghandler.txt'
--- lib/canonical/launchpad/doc/gpghandler.txt 2009-01-19 16:15:15 +0000
+++ lib/canonical/launchpad/doc/gpghandler.txt 2010-04-21 11:58:24 +0000
@@ -59,8 +59,8 @@
59 >>> verifyObject(IPymeKey, key)59 >>> verifyObject(IPymeKey, key)
60 True60 True
6161
62 >>> key.fingerprint62 >>> print key.fingerprint
63 'A419AE861E88BC9E04B9C26FBA2B9389DFD20543'63 A419AE861E88BC9E04B9C26FBA2B9389DFD20543
6464
65 >>> print key.secret65 >>> print key.secret
66 False66 False
@@ -119,8 +119,8 @@
119 >>> assert key is not None119 >>> assert key is not None
120 >>> verifyObject(IPymeKey, key)120 >>> verifyObject(IPymeKey, key)
121 True121 True
122 >>> key.fingerprint122 >>> print key.fingerprint
123 'A419AE861E88BC9E04B9C26FBA2B9389DFD20543'123 A419AE861E88BC9E04B9C26FBA2B9389DFD20543
124124
125But we get an error if the damage is big:125But we get an error if the damage is big:
126(what probably happened in bug #2547)126(what probably happened in bug #2547)
@@ -230,10 +230,10 @@
230 Launchpad PPA for Celso áéíóú Providelo230 Launchpad PPA for Celso áéíóú Providelo
231231
232 >>> uid.comment232 >>> uid.comment
233 ''233 u''
234234
235 >>> uid.email235 >>> uid.email
236 ''236 u''
237237
238The public key is also available.238The public key is also available.
239239
240240
=== modified file 'lib/canonical/launchpad/utilities/gpghandler.py'
--- lib/canonical/launchpad/utilities/gpghandler.py 2010-03-12 19:56:06 +0000
+++ lib/canonical/launchpad/utilities/gpghandler.py 2010-04-21 11:58:24 +0000
@@ -374,7 +374,7 @@
374374
375 # Sign the text.375 # Sign the text.
376 try:376 try:
377 result = context.sign(plaintext, signature, mode)377 context.sign(plaintext, signature, mode)
378 except gpgme.GpgmeError:378 except gpgme.GpgmeError:
379 return None379 return None
380380
@@ -620,7 +620,7 @@
620 context = gpgme.Context()620 context = gpgme.Context()
621 context.armor = True621 context.armor = True
622 keydata = StringIO()622 keydata = StringIO()
623 context.export(self.fingerprint, keydata)623 context.export(self.fingerprint.encode('ascii'), keydata)
624624
625 return keydata.getvalue()625 return keydata.getvalue()
626626
627627
=== modified file 'lib/lp/archivepublisher/tests/archive-signing.txt'
--- lib/lp/archivepublisher/tests/archive-signing.txt 2010-03-11 16:09:29 +0000
+++ lib/lp/archivepublisher/tests/archive-signing.txt 2010-04-21 11:58:24 +0000
@@ -230,8 +230,7 @@
230230
231 >>> [uid] = retrieved_key.uids231 >>> [uid] = retrieved_key.uids
232 >>> uid.name232 >>> uid.name
233 'Launchpad PPA for233 u'Launchpad PPA for Celso \xe1\xe9\xed\xf3\xfa Providelo'
234 Celso \xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba Providelo'
235234
236The secret key is securily stored in the designed configuration235The secret key is securily stored in the designed configuration
237path. So only the IGPGHandler itself can access it.236path. So only the IGPGHandler itself can access it.
238237
=== modified file 'lib/lp/archiveuploader/tests/nascentuploadfile.txt'
--- lib/lp/archiveuploader/tests/nascentuploadfile.txt 2009-12-14 13:49:03 +0000
+++ lib/lp/archiveuploader/tests/nascentuploadfile.txt 2010-04-21 11:58:24 +0000
@@ -468,8 +468,8 @@
468468
469The IGPGKey fingerprint used to sign this ChangesFile:469The IGPGKey fingerprint used to sign this ChangesFile:
470470
471 >>> ed_mixed_changes.fingerprint471 >>> print ed_mixed_changes.fingerprint
472 '340CA3BB270E2716C9EE0B768E7EB7086C64A8C5'472 340CA3BB270E2716C9EE0B768E7EB7086C64A8C5
473473
474474
475== DSCFile ==475== DSCFile ==
@@ -530,8 +530,8 @@
530530
531The IGPGKey fingerprint used to sign this DSC:531The IGPGKey fingerprint used to sign this DSC:
532532
533 >>> ed_mixed_dsc.fingerprint533 >>> print ed_mixed_dsc.fingerprint
534 '340CA3BB270E2716C9EE0B768E7EB7086C64A8C5'534 340CA3BB270E2716C9EE0B768E7EB7086C64A8C5
535535
536A DSCFile provides a verification API similiar to what we have in536A DSCFile provides a verification API similiar to what we have in
537ChangesFile itself:537ChangesFile itself:
538538
=== modified file 'lib/lp/registry/doc/gpg-signatures.txt'
--- lib/lp/registry/doc/gpg-signatures.txt 2009-04-17 10:32:16 +0000
+++ lib/lp/registry/doc/gpg-signatures.txt 2010-04-21 11:58:24 +0000
@@ -23,8 +23,6 @@
23 >>> from zope.component import getUtility23 >>> from zope.component import getUtility
24 >>> gpghandler = getUtility(IGPGHandler)24 >>> gpghandler = getUtility(IGPGHandler)
2525
26 >>> from canonical.launchpad.interfaces import GPGVerificationError
27
28The text below was "clear signed" by 0xDFD20543 master key:26The text below was "clear signed" by 0xDFD20543 master key:
2927
30 >>> content = """-----BEGIN PGP SIGNED MESSAGE-----28 >>> content = """-----BEGIN PGP SIGNED MESSAGE-----
@@ -41,8 +39,8 @@
41 ... """39 ... """
4240
43 >>> master_sig = gpghandler.verifySignature(content)41 >>> master_sig = gpghandler.verifySignature(content)
44 >>> master_sig.fingerprint 42 >>> print master_sig.fingerprint
45 'A419AE861E88BC9E04B9C26FBA2B9389DFD20543'43 A419AE861E88BC9E04B9C26FBA2B9389DFD20543
4644
47The text below was "clear signed" by a 0x02BA5EF6, a subkey of 0xDFD2054345The text below was "clear signed" by a 0x02BA5EF6, a subkey of 0xDFD20543
4846
@@ -61,8 +59,8 @@
61 >>>59 >>>
6260
63 >>> subkey_sig = gpghandler.verifySignature(content)61 >>> subkey_sig = gpghandler.verifySignature(content)
64 >>> subkey_sig.fingerprint62 >>> print subkey_sig.fingerprint
65 'A419AE861E88BC9E04B9C26FBA2B9389DFD20543'63 A419AE861E88BC9E04B9C26FBA2B9389DFD20543
6664
6765
68 >>> master_sig.fingerprint == subkey_sig.fingerprint66 >>> master_sig.fingerprint == subkey_sig.fingerprint
@@ -86,7 +84,7 @@
86 >>> master_sig = gpghandler.getVerifiedSignature(content)84 >>> master_sig = gpghandler.getVerifiedSignature(content)
87 Traceback (most recent call last):85 Traceback (most recent call last):
88 ...86 ...
89 GPGVerificationError: (7, 8, 'Bad signature')87 GPGVerificationError: (7, 8, u'Bad signature')
9088
91If no signed content is found, an exception is raised:89If no signed content is found, an exception is raised:
9290
@@ -111,22 +109,22 @@
111 >>> content = """109 >>> content = """
112 ... -----BEGIN PGP SIGNED MESSAGE-----110 ... -----BEGIN PGP SIGNED MESSAGE-----
113 ... Hash: SHA1111 ... Hash: SHA1
114 ... 112 ...
115 ... Test Message.113 ... Test Message.
116 ... -----BEGIN PGP SIGNATURE-----114 ... -----BEGIN PGP SIGNATURE-----
117 ... Version: GnuPG v1.4.1 (GNU/Linux)115 ... Version: GnuPG v1.4.1 (GNU/Linux)
118 ... 116 ...
119 ... iD8DBQFD3xV52yWXVgK6XvYRAtJQAJ4ojuLC4aap4R9T0og17RkPYoND+ACfbCA3117 ... iD8DBQFD3xV52yWXVgK6XvYRAtJQAJ4ojuLC4aap4R9T0og17RkPYoND+ACfbCA3
120 ... yrZD6MZcqzyaGNy1s28Co2Q=118 ... yrZD6MZcqzyaGNy1s28Co2Q=
121 ... =5QGd119 ... =5QGd
122 ... -----END PGP SIGNATURE-----120 ... -----END PGP SIGNATURE-----
123 ... -----BEGIN PGP SIGNED MESSAGE-----121 ... -----BEGIN PGP SIGNED MESSAGE-----
124 ... Hash: SHA1122 ... Hash: SHA1
125 ... 123 ...
126 ... Some data appended by foo.bar@canonical.com124 ... Some data appended by foo.bar@canonical.com
127 ... -----BEGIN PGP SIGNATURE-----125 ... -----BEGIN PGP SIGNATURE-----
128 ... Version: GnuPG v1.4.1 (GNU/Linux)126 ... Version: GnuPG v1.4.1 (GNU/Linux)
129 ... 127 ...
130 ... iD8DBQFD3xWpjn63CGxkqMURAmi6AJ4yHAnhIpt49VlYDG1uxpGy9BmHwwCeKbFM128 ... iD8DBQFD3xWpjn63CGxkqMURAmi6AJ4yHAnhIpt49VlYDG1uxpGy9BmHwwCeKbFM
131 ... aHIJLqhWVf8bGLHZBIH5odw=129 ... aHIJLqhWVf8bGLHZBIH5odw=
132 ... =iUSC130 ... =iUSC
@@ -166,7 +164,7 @@
166 >>> gpghandler.getVerifiedSignature(content)164 >>> gpghandler.getVerifiedSignature(content)
167 Traceback (most recent call last):165 Traceback (most recent call last):
168 ...166 ...
169 GPGVerificationError: (7, 9, 'No public key')167 GPGVerificationError: (7, 9, u'No public key')
170168
171Due to unpredictable behaviour between the production system and169Due to unpredictable behaviour between the production system and
172the external keyserver, we have a resilient signature verifier,170the external keyserver, we have a resilient signature verifier,
@@ -179,4 +177,7 @@
179 >>> gpghandler.getVerifiedSignatureResilient(content)177 >>> gpghandler.getVerifiedSignatureResilient(content)
180 Traceback (most recent call last):178 Traceback (most recent call last):
181 ...179 ...
182 GPGVerificationError: Verification failed 3 times: ["(7, 9, 'No public key')", "(7, 9, 'No public key')", "(7, 9, 'No public key')"]180 GPGVerificationError: Verification failed 3 times:
181 ["(7, 9, u'No public key')",
182 "(7, 9, u'No public key')",
183 "(7, 9, u'No public key')"]
183184
=== modified file 'lib/lp/soyuz/doc/soyuz-upload.txt'
--- lib/lp/soyuz/doc/soyuz-upload.txt 2010-04-15 02:09:00 +0000
+++ lib/lp/soyuz/doc/soyuz-upload.txt 2010-04-21 11:58:24 +0000
@@ -70,10 +70,7 @@
7070
71 >>> from lp.archiveuploader.tagfiles import parse_tagfile71 >>> from lp.archiveuploader.tagfiles import parse_tagfile
72 >>> from canonical.config import config72 >>> from canonical.config import config
73 >>> from cStringIO import StringIO
74 >>> import glob73 >>> import glob
75 >>> import time
76 >>>
77 >>> test_files_dir = os.path.join(config.root,74 >>> test_files_dir = os.path.join(config.root,
78 ... "lib/lp/soyuz/scripts/"75 ... "lib/lp/soyuz/scripts/"
79 ... "tests/upload_test_files/")76 ... "tests/upload_test_files/")
@@ -223,8 +220,8 @@
223 >>> key_data = open(key_path).read()220 >>> key_data = open(key_path).read()
224 >>> key = gpg_handler.importPublicKey(key_data)221 >>> key = gpg_handler.importPublicKey(key_data)
225 >>> assert key is not None222 >>> assert key is not None
226 >>> key.fingerprint223 >>> print key.fingerprint
227 '33C0A61893A5DC5EB325B29E415A12CAC2F30234'224 33C0A61893A5DC5EB325B29E415A12CAC2F30234
228225
229226
230Create the katie user and register it in a team that is allowed to227Create the katie user and register it in a team that is allowed to
@@ -532,7 +529,6 @@
532529
533 >>> from canonical.launchpad.database import (530 >>> from canonical.launchpad.database import (
534 ... SourcePackagePublishingHistory as SSPPH)531 ... SourcePackagePublishingHistory as SSPPH)
535 >>> from canonical.launchpad.interfaces import PackagePublishingStatus
536 >>> package_names.sort()532 >>> package_names.sort()
537 >>> for name in package_names:533 >>> for name in package_names:
538 ... spn = SourcePackageName.selectOneBy(name=name)534 ... spn = SourcePackageName.selectOneBy(name=name)
539535
=== modified file 'utilities/sourcedeps.conf'
--- utilities/sourcedeps.conf 2010-04-20 00:57:04 +0000
+++ utilities/sourcedeps.conf 2010-04-21 11:58:24 +0000
@@ -11,7 +11,7 @@
11mailman lp:~launchpad-pqm/mailman/2.1;revno=97611mailman lp:~launchpad-pqm/mailman/2.1;revno=976
12old_xmlplus lp:~launchpad-pqm/dtdparser/trunk;revno=412old_xmlplus lp:~launchpad-pqm/dtdparser/trunk;revno=4
13pygettextpo lp:~launchpad-pqm/pygettextpo/trunk;revno=2313pygettextpo lp:~launchpad-pqm/pygettextpo/trunk;revno=23
14pygpgme lp:~launchpad-pqm/pygpgme/devel;revno=4814pygpgme lp:~launchpad-pqm/pygpgme/devel;revno=49
15subvertpy lp:~launchpad-pqm/subvertpy/trunk;revno=204015subvertpy lp:~launchpad-pqm/subvertpy/trunk;revno=2040
16testresources lp:~launchpad-pqm/testresources/dev;revno=1616testresources lp:~launchpad-pqm/testresources/dev;revno=16
17shipit lp:~launchpad-pqm/shipit/trunk;revno=8904 optional17shipit lp:~launchpad-pqm/shipit/trunk;revno=8904 optional