[Pkg-mailman-hackers] Pkg-mailman commit - rev 129 - branches/pkg-split/core/debian

Bernd S. Brentrup bsb@haydn.debian.org
Fri, 14 May 2004 01:01:21 -0600


Author: bsb
Date: 2004-05-14 01:01:11 -0600 (Fri, 14 May 2004)
New Revision: 129

Added:
   branches/pkg-split/core/debian/mailman-trans.dirs
   branches/pkg-split/core/debian/mailman-trans.install
   branches/pkg-split/core/debian/mailman-trans.links
   branches/pkg-split/core/debian/mailman-trans.postinst
   branches/pkg-split/core/debian/mailman-trans.postrm
   branches/pkg-split/core/debian/mailman-trans.prerm
Modified:
   branches/pkg-split/core/debian/control
   branches/pkg-split/core/debian/mailman.install
   branches/pkg-split/core/debian/mailman.links
Log:
Add mailman-trans package to handle ucf -> cfdb transition.

Modified: branches/pkg-split/core/debian/control
===================================================================
--- branches/pkg-split/core/debian/control	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/control	2004-05-14 07:01:11 UTC (rev 129)
@@ -9,8 +9,8 @@
 Package: mailman
 Architecture: all
 Pre-Depends: python (>= 2.3)
-Depends: mailman-bin (= ${Source-Version}), mailman-i18n (= ${Source-Version}) | mailman-en (= ${Source-Version}), logrotate, cron (>= 3.0pl1-42), exim4 | mail-transport-agent, apache | httpd, debconf (>= 1.4.16), ucf (>= 1.05), pwgen, python-bsddb3
-Conflicts: suidmanager (<< 0.50), sendmail (<< 8.12.6)
+Depends: mailman-trans (= ${Source-Version}), mailman-bin (= ${Source-Version}), mailman-i18n (= ${Source-Version}) | mailman-en (= ${Source-Version}), logrotate, cron (>= 3.0pl1-42), exim4 | mail-transport-agent, apache | httpd, debconf (>= 1.4.16), ucf (>= 1.05), pwgen, python-bsddb3
+Conflicts: suidmanager (<< 0.50), sendmail (<< 8.12.6), ssmtp, nullmailer
 Recommends: base-passwd (>= 1.3.0)
 Suggests: mailman-doc (= ${Source-Version}), mailman-spamassassin | mailman-spamprobe, mailman-savannah, mailman-clamav
 Description: powerful, web-based mailing list manager
@@ -30,11 +30,21 @@
  .
  For more information see http://www.list.org/.
 
+Package: mailman-trans
+Architecture: all
+Pre-Depends: python (>= 2.3)
+Depends: ucf (>= 1.05), python-bsddb3
+Conflicts: mailman (<= 2.1.4-4)
+Replaces: mailman (<= 2.1.4-4)
+Description: transitional package for mailman
+ The kernel allowing only native compiled code to be installed setgid,
+ theses wrappers invoke workers implemented in Python after validating
+ arguments.
+
 Package: mailman-bin
 Architecture: any
-Depends: ${shlibs:Depends}, mailman (= ${Source-Version})
+Depends: ${shlibs:Depends}
 Conflicts: mailman (<= 2.1.4-4)
-Replaces: mailman (<= 2.1.4-4)
 Description: setgid wrappers required for running mailman
  The kernel allowing only native compiled code to be installed setgid,
  theses wrappers invoke workers implemented in Python after validating
@@ -43,9 +53,9 @@
 Package: mailman-i18n
 Architecture: all
 Pre-Depends: python (>= 2.3)
-Depends: mailman (= ${Source-Version}), ucf (>= 1.05), debconf (>= 1.4.16)
+Depends: mailman-trans (= ${Source-Version}), debconf (>= 1.4.16)
 Conflicts: mailman (<= 2.1.4-4), mailman-en
