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

Bernd S. Brentrup bsb@haydn.debian.org
Mon, 03 May 2004 02:07:37 -0600


Author: bsb
Date: 2004-05-03 02:07:20 -0600 (Mon, 03 May 2004)
New Revision: 106

Added:
   branches/pkg-split/core/debian/mailman-i18n.postinst
   branches/pkg-split/core/debian/mailman-i18n.preinst
   branches/pkg-split/core/debian/mailman-i18n.templates
Log:
Maintainer scripts for mailman-i18n:
move LANG templates to /etc/mailman/templates/LANG

Added: branches/pkg-split/core/debian/mailman-i18n.postinst
===================================================================
--- branches/pkg-split/core/debian/mailman-i18n.postinst	2004-05-03 08:02:55 UTC (rev 105)
+++ branches/pkg-split/core/debian/mailman-i18n.postinst	2004-05-03 08:07:20 UTC (rev 106)
@@ -0,0 +1,135 @@
+#! /bin/sh -e
+#
+# postinst script for Debian python packages
+# Written 1998 by Gregor Hoffleit <flight@debian.org>.
+# Updated 2001 by Tollef Fog Heen <tfheen@debian.org>
+# mailman modifications 2004 by Bernd S. Brentrup <bsb@debian.org>
+#
+# $URL$
+# $Id$
+#
+. /usr/share/debconf/confmodule
+
+PACKAGE=mailman
+DIRLIST="/usr/lib/mailman/Mailman /usr/lib/mailman/bin /usr/lib/mailman/cron /usr/lib/mailman/scripts"
+PYLIBDIR="/usr/lib/python`python -c 'import sys; print sys.version[:3]'`"
+
+if [ "$1" = "configure" ]; then
+
+    mm_etc=/etc/mailman/templates
+    mm_dist=/usr/share/mailman/templates
+
+    # Install only languages selected by the administrator
+    # forcing used languages to be always available.
+    db_get mailman/site_languages
+    site_languages="$(echo $RET | sed -e 's/, */ /g')"
+    need_languages="${site_languages}"
+    db_get  mailman/used_languages
+    db_fset mailman/used_languages seen true
+    db_fset mailman/used_languages scanned false
+    for lang in ${used_languages} ; do
+      if echo " ${site_languages} " | grep -v -q " ${lang} " ; then
+        need_languages="${need_languages:+${need_languages} }${lang}"
+      fi
+    done
+    if [ "${need_languages}" != "${site_languages}" ]; then
+      db_set mailman/site_languages "$(echo ${need_languages} | sed -e 's/  */, /g')"
+    fi
+
+    # At present ALL directories in /etc/mailman are language directories
+    # but this may change in the future, better check.
+    for dir in $(find ${mm_etc} -type d -maxdepth 1 -mindepth 1 | sed -e "s;^${mm_etc}/;;g"); do
+      if [ -f ${mm_dist}/${dir}/options.html ]; then
+        old_languages="${old_languages} ${dir}"
+      fi
+    done
+
+    # Remove languages no longer used, but purging modified files
+    # is a bad thing[TM].
+    leftover=/etc/mailman/leftover
+    : >${leftover}
+    for lang in ${old_languages}; do
+      if  echo " ${site_languages} " | grep -v -q " ${lang} " ; then
+        echo -n "Removing unmodified files from ${mm_etc}/${lang} " >&2
+        # UGLY HACK: Since ucf doesn't support conditional removal
+        #            we access its hashfile directly
+        md5sums=$(tempfile --prefix=mm_${lang})
+        grep ${mm_etc}/$lang/ /var/lib/ucf/hashfile >${md5sums} || true
+        if [ -s ${md5sums} ]; then
+          # Language files are under ucf control, check md5sums
+          for file in $(md5sum -c -v ${md5sums} 2>&1 | egrep "OK$" | sed -e 's/ *OK//'); do 
+            ucf --debconf-ok --purge ${file}
+            rm -f ${file} ${file}.dpkg-dist
+            echo -n . >&2
+          done
+          # For modified files remove corresponding .dpkg-dist
+          for file in $(grep ${mm_etc}/$lang/ /var/lib/ucf/hashfile | cut -d' ' -f3); do
+            rm -f ${file}.dpkg-dist
+            echo -n . >&2
+          done
+        else
+          # We are upgrading from a version that didn't use ucf for this
+          # language, remove files that are unchanged in the NEW version.
+          # At this point there is no way to differentiate between
+          # 'changed by admin' and 'changed in package'.
+          for file in $(cd /etc && find mailman/${lang} -type f -a ! -name \*.dpkg-\* ); do
+            if cmp -s /etc/${file} /usr/share/${file}; then
+              rm -f /etc/${file} /etc/${file}.dpkg-dist
+            else
+              echo /etc/${file} >>${leftover}
+            fi
+            echo -n . >&2
+          done
+        fi
+        echo " done." >&2
+        rmdir ${mm_etc}/${lang} 2>/dev/null \
+          || echo "Directory ${mm_etc}/${lang} not empty, not removed." >&2
+        rm -f ${md5sums}
+      fi
+    done
+
+    if [ -s ${leftover} ]; then
+      cat >&2 <<EOF
+
+----------------------------------------------------------------------
+Some templates from unused langugages could not be automatically
+removed since there was no way to find out if they were modified by
+you or the prototype in the package differs from the previous release.
+${leftover} lists these files; please move them out of the way
+at your discretion if you don't want to see this message again.
+----------------------------------------------------------------------
+
+EOF
+      echo -n "Hit return to continue." >&2
+      read junk </dev/tty
+      echo >&2
+    else
+      rm ${leftover}
+    fi
+
+    for lang in ${site_languages}; do
+      echo -n "Installing site language ${lang} " >&2
+      mkdir -p ${mm_etc}/${lang}
+      for file in $(ls ${mm_dist}/${lang}); do
+        echo -n . >&2
+        langfile=${lang}/${file}
+        ucf --debconf-ok --three-way ${mm_dist}/${langfile} ${mm_etc}/${langfile} 2>/dev/null
+        # Upon install ucf leaves a duplicate in .dpkg-dist (Bug #238730), remove it
+        cmp -s ${mm_etc}/${langfile} ${mm_etc}/${langfile}.dpkg-dist \
+          && rm ${mm_etc}/${langfile}.dpkg-dist
+      done
+      echo " done." >&2
+    done
+    # Done with site language stuff
+fi
+
+case "$1" in
+    configure|abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#


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

