[Pkg-mailman-hackers] Pkg-mailman commit - rev 140 - branches/pkg-split/core/debian/snippets
Bernd S. Brentrup
bsb@haydn.debian.org
Wed, 19 May 2004 10:36:52 -0600
Author: bsb
Date: 2004-05-19 10:36:48 -0600 (Wed, 19 May 2004)
New Revision: 140
Modified:
branches/pkg-split/core/debian/snippets/user_cfg.py
Log:
Test implementation for upgrading /etc/mailman/mm_cfg.py
Modified: branches/pkg-split/core/debian/snippets/user_cfg.py
===================================================================
--- branches/pkg-split/core/debian/snippets/user_cfg.py 2004-05-19 16:33:05 UTC (rev 139)
+++ branches/pkg-split/core/debian/snippets/user_cfg.py 2004-05-19 16:36:48 UTC (rev 140)
@@ -2,43 +2,118 @@
# $URL$
# $Id$
+# Use a 2.0 mm_cfg.py
+USER_MM_CFG = '/root/stable/etc/mailman/mm_cfg.py'
+# Use a 2.1.4 mm_cfg.py
+#USER_MM_CFG = '/etc/mailman/mm_cfg.py'
+
import sys
-sys.path[0] = '/var/lib/mailman/Mailman'
+sys.path.insert(0, '/usr/lib/mailman')
-def_gbls = globals().copy()
-usr_mod = {}
-usr_def = {}
-execfile('/var/lib/mailman/Mailman/Defaults.py', def_gbls)
-usr_gbls = def_gbls.copy()
-execfile('/etc/mailman/mm_cfg.py', usr_gbls)
+virgin_gbls = globals().copy()
-def same_func(f, g):
- f_code, g_code = f.func_code, g.func_code
- return (f_code.co_filename == g_code.co_filename
- and
- f_code.co_firstlineno == g_code.co_firstlineno)
+deprecated = {
+ 'DEFAULT_HOST_NAME' : '''\
+# Replaced by DEFAULT_EMAIL_HOST
+# DEFAULT_HOST_NAME = %(DEFAULT_HOST_NAME)r
+''',
+ 'DEFAULT_URL' : '''\
+# Replaced by DEFAULT_URL_PATTERN.
+# DEFAULT_URL = %(DEFAULT_URL)r
+''',
+ 'OLD_IMAGE_LOGOS' : '''\
+# Location has changed.
+# IMAGE_LOGOS = %(OLD_IMAGE_LOGOS)r
+''',
+ }
+
+
-for var, usr_value in usr_gbls.items():
- try:
- def_value = def_gbls[var]
- if usr_value != def_value:
- usr_mod[var] = 1
- except KeyError:
- # Handle user defined variable here
- usr_def[var] = 1
-# Generate commented /etc/mailman/mm_cfg.py.dpkg-dist
+def upgrade_mm_cfg():
+ def_gbls = virgin_gbls.copy()
+ exec 'from Mailman.Defaults import *' in def_gbls
+ usr_gbls = virgin_gbls.copy()
+ sys.modules['Defaults'] = sys.modules['Mailman.Defaults']
+ execfile(USER_MM_CFG, usr_gbls)
+ usr_mod = {}
+ usr_def = {}
-for var in usr_mod.keys():
- val = usr_gbls[var]
- if var.startswith('__') or callable(val) and same_func(val, def_gbls[var]):
- del usr_mod[var]
-print "User modified variables:"
-for var in usr_mod.keys():
- print ' %s:\t%r was %r' % (var, usr_gbls[var], def_gbls[var])
+ for var, usr_value in usr_gbls.items():
+ try:
+ def_value = def_gbls[var]
+ if usr_value != def_value:
+ usr_mod[var] = 1
+ except KeyError:
+ # Handle user defined variable here
+ usr_def[var] = 1
-print "User defined variables:"
-for var in usr_def.keys():
- print ' %s: \t%r' % (var, usr_gbls[var])
+ del usr_mod['__doc__']
+
+ print "User modified variables:"
+ for var in usr_mod.keys():
+ print ' %s:\t%r was %r' % (var, usr_gbls[var], def_gbls[var])
+
+ print "User defined variables:"
+ for var in usr_def.keys():
+ print ' %s: \t%r' % (var, usr_gbls[var])
+
+ print
+
+ from urlparse import urlsplit, urlunsplit
+ def_scheme, def_netloc, def_path = urlsplit(def_gbls['DEFAULT_URL_PATTERN'])[:3]
+ if 'DEFAULT_URL' in usr_mod.keys():
+ usr_scheme, usr_netloc, usr_path = urlsplit(usr_gbls['DEFAULT_URL'])[:3]
+ usr_gbls['DEFAULT_URL_HOST'] = usr_netloc
+ usr_mod['DEFAULT_URL_HOST'] = 1
+ if usr_scheme != def_scheme or usr_path != def_path:
+ usr_gbls['DEFAULT_URL_PATTERN'] = urlunsplit((usr_scheme, def_netloc, usr_path,
+ None, None))
+ usr_mod['DEFAULT_URL_PATTERN'] = 1
+ usr_gbls['default_url_path'] = usr_path
+ elif 'DEFAULT_URL_PATTERN' in usr_mod.keys():
+ usr_scheme, usr_netloc, usr_path = urlsplit(usr_gbls['DEFAULT_URL_PATTERN'])[:3]
+ usr_gbls['default_url_path'] = usr_path
+ else:
+ usr_gbls['default_url_path'] = def_path
+
+ if 'DEFAULT_HOST_NAME' in usr_mod.keys():
+ exec 'DEFAULT_EMAIL_HOST = DEFAULT_HOST_NAME' in usr_gbls
+ usr_mod['DEFAULT_EMAIL_HOST'] = 1
+ if 'IMAGE_LOGOS' in usr_mod.keys():
+ if usr_gbls['IMAGE_LOGOS'].startswith('/doc/mailman'):
+ exec 'OLD_IMAGE_LOGOS = IMAGE_LOGOS' in usr_gbls
+ usr_mod['OLD_IMAGE_LOGOS'] = 1
+ usr_gbls['IMAGE_LOGOS'] = def_gbls['IMAGE_LOGOS']
+ exec 'DEFAULT_SEND_REMINDERS = DEFAULT_SEND_REMINDERS and True or False' in usr_gbls
+ exec 'USE_ENVELOPE_SENDER = USE_ENVELOPE_SENDER and True or False' in usr_gbls
+
+ # Generate commented /etc/mailman/mm_cfg.py.dpkg-dist
+
+ from cStringIO import StringIO
+ cfl = StringIO()
+ from Mailman.Debian import mm_cfg_defaults, mm_cfg_fillin
+
+ cfl.write(mm_cfg_defaults)
+ cfl.write(mm_cfg_fillin % usr_gbls)
+
+ print cfl.getvalue()
+
+ dfl = StringIO()
+ dfl.write('#%s\n' % ('-'*71))
+ dfl.write('# Variables below are deprecated. Where applicable, their')
+ dfl.write(' values are\n# incorporated above.\n')
+ deprecated_vars = deprecated.keys()
+ deprecated_vars.sort()
+ for v in deprecated_vars:
+ try:
+ usr_mod[v]
+ dfl.write(deprecated[v] % usr_gbls)
+ except KeyError: pass
+
+ print dfl.getvalue()
+
+if __name__ == '__main__':
+ upgrade_mm_cfg()