-Replaces: mailman (<= 2.1.4-4), mailman-en
+Replaces: mailman-en (= ${Source-Version})
 Suggests: python2.3-korean-codecs, python-japanese-codecs
 Description: language specific parts of mailman (international)
  Message translations plus international templates for web pages and
@@ -54,9 +64,9 @@
 Package: mailman-en
 Architecture: all
 Pre-Depends: python (>= 2.3)
-Depends: mailman (= ${Source-Version}), ucf (>= 1.05), debconf (>= 1.4.16)
+Depends: mailman-trans (= ${Source-Version}), debconf (>= 1.4.16)
 Conflicts: mailman (<= 2.1.4-4), mailman-i18n
-Replaces: mailman (<= 2.1.4-4), mailman-i18n
+Replaces: mailman-i18n (= ${Source-Version})
 Description: language specific parts of mailman (english only)
  English templates for web-pages and automatically generated emails.
  .

Added: branches/pkg-split/core/debian/mailman-trans.dirs
===================================================================
--- branches/pkg-split/core/debian/mailman-trans.dirs	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/mailman-trans.dirs	2004-05-14 07:01:11 UTC (rev 129)
@@ -0,0 +1 @@
+var/lib/mailman/data
\ No newline at end of file

Added: branches/pkg-split/core/debian/mailman-trans.install
===================================================================
--- branches/pkg-split/core/debian/mailman-trans.install	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/mailman-trans.install	2004-05-14 07:01:11 UTC (rev 129)
@@ -0,0 +1 @@
+debian/Debian usr/share/mailman/Mailman

Added: branches/pkg-split/core/debian/mailman-trans.links
===================================================================
--- branches/pkg-split/core/debian/mailman-trans.links	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/mailman-trans.links	2004-05-14 07:01:11 UTC (rev 129)
@@ -0,0 +1,5 @@
+usr/share/mailman var/lib/mailman/.INST
+var/lib/mailman/.INST/Mailman/Debian/__init__.py  var/lib/mailman/Mailman/Debian/__init__.py
+var/lib/mailman/.INST/Mailman/Debian/helpers.py  var/lib/mailman/Mailman/Debian/helpers.py
+var/lib/mailman/.INST/Mailman/Debian/templates.py  var/lib/mailman/Mailman/Debian/templates.py
+var/lib/mailman/.INST/Mailman/Debian/cf_db.py  var/lib/mailman/Mailman/Debian/cf_db.py