Added: branches/pkg-split/core/debian/mailman-i18n.preinst
===================================================================
--- branches/pkg-split/core/debian/mailman-i18n.preinst	2004-05-03 08:02:55 UTC (rev 105)
+++ branches/pkg-split/core/debian/mailman-i18n.preinst	2004-05-03 08:07:20 UTC (rev 106)
@@ -0,0 +1,33 @@
+#!/bin/sh -e
+# $URL$
+# $Id$
+
+mm_etc=/etc/mailman
+mm_tmpl=${mm_etc}/templates
+
+all_languages="big5 ca cs da de en es et eu fi fr gb hr hu it ja ko lt nl no pl pt pt_BR ro ru sl sr sv uk"
+
+ucf_cache=/var/lib/ucf/cache
+ucf_hashfile=/var/lib/ucf/hashfile
+
+if [ "$1" = "install" ] || [ "$1" = "upgrade" ]; then
+  if dpkg --compare-versions "$1" ge "2.1" && dpkg --compare-versions "$1" le "2.1.4-4"; then
+    # Move templates from /etc/mailman/LANG to /etc/mailman/templates/LANG
+    for lang in $(cd ${mm_etc} ; find ${all_languages} -maxdepth 0 -type d); do
+      mv ${mm_etc}/${lang} ${mm_tmpl}/${lang}
+      # UGLY HACK: Using ucf for this move would be a major PITA, modifying the ucf database.
+      # This can go away with sarge+1.
+      sed -e "s;${mm_etc}/${lang}/;${mm_tmpl}/${lang}/;" ${ucf_hashfile} >${ucf_hashfile}.$$
+      mv ${ucf_hashfile}.$$ ${ucf_hashfile}
+      old_mangled=$(echo ${mm_etc}/${lang}/ | tr / :)
+      for tmpl in $(find ${ucf_cache} -name ${old_mangled}\*); do
+        new_tmpl=$(echo ${tmpl} | sed -e 's/mailman/mailman:templates/')
+        mv ${tmpl} ${new_tmpl}
+      done
+    done
+  fi
+fi
+
+#DEBHELPER#
+
+exit 0


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

Added: branches/pkg-split/core/debian/mailman-i18n.templates
===================================================================
--- branches/pkg-split/core/debian/mailman-i18n.templates	2004-05-03 08:02:55 UTC (rev 105)
+++ branches/pkg-split/core/debian/mailman-i18n.templates	2004-05-03 08:07:20 UTC (rev 106)
@@ -0,0 +1,23 @@
+# $URL$
+# $Id$
+Template: mailman/site_languages
+Type: multiselect
+__Choices: big5, ca, cs, da, de, en, es, et, eu, fi, fr, gb, hr, hu, it, ja, ko, lt, nl, no, pl, pt, pt_BR, ro, ru, sl, sr, sv, uk
+Default: en
+_Description: Which languages to support?  
+ For each supported language Debian Mailman stores default language
+ specific texts in /etc/mailman/LANG/ giving them conffile like
+ treatment with the help of ucf.  This means approximately 150kB for
+ each supported language on the root FS.
+ .
+ If you need a different set of languages at a later time, just run
+ dpkg-reconfigure mailman.
+ .
+ NOTE: Languages enabled on existing mailing lists are forcibly
+ reenabled when deselected and mailman needs at least one language for
+ displaying it's messages.
+
+Template: mailman/used_languages
+Type: string
+Description: Internal holding result of scan
+


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