Add Debian directory
[mspang/vmailman.git] / debian / config
1 #! /bin/sh -e
2 # $URL: svn+ssh://lmamane@svn.debian.org/svn/pkg-mailman/trunk/debian/config $
3 # $Id: config 354 2006-09-18 13:19:03Z thijs $
4
5 . /usr/share/debconf/confmodule
6
7 crontab=/etc/cron.d/mailman
8
9 get_used_languages ()
10 {
11   # Python being non-essential it may not be available at preconfigure
12   # time, but then no languages are used either.
13   if python </dev/null 2>/dev/null ; then
14     # list_lists may fail if mm_cfg is not yet installed
15     ( for ml in $(/usr/sbin/list_lists -b 2>/dev/null); do
16         ( /usr/sbin/config_list -o - ${ml} 2>/dev/null
17           cat <<EOF
18 try: print '\n'.join(available_languages)
19 except: pass
20 EOF
21         ) | python -W ignore::DeprecationWarning
22       done 
23     ) | sort | uniq
24   fi
25 }
26
27 # This script will be invoked by apt-get 2 times in a row, once when
28 # preconfiguring the package and a second time just before running the
29 # postinst script.  OTOH when installing the package with dpkg or when
30 # reconfiguring the package, it runs only once.
31 #
32 # It scans all mailing lists on a system for used languages which may
33 # be quite time consuming on systems with many lists; hence we better
34 # avoid to run that scan twice in a row.
35
36 # The debconf template mailman/used_languages holds the result of the
37 # scan but is never presented to the user, instead its scanned flag
38 # indicates if it holds a fresh value and is reset by the postinst,
39 # while its seen flag is mainly used for cosmetical reasons to mark
40 # processed values in debconf-show output.
41
42 db_get mailman/used_languages || true
43 used_languages="${RET}"
44 db_fget mailman/used_languages scanned || true
45 scanned="${RET}"
46
47 if  [ ! -x "/usr/sbin/list_lists" ] ; then
48   # For 1st time installers there is no used language.
49   db_set  mailman/site_languages "en"
50   db_set  mailman/used_languages ""
51   db_fset mailman/used_languages scanned false
52 else
53   if [ "${scanned}" != "true" ] ; then
54     echo -n "Looking for enabled languages (this may take some time) ..."
55     unset used_languages
56     for l in $(get_used_languages); do
57       used_languages=${used_languages:+${used_languages} }$l
58     done
59     db_set  mailman/used_languages "${used_languages}"
60     db_fset mailman/used_languages scanned true
61     db_fset mailman/used_languages seen false
62     echo " done."
63   fi
64   # Install only languages selected by the administrator
65   # forcing used languages to be always available.
66   db_get mailman/site_languages
67   site_languages="$(echo $RET | sed -e 's/, */ /g' | sed -r 's/ \([^\)]*\)//g')"
68   need_languages="${site_languages}"
69   for lang in ${used_languages} ; do
70     if echo " ${site_languages} " | grep -v -q " ${lang} " ; then
71       need_languages="${lang} ${need_languages}"
72     fi
73   done
74   if [ "${need_languages}" != "${site_languages}" ]; then
75     db_set mailman/site_languages "$(echo ${need_languages} | sed -e 's/  */, /g')"
76   fi
77 fi
78
79 site_languages=""
80 while [ -z "${site_languages}" ]; do
81   db_input high mailman/site_languages || true
82   # Let the db go, and ask the user, so we won't get back a stale setting
83   db_go || true
84   db_get mailman/site_languages && site_languages=${RET}
85 done
86 db_subst mailman/default_server_language site_languages "${site_languages}"
87 db_input high mailman/default_server_language || true
88
89 if [ -f "${crontab}" ]; then
90   COMMENT=`awk '/^.*gate_news/ { print substr($1,1,1) } ' < ${crontab}`
91   if [ "$COMMENT" = "#" ]; then
92     db_set mailman/gate_news false
93   else
94     db_set mailman/gate_news true
95   fi
96 fi
97
98 db_input low mailman/gate_news || true
99
100 if [ ! -e /etc/mailman/mm_cfg.py -o ! -x /var/lib/mailman/bin/list_lists ] || \
101     [ "$(/var/lib/mailman/bin/list_lists -b | grep ^mailman$ )" = "" ]; then
102     db_input critical mailman/create_site_list || true
103 fi
104
105 db_go || true