Added: branches/pkg-split/core/debian/mailman-trans.postinst
===================================================================
--- branches/pkg-split/core/debian/mailman-trans.postinst	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/mailman-trans.postinst	2004-05-14 07:01:11 UTC (rev 129)
@@ -0,0 +1,118 @@
+#! /usr/bin/python -O
+# $URL$
+# $Id$
+
+"""
+
+Fooling lintian that complains about not sourcing confmodule:
+. /usr/share/debconf/confmodule
+"""
+
+
+import sys
+import os
+import bsddb
+from errno import ENOENT
+
+
+## # Argl, if the debconf Python interface were well designed, sth like
+## #   from debconf import instance as db
+## # should be sufficient here.  As it is, must work around it's flaws.
+## def get_debconf_interface(title=''):
+##     """Get an debconf interface instance, starting a frontend if
+##     none is available.
+##     """#
+##     from debconf import Debconf, _frontEndProgram
+##     try:             junk = os.environ['DEBIAN_HAS_FRONTEND']
+##     except KeyError: os.execv(_frontEndProgram, [_frontEndProgram]+sys.argv)
+##     return Debconf(title)
+## db = get_debconf_interface() ; del get_debconf_interface
+## #  Exception class and convenience constants
+## from debconf import DebconfError, LOW, MEDIUM, HIGH, CRITICAL
+
+
+MM_HOME = '/var/lib/mailman'
+MM_BIN  = os.path.join(MM_HOME, 'bin')
+MM_INST = '/usr/share/mailman'
+
+# mailman (and thus the Mailman py package) may not be installed yet.
+sys.path.insert(0, os.path.join(MM_HOME, 'Mailman'))
+from Debian import DebuggingLogger, mm_languages, cfdb
+
+
+def ucf_to_cfdb():
+    """Import templates under ucf control.
+
+    All Debian releases up to now that used ucf have only registered
+    files under /etc/mailman/LANG and /etc/mailman/qmail-to-mailman.py
+    with ucf, allowing this simplistic approach at moving to our own
+    conffile database.
+    """#
+
+    UCF_CACHE = '/var/lib/ucf/cache'
+    ETC_DIR   = '/etc/mailman/'
+    ETC_LEN   = len(ETC_DIR)
+
+    prev_lang = None
+
+    ucf_list = [ fn for fn in os.listdir(UCF_CACHE)
+                 if fn.startswith(':etc:mailman:') ]
+    if not ucf_list: return
+    
+    log('Moving files out of ucf control ', nl='')
+
+    for cached in ucf_list:
+        path = '/'.join(cached.split(':'))
+        ucf_cached = os.path.join(UCF_CACHE, cached)
+        tmpl = open(ucf_cached).read()
+        try:
+            reg_key = path[ETC_LEN:]
+            lang, tmpl = reg_key.split('/')
+            if lang in mm_languages:
+                if lang != prev_lang:
+                    if prev_lang: cfdb.sync()
+                    prev_lang = lang
+                cfdb.register(reg_key, tmpl)
+        except ValueError:
+            cfdb.register(path, tmpl)
+
+        os.system('ucf --purge --three-way %(path)s' % locals())
+        os.remove(ucf_cached)
+        log('.', nl='')
+
+    cfdb.sync()
+    log(' done.')
+
+
+def run_debhelper_additions():
+
+    from popen2 import Popen4
+    runner = Popen4('/bin/sh -e')
+    runner.tochild.write("""\
+#DEBHELPER#""")
+    runner.tochild.close()
+    while True:
+        rc = runner.poll()
+        if rc != -1: break
+        log(runner.fromchild.readline(), nl='')
+    log(runner.fromchild.read(), nl='')
+    if rc != 0:
+        log('DebHelper added script failed with rc=%(rc)r.' % locals())
+        raise SystemExit(1)
+
+
+if __name__ == '__main__':
+    log = DebuggingLogger('MM_MAINT')
+    try:
+        op = sys.argv[1]
+        if op == 'configure':
+            ucf_to_cfdb()
+        if op in ('configure','abort-upgrade','abort-remove','abort-deconfigure'):
+            run_debhelper_additions()
+        else:
+            log("postinst called with unknown argument %r." % op)
+            raise SystemExit(1)
+    finally:
+        # When things break, this information might be useful
+        log.sys_info()
+


Property changes on: branches/pkg-split/core/debian/mailman-trans.postinst
___________________________________________________________________
Name: svn:keywords
   + Id URL

Added: branches/pkg-split/core/debian/mailman-trans.postrm
===================================================================
--- branches/pkg-split/core/debian/mailman-trans.postrm	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/mailman-trans.postrm	2004-05-14 07:01:11 UTC (rev 129)
@@ -0,0 +1,13 @@
+#! /bin/sh -e
+# $URL$
+# $Id$
+
+echo ">>> $0 $*" >&2
+
+#DEBHELPER#
+
+if [ "$1" = purge ]; then
+    rm -f /var/lib/mailman/data/debcf.db
+fi
+
+exit 0
\ No newline at end of file


Property changes on: branches/pkg-split/core/debian/mailman-trans.postrm
___________________________________________________________________
Name: svn:keywords
   + Id URL

