Bug 435604 describes a critical problem we discovered while rolling out LP 3.0
on forster, the Mailman (and other) server. The problem is that with the move
to buildout for a lot of our packages, the sys.path that the Mailman binary
uses was not correct. The binary uses the system Python, not bin/py so none
of the buildout eggs were visible to it.
== Proposed fix ==
Extend the path hacking done in Mailman's mm_cfg.py to pick up the necessary
buildout eggs. Do this by importing _pythonpath.
== Pre-implementation notes ==
Discussion during cowboy rollout with gary, spm, and stub.
== Implementation details ==
Along the way, I updated all the MailmanLayer tests. These should all pass
now, with the usual caveat that these tests are flaky. That's why we don't
run them as part of our normal test suite.
== Tests ==
To test the specific critical fix in this branch, run:
To see that all the tests have been updated for LP 3.0, run:
% bin/test -vv --layer=MailmanLayer
You may get spurious failures from the above. Your choices are to run each
test in lib/lp/services/mailman/doc separately, or/and do 'make clean && make'
between each run.
== Demo and Q/A ==
No demo or Q/A. Once we cherry pick this onto forster, if the mailing lists
work, we're gold.
= Launchpad lint =
Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.
lib/lp/services/mailman/doc/logging.txt
70: undefined name 'error_watcher'
71: undefined name 'error_watcher'
74: undefined name 'error_watcher'
75: undefined name 'error_watcher'
lib/lp/services/mailman/doc/postings.txt
14: undefined name 'smtpd'
35: undefined name 'vette_watcher'
36: undefined name 'smtpd'
73: undefined name 'vette_watcher'
74: undefined name 'smtpd'
88: undefined name 'smtpd'
89: undefined name 'smtpd'
99: undefined name 'vette_watcher'
103: undefined name 'smtpd_watcher'
104: undefined name 'smtpd'
156: undefined name 'Browser'
168: undefined name 'smtpd_watcher'
169: undefined name 'smtpd'
212: undefined name 'vette_watcher'
213: undefined name 'smtpd'
244: undefined name 'smtpd'
259: undefined name 'vette_watcher'
260: undefined name 'smtpd'
306: undefined name 'smtpd_watcher'
307: undefined name 'smtpd'
378: undefined name 'smtpd_watcher'
382: undefined name 'smtpd'
405: undefined name 'mhonarc_watcher'
434: undefined name 'smtpd_watcher'
435: undefined name 'smtpd_watcher'
436: undefined name 'smtpd'
486: undefined name 'mhonarc_watcher'
501: undefined name 'vette_watcher'
502: undefined name 'smtpd'
522: undefined name 'smtpd_watcher'
523: undefined name 'smtpd_watcher'
524: undefined name 'smtpd'
595: undefined name 'vette_watcher'
596: undefined name 'smtpd'
639: undefined name 'smtpd_watcher'
640: undefined name 'smtpd_watcher'
641: undefined name 'smtpd'
670: undefined name 'smtpd'
686: undefined name 'vette_watcher'
712: undefined name 'smtpd_watcher'
713: undefined name 'smtpd_watcher'
740: undefined name 'smtpd_watcher'
741: undefined name 'smtpd_watcher'
766: undefined name 'vette_watcher'
781: undefined name 'smtpd_watcher'
782: undefined name 'smtpd_watcher'
786: undefined name 'smtpd'
795: undefined name 'smtpd_watcher'
796: undefined name 'smtpd_watcher'
797: undefined name 'smtpd'
832: undefined name 'vette_watcher'
833: undefined name 'smtpd'
857: undefined name 'vette_watcher'
871: undefined name 'smtpd_watcher'
872: undefined name 'smtpd_watcher'
899: undefined name 'vette_watcher'
lib/lp/services/mailman/doc/bounces.txt
43: undefined name 'bounce_watcher'
44: undefined name 'bounce_watcher'
lib/lp/services/mailman/doc/basic-integration.txt
47: undefined name 'smtpd'
82: undefined name 'smtpd_watcher'
83: undefined name 'smtpd'
lib/lp/services/mailman/doc/decorations.txt
18: undefined name 'smtpd'
30: undefined name 'smtpd_watcher'
31: undefined name 'smtpd_watcher'
49: undefined name 'smtpd'
117: undefined name 'Browser'
lib/lp/services/mailman/doc/recovery.txt
16: undefined name 'Browser'
lib/lp/services/mailman/doc/reactivate-lists.txt
17: undefined name 'Browser'
lib/lp/services/mailman/doc/create-lists.txt
11: undefined name 'Browser'
lib/lp/services/mailman/doc/contact-address.txt
15: undefined name 'smtpd'
25: undefined name 'Browser'
59: undefined name 'smtpd_watcher'
60: undefined name 'smtpd_watcher'
61: undefined name 'smtpd_watcher'
63: undefined name 'smtpd'
165: undefined name 'smtpd_watcher'
170: undefined name 'smtpd_watcher'
171: undefined name 'smtpd_watcher'
172: undefined name 'smtpd'
251: undefined name 'smtpd_watcher'
252: undefined name 'smtpd_watcher'
260: undefined name 'smtpd'
327: undefined name 'smtpd_watcher'
328: undefined name 'smtpd_watcher'
329: undefined name 'smtpd'
lib/lp/services/mailman/doc/staging.txt
31: undefined name 'Browser'
52: undefined name 'smtpd'
65: undefined name 'smtpd_watcher'
78: undefined name 'smtpd_watcher'
91: undefined name 'smtpd_watcher'
104: undefined name 'smtpd_watcher'
107: undefined name 'smtpd'
144: undefined name 'qrunner_watcher'
194: 'from subprocess import *' used; unable to detect undefined names
lib/lp/services/mailman/doc/modify-lists.txt
11: undefined name 'Browser'
== Pylint notices ==
lib/canonical/launchpad/mailman/monkeypatches/__init__.py
9: [F0401] Unable to import 'lazr.config' (No module named config)
reviewer rockstar
= Summary =
Bug 435604 describes a critical problem we discovered while rolling out LP 3.0
on forster, the Mailman (and other) server. The problem is that with the move
to buildout for a lot of our packages, the sys.path that the Mailman binary
uses was not correct. The binary uses the system Python, not bin/py so none
of the buildout eggs were visible to it.
== Proposed fix ==
Extend the path hacking done in Mailman's mm_cfg.py to pick up the necessary
buildout eggs. Do this by importing _pythonpath.
== Pre-implementation notes ==
Discussion during cowboy rollout with gary, spm, and stub.
== Implementation details ==
Along the way, I updated all the MailmanLayer tests. These should all pass
now, with the usual caveat that these tests are flaky. That's why we don't
run them as part of our normal test suite.
== Tests ==
To test the specific critical fix in this branch, run:
% bin/test -vv --layer= MailmanLayer -t basic-integration
To see that all the tests have been updated for LP 3.0, run:
% bin/test -vv --layer= MailmanLayer
You may get spurious failures from the above. Your choices are to run each services/ mailman/ doc separately, or/and do 'make clean && make'
test in lib/lp/
between each run.
== Demo and Q/A ==
No demo or Q/A. Once we cherry pick this onto forster, if the mailing lists
work, we're gold.
= Launchpad lint =
Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.
Linting changed files: services/ mailman/ doc/logging. txt services/ mailman/ doc/subscriptio ns.txt /launchpad/ mailman/ monkeypatches/ __init_ _.py services/ mailman/ testing/ logwatcher. py services/ mailman/ doc/postings. txt services/ mailman/ doc/bounces. txt services/ mailman/ doc/basic- integration. txt services/ mailman/ doc/decorations .txt services/ mailman/ doc/messages. txt services/ mailman/ doc/recovery. txt services/ mailman/ doc/reactivate- lists.txt services/ mailman/ doc/create- lists.txt /launchpad/ mailman/ monkeypatches/ mm_cfg. py.in services/ mailman/ doc/contact- address. txt services/ mailman/ doc/staging. txt services/ mailman/ testing/ helpers. py services/ mailman/ doc/modify- lists.txt
lib/lp/
lib/lp/
lib/canonical
lib/lp/
lib/lp/
lib/lp/
lib/lp/
lib/lp/
lib/lp/
lib/lp/
lib/lp/
lib/lp/
lib/canonical
lib/lp/
lib/lp/
lib/lp/
lib/lp/
== Pyflakes Doctest notices ==
lib/lp/ services/ mailman/ doc/logging. txt
70: undefined name 'error_watcher'
71: undefined name 'error_watcher'
74: undefined name 'error_watcher'
75: undefined name 'error_watcher'
lib/lp/ services/ mailman/ doc/postings. txt
14: undefined name 'smtpd'
35: undefined name 'vette_watcher'
36: undefined name 'smtpd'
73: undefined name 'vette_watcher'
74: undefined name 'smtpd'
88: undefined name 'smtpd'
89: undefined name 'smtpd'
99: undefined name 'vette_watcher'
103: undefined name 'smtpd_watcher'
104: undefined name 'smtpd'
156: undefined name 'Browser'
168: undefined name 'smtpd_watcher'
169: undefined name 'smtpd'
212: undefined name 'vette_watcher'
213: undefined name 'smtpd'
244: undefined name 'smtpd'
259: undefined name 'vette_watcher'
260: undefined name 'smtpd'
306: undefined name 'smtpd_watcher'
307: undefined name 'smtpd'
378: undefined name 'smtpd_watcher'
382: undefined name 'smtpd'
405: undefined name 'mhonarc_watcher'
434: undefined name 'smtpd_watcher'
435: undefined name 'smtpd_watcher'
436: undefined name 'smtpd'
486: undefined name 'mhonarc_watcher'
501: undefined name 'vette_watcher'
502: undefined name 'smtpd'
522: undefined name 'smtpd_watcher'
523: undefined name 'smtpd_watcher'
524: undefined name 'smtpd'
595: undefined name 'vette_watcher'
596: undefined name 'smtpd'
639: undefined name 'smtpd_watcher'
640: undefined name 'smtpd_watcher'
641: undefined name 'smtpd'
670: undefined name 'smtpd'
686: undefined name 'vette_watcher'
712: undefined name 'smtpd_watcher'
713: undefined name 'smtpd_watcher'
740: undefined name 'smtpd_watcher'
741: undefined name 'smtpd_watcher'
766: undefined name 'vette_watcher'
781: undefined name 'smtpd_watcher'
782: undefined name 'smtpd_watcher'
786: undefined name 'smtpd'
795: undefined name 'smtpd_watcher'
796: undefined name 'smtpd_watcher'
797: undefined name 'smtpd'
832: undefined name 'vette_watcher'
833: undefined name 'smtpd'
857: undefined name 'vette_watcher'
871: undefined name 'smtpd_watcher'
872: undefined name 'smtpd_watcher'
899: undefined name 'vette_watcher'
lib/lp/ services/ mailman/ doc/bounces. txt
43: undefined name 'bounce_watcher'
44: undefined name 'bounce_watcher'
lib/lp/ services/ mailman/ doc/basic- integration. txt
47: undefined name 'smtpd'
82: undefined name 'smtpd_watcher'
83: undefined name 'smtpd'
lib/lp/ services/ mailman/ doc/decorations .txt
18: undefined name 'smtpd'
30: undefined name 'smtpd_watcher'
31: undefined name 'smtpd_watcher'
49: undefined name 'smtpd'
117: undefined name 'Browser'
lib/lp/ services/ mailman/ doc/recovery. txt
16: undefined name 'Browser'
lib/lp/ services/ mailman/ doc/reactivate- lists.txt
17: undefined name 'Browser'
lib/lp/ services/ mailman/ doc/create- lists.txt
11: undefined name 'Browser'
lib/lp/ services/ mailman/ doc/contact- address. txt
15: undefined name 'smtpd'
25: undefined name 'Browser'
59: undefined name 'smtpd_watcher'
60: undefined name 'smtpd_watcher'
61: undefined name 'smtpd_watcher'
63: undefined name 'smtpd'
165: undefined name 'smtpd_watcher'
170: undefined name 'smtpd_watcher'
171: undefined name 'smtpd_watcher'
172: undefined name 'smtpd'
251: undefined name 'smtpd_watcher'
252: undefined name 'smtpd_watcher'
260: undefined name 'smtpd'
327: undefined name 'smtpd_watcher'
328: undefined name 'smtpd_watcher'
329: undefined name 'smtpd'
lib/lp/ services/ mailman/ doc/staging. txt
31: undefined name 'Browser'
52: undefined name 'smtpd'
65: undefined name 'smtpd_watcher'
78: undefined name 'smtpd_watcher'
91: undefined name 'smtpd_watcher'
104: undefined name 'smtpd_watcher'
107: undefined name 'smtpd'
144: undefined name 'qrunner_watcher'
194: 'from subprocess import *' used; unable to detect undefined names
lib/lp/ services/ mailman/ doc/modify- lists.txt
11: undefined name 'Browser'
== Pylint notices ==
lib/canonical/ launchpad/ mailman/ monkeypatches/ __init_ _.py
9: [F0401] Unable to import 'lazr.config' (No module named config)