[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