Added: branches/pkg-split/core/debian/mailman-trans.prerm
===================================================================
--- branches/pkg-split/core/debian/mailman-trans.prerm	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/mailman-trans.prerm	2004-05-14 07:01:11 UTC (rev 129)
@@ -0,0 +1,20 @@
+#! /bin/sh -e
+#
+# prerm script for Debian python packages.
+# Written 1998 by Gregor Hoffleit <flight@debian.org>.
+#
+# $URL: svn+alioth://svn.alioth.debian.org/svn/pkg-mailman/branches/pkg-split/core/debian/mailman.prerm $
+# $Id: mailman.prerm 121 2004-05-07 18:18:03Z bsb $
+echo ">>> $0 $*" >&2
+
+#DEBHELPER#
+
+PACKAGE=mailman-trans
+
+# dh_python doesn't do TRT[tm], do it manually
+# We have created compiled .py files in the postinst, undo now.
+dpkg --listfiles $PACKAGE |
+    awk '$0~/\.py$/ {print $0"c\n" $0"o"}' |
+    xargs rm -f >&2
+
+exit 0
\ No newline at end of file

Modified: branches/pkg-split/core/debian/mailman.install
===================================================================
--- branches/pkg-split/core/debian/mailman.install	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/mailman.install	2004-05-14 07:01:11 UTC (rev 129)
@@ -1,11 +1,9 @@
 debian/tmp/usr/lib/mailman/Mailman      usr/share/mailman
 debian/tmp/usr/lib/mailman/bin          usr/share/mailman
 debian/tmp/usr/lib/mailman/cron         usr/share/mailman
-debian/tmp/usr/lib/mailman/icons/*      usr/share/images/mailman
-debian/tmp/usr/lib/mailman/mail         usr/share/mailman
 debian/tmp/usr/lib/mailman/scripts      usr/share/mailman
-debian/tmp/var/lib/mailman/data         var/lib/mailman
+debian/tmp/usr/lib/mailman/icons/*      usr/share/images/mailman
 debian/manpages/*                       usr/share/man/man8
-debian/Debian                           usr/share/mailman/Mailman
+debian/tmp/var/lib/mailman/data         var/lib/mailman
 
 

Modified: branches/pkg-split/core/debian/mailman.links
===================================================================
--- branches/pkg-split/core/debian/mailman.links	2004-05-14 06:58:02 UTC (rev 128)
+++ branches/pkg-split/core/debian/mailman.links	2004-05-14 07:01:11 UTC (rev 129)
@@ -1,5 +1,4 @@
 etc/mailman/mm_cfg.py                   var/lib/mailman/Mailman/mm_cfg.py
-usr/share/mailman                       var/lib/mailman/.INST
 var/lib/mailman/bin/list_lists          usr/sbin/list_lists
 var/lib/mailman/bin/find_member         usr/sbin/find_member
 var/lib/mailman/bin/config_list         usr/sbin/config_list
@@ -208,10 +207,6 @@
 var/lib/mailman/.INST/Mailman/htmlformat.py  var/lib/mailman/Mailman/htmlformat.py
 var/lib/mailman/.INST/Mailman/i18n.py  var/lib/mailman/Mailman/i18n.py
 var/lib/mailman/.INST/Mailman/versions.py  var/lib/mailman/Mailman/versions.py
-var/lib/mailman/.INST/Mailman/Debian/__init__.py  var/lib/mailman/Mailman/Debian/__init__.py
-var/lib/mailman/.INST/Mailman/Debian/helpers.py  var/lib/mailman/Mailman/Debian/helpers.py
-var/lib/mailman/.INST/Mailman/Debian/templates.py  var/lib/mailman/Mailman/Debian/templates.py
-var/lib/mailman/.INST/Mailman/Debian/cf_db.py  var/lib/mailman/Mailman/Debian/cf_db.py
 var/lib/mailman/.INST/cron/crontab.in  var/lib/mailman/cron/crontab.in
 var/lib/mailman/.INST/cron/checkdbs  var/lib/mailman/cron/checkdbs
 var/lib/mailman/.INST/cron/mailpasswds  var/lib/mailman/cron/mailpasswds