diff options
| author | bwarsaw | 2006-04-27 13:36:59 +0000 |
|---|---|---|
| committer | bwarsaw | 2006-04-27 13:36:59 +0000 |
| commit | 85e02a8e0ac388dcec48481530c237cbe9b379f9 (patch) | |
| tree | 172600adc3733c48e41a542b62c00ee559ad5cf6 | |
| parent | 644f2fb959dce42fa91ec388a5e02ea91658f134 (diff) | |
| download | mailman-85e02a8e0ac388dcec48481530c237cbe9b379f9.tar.gz mailman-85e02a8e0ac388dcec48481530c237cbe9b379f9.tar.zst mailman-85e02a8e0ac388dcec48481530c237cbe9b379f9.zip | |
The start of the conversion of the bin and cron scripts to modules invoked by
an uber-shell (called mmshell for now for lack of a better name). The reason
I'm doing this is because while I understand and still accept the reason for
it, I really hate having to re-run configure (or config.status) every time I
make a change to a bin script. mmshell looks at argv[0] to figure out which
Mailman.bin module to run.
Move newlist and rmlist to the new framework, but also, rewrite newlist to use
optparse instead of getopt. Much nicer. Also convert it to use $variables
for i18n even though the i18n._() function hasn't yet been updated to handle
these (it will soon). rmlist hasn't yet been optparse-ified, but that's soon
too. :)
| -rw-r--r-- | Mailman/Makefile.in | 2 | ||||
| -rw-r--r-- | Mailman/bin/Makefile.in | 71 | ||||
| -rw-r--r-- | Mailman/bin/__init__.py | 0 | ||||
| -rwxr-xr-x | Mailman/bin/newlist.py (renamed from bin/newlist) | 219 | ||||
| -rwxr-xr-x | Mailman/bin/rmlist.py (renamed from bin/rmlist) | 0 | ||||
| -rw-r--r-- | Makefile.in | 2 | ||||
| -rw-r--r-- | bin/Makefile.in | 15 | ||||
| -rw-r--r-- | bin/mmshell | 48 | ||||
| -rwxr-xr-x | configure | 28 | ||||
| -rw-r--r-- | configure.in | 8 |
10 files changed, 254 insertions, 139 deletions
diff --git a/Mailman/Makefile.in b/Mailman/Makefile.in index 96a617839..2fe6c0d14 100644 --- a/Mailman/Makefile.in +++ b/Mailman/Makefile.in @@ -43,7 +43,7 @@ PACKAGEDIR= $(prefix)/Mailman SHELL= /bin/sh MODULES= $(srcdir)/*.py -SUBDIRS= Cgi Archiver Handlers Bouncers Queue MTA Gui Commands +SUBDIRS= Cgi Archiver Handlers Bouncers Queue MTA Gui Commands bin # Modes for directories and executables created by the install # process. Default to group-writable directories but diff --git a/Mailman/bin/Makefile.in b/Mailman/bin/Makefile.in new file mode 100644 index 000000000..1ba409155 --- /dev/null +++ b/Mailman/bin/Makefile.in @@ -0,0 +1,71 @@ +# Copyright (C) 1998-2006 by the Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +# NOTE: Makefile.in is converted into Makefile by the configure script +# in the parent directory. Once configure has run, you can recreate +# the Makefile by running just config.status. + +# Variables set by configure + +VPATH= @srcdir@ +srcdir= @srcdir@ +bindir= @bindir@ +prefix= @prefix@ +exec_prefix= @exec_prefix@ +DESTDIR= + +CC= @CC@ +CHMOD= @CHMOD@ +INSTALL= @INSTALL@ + +DEFS= @DEFS@ + +# Customizable but not set by configure + +OPT= @OPT@ +CFLAGS= $(OPT) $(DEFS) +PACKAGEDIR= $(prefix)/Mailman/bin +SHELL= /bin/sh + +MODULES= *.py + +# Modes for directories and executables created by the install +# process. Default to group-writable directories but +# user-only-writable for executables. +DIRMODE= 775 +EXEMODE= 755 +FILEMODE= 644 +INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE) + + +# Rules + +all: + +install: + for f in $(MODULES); \ + do \ + $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \ + done + +finish: + +clean: + +distclean: + -rm *.pyc + -rm Makefile diff --git a/Mailman/bin/__init__.py b/Mailman/bin/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/Mailman/bin/__init__.py diff --git a/bin/newlist b/Mailman/bin/newlist.py index 70e9cb8c1..79b584eee 100755 --- a/bin/newlist +++ b/Mailman/bin/newlist.py @@ -1,6 +1,4 @@ -#! @PYTHON@ -# -# Copyright (C) 1998-2005 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2006 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -14,34 +12,33 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -"""Create a new, unpopulated mailing list. - -Usage: %(PROGRAM)s [options] [listname [listadmin-addr [admin-password]]] +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. -Options: +import os +import sha +import sys +import getpass +import optparse - -l language - --language=language - Make the list's preferred language `language', which must be a two - letter language code. +from Mailman import Errors +from Mailman import MailList +from Mailman import Message +from Mailman import Utils +from Mailman import Version +from Mailman import i18n +from Mailman import mm_cfg - -u urlhost - --urlhost=urlhost - Gives the list's web interface host name. +_ = i18n._ - -e emailhost - --emailhost=emailhost - Gives the list's email domain name. - -q/--quiet - Normally the administrator is notified by email (after a prompt) that - their list has been created. This option suppresses the prompt and - notification. + +def parseargs(): + parser = optparse.OptionParser(version='GNU Mailman ' + Version.VERSION, + usage=_("""\ +Create a new, unpopulated mailing list. - -h/--help - Print this help text and exit. +Usage: %%prog [options] [listname [listadmin-addr [admin-password]]] You can specify as many of the arguments as you want on the command line: you will be prompted for the missing ones. @@ -86,130 +83,108 @@ If you spell the list name as just `mylist', then the email hostname will be taken from DEFAULT_EMAIL_HOST and the url will be taken from DEFAULT_URL (as defined in your Defaults.py file or overridden by settings in mm_cfg.py). -Note that listnames are forced to lowercase. -""" - -import sys -import os -import getpass -import getopt -import sha - -import paths -from Mailman import mm_cfg -from Mailman import MailList -from Mailman import Utils -from Mailman import Errors -from Mailman import Message -from Mailman import i18n - -_ = i18n._ - -PROGRAM = sys.argv[0] - - - -def usage(code, msg=''): - if code: - fd = sys.stderr - else: - fd = sys.stdout - print >> fd, _(__doc__) - if msg: - print >> fd, msg - sys.exit(code) +Note that listnames are forced to lowercase.""")) + parser.add_option('-l', '--language', + type='string', action='store', + default=mm_cfg.DEFAULT_SERVER_LANGUAGE, + help=_("""\ +Make the list's preferred language LANGUAGE, which must be a two letter +language code.""")) + parser.add_option('-u', '--urlhost', + type='string', action='store', + help=_('The hostname for the web interface')) + parser.add_option('-e', '--emailhost', + type='string', action='store', + help=_('The hostname for the email server')) + parser.add_option('-q', '--quiet', + default=False, action='store_true', + help=_("""\ +Normally the administrator is notified by email (after a prompt) that their +list has been created. This option suppresses the prompt and +notification.""")) + opts, args = parser.parse_args() + # Is the language known? + if opts.language not in mm_cfg.LC_DESCRIPTIONS: + parser.print_help() + print >> sys.stderr, _('Unknown language: $opts.language') + sys.exit(1) + return parser, opts, args def main(): - try: - opts, args = getopt.getopt(sys.argv[1:], 'hql:u:e:', - ['help', 'quiet', 'language=', - 'urlhost=', 'emailhost=']) - except getopt.error, msg: - usage(1, msg) - - lang = mm_cfg.DEFAULT_SERVER_LANGUAGE - quiet = 0 - urlhost = None - emailhost = None - for opt, arg in opts: - if opt in ('-h', '--help'): - usage(0) - if opt in ('-q', '--quiet'): - quiet = 1 - if opt in ('-l', '--language'): - lang = arg - if opt in ('-u', '--urlhost'): - urlhost = arg - if opt in ('-e', '--emailhost'): - emailhost = arg - - # Is the language known? - if lang not in mm_cfg.LC_DESCRIPTIONS.keys(): - usage(1, _('Unknown language: %(lang)s')) + parser, opts, args = parseargs() - if len(args) > 0: - listname = args[0] + # Handle variable number of positional arguments + if args: + listname = args.pop(0) else: listname = raw_input(_('Enter the name of the list: ')) - listname = listname.lower() + listname = listname.lower() if '@' in listname: - # note that --urlhost and --emailhost have precedence + # Note that --urlhost and --emailhost have precedence listname, domain = listname.split('@', 1) - urlhost = urlhost or domain - emailhost = emailhost or mm_cfg.VIRTUAL_HOSTS.get(domain, domain) + urlhost = opts.urlhost or domain + emailhost = opts.emailhost or mm_cfg.VIRTUAL_HOSTS.get(domain, domain) - urlhost = urlhost or mm_cfg.DEFAULT_URL_HOST - host_name = emailhost or \ - mm_cfg.VIRTUAL_HOSTS.get(urlhost, mm_cfg.DEFAULT_EMAIL_HOST) + urlhost = opts.urlhost or mm_cfg.DEFAULT_URL_HOST + host_name = (opts.emailhost or + mm_cfg.VIRTUAL_HOSTS.get(urlhost, mm_cfg.DEFAULT_EMAIL_HOST)) web_page_url = mm_cfg.DEFAULT_URL_PATTERN % urlhost if Utils.list_exists(listname): - usage(1, _('List already exists: %(listname)s')) + parser.print_help() + print >> sys.stderr, _('List already exists: $listname') - if len(args) > 1: - owner_mail = args[1] + if args: + owner_mail = args.pop(0) else: owner_mail = raw_input( _('Enter the email of the person running the list: ')) - if len(args) > 2: - listpasswd = args[2] + if args: + listpasswd = args.pop(0) else: - listpasswd = getpass.getpass(_('Initial %(listname)s password: ')) + listpasswd = getpass.getpass(_('Initial $listname password: ')) + # List passwords cannot be empty listpasswd = listpasswd.strip() if not listpasswd: - usage(1, _('The list password cannot be empty')) + parser.print_help() + print >> sys.stderr, _('The list password cannot be empty') mlist = MailList.MailList() try: pw = sha.new(listpasswd).hexdigest() # Guarantee that all newly created files have the proper permission. # proper group ownership should be assured by the autoconf script - # enforcing that all directories have the group sticky bit set + # enforcing that all directories have the group sticky bit set. oldmask = os.umask(002) try: try: mlist.Create(listname, owner_mail, pw) - finally: - os.umask(oldmask) - except Errors.BadListNameError, s: - usage(1, _('Illegal list name: %(s)s')) - except Errors.EmailAddressError, s: - usage(1, _('Bad owner email address: %(s)s')) - except Errors.MMListAlreadyExistsError: - usage(1, _('List already exists: %(listname)s')) + except Errors.BadListNameError, s: + parser.print_help() + print >> sys.stderr, _('Illegal list name: $s') + sys.exit(1) + except Errors.EmailAddressError, s: + parser.print_help() + print >> sys.stderr, _('Bad owner email address: $s') + sys.exit(1) + except Errors.MMListAlreadyExistsError: + parser.print_help() + print >> sys.stderr, _('List already exists: $listname') + sys.exit(1) + finally: + os.umask(oldmask) # Assign domain-specific attributes mlist.host_name = host_name mlist.web_page_url = web_page_url # And assign the preferred language - mlist.preferred_language = lang - + mlist.preferred_language = opts.language mlist.Save() finally: mlist.Unlock() @@ -221,19 +196,19 @@ def main(): sys.modules[modname].create(mlist) # And send the notice to the list owner - if not quiet: - print _('Hit enter to notify %(listname)s owner...'), + if not opts.quiet: + print _('Hit enter to notify $listname owner...'), sys.stdin.readline() siteowner = Utils.get_site_email(mlist.host_name, 'owner') - text = Utils.maketext( - 'newlist.txt', - {'listname' : listname, - 'password' : listpasswd, - 'admin_url' : mlist.GetScriptURL('admin', absolute=1), - 'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1), - 'requestaddr' : mlist.GetRequestEmail(), - 'siteowner' : siteowner, - }, mlist=mlist) + d = dict( + listname = listname, + password = listpasswd, + admin_url = mlist.GetScriptURL('admin', absolute=True), + listinfo_url = mlist.GetScriptURL('listinfo', absolute=True), + requestaddr = mlist.GetRequestEmail(), + siteowner = siteowner, + ) + text = Utils.maketext('newlist.txt', d, mlist=mlist) # Set the I18N language to the list's preferred language so the header # will match the template language. Stashing and restoring the old # translation context is just (healthy? :) paranoia. @@ -242,7 +217,7 @@ def main(): try: msg = Message.UserNotification( owner_mail, siteowner, - _('Your new mailing list: %(listname)s'), + _('Your new mailing list: $listname'), text, mlist.preferred_language) msg.send(mlist) finally: diff --git a/bin/rmlist b/Mailman/bin/rmlist.py index fbaf30641..fbaf30641 100755 --- a/bin/rmlist +++ b/Mailman/bin/rmlist.py diff --git a/Makefile.in b/Makefile.in index 0328d0c2d..e14df27db 100644 --- a/Makefile.in +++ b/Makefile.in @@ -49,7 +49,7 @@ VAR_DIRS= \ ARCH_INDEP_DIRS= \ bin templates scripts cron pythonlib \ - Mailman Mailman/Cgi Mailman/Archiver \ + Mailman Mailman/bin Mailman/Cgi Mailman/Archiver \ Mailman/Handlers Mailman/Queue Mailman/Bouncers \ Mailman/MTA Mailman/Gui Mailman/Commands messages icons \ tests tests/bounces tests/msgs diff --git a/bin/Makefile.in b/bin/Makefile.in index 8bb385c9f..9e59a62f9 100644 --- a/bin/Makefile.in +++ b/bin/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2004 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2006 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -12,7 +12,8 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. # NOTE: Makefile.in is converted into Makefile by the configure script # in the parent directory. Once configure has run, you can recreate @@ -30,6 +31,7 @@ DESTDIR= CC= @CC@ CHMOD= @CHMOD@ INSTALL= @INSTALL@ +LN_S= @LN_S@ DEFS= @DEFS@ @@ -42,7 +44,7 @@ SCRIPTSDIR= $(prefix)/bin SHELL= /bin/sh -SCRIPTS= mmsitepass newlist rmlist add_members \ +SCRIPTS= mmsitepass mmshell add_members \ list_members remove_members clone_member update arch \ sync_members check_db withlist check_perms find_member \ version config_list list_lists dumpdb cleanarch \ @@ -51,6 +53,8 @@ SCRIPTS= mmsitepass newlist rmlist add_members \ list_owners msgfmt.py show_qfiles discard rb-archfix \ reset_pw.py templ2pot.py po2templ.py +LN_SCRIPTS= newlist rmlist + BUILDDIR= ../build/bin # Modes for directories and executables created by the install @@ -71,6 +75,11 @@ install: do \ $(INSTALL) -m $(EXEMODE) $(BUILDDIR)/$$f $(DESTDIR)$(SCRIPTSDIR); \ done + for f in $(LN_SCRIPTS); \ + do \ + rm -f $(DESTDIR)/$(SCRIPTSDIR)/$$f; \ + (cd $(DESTDIR)/$(SCRIPTSDIR); $(LN_S) mmshell $$f); \ + done finish: diff --git a/bin/mmshell b/bin/mmshell new file mode 100644 index 000000000..042f659f2 --- /dev/null +++ b/bin/mmshell @@ -0,0 +1,48 @@ +#! @PYTHON@ +# +# Copyright (C) 2006 by the Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +"""Driver for all command line scripts in Mailman. + +This works by interrogating sys.argv[0] to determine which module actually +implements the script's functionality. +""" + +import os +import sys + +import paths +from Mailman.i18n import _ + + + +def main(): + script_name = os.path.basename(sys.argv[0]) + module_name = 'Mailman.bin.' + script_name + __import__(module_name) + try: + status = sys.modules[module_name].main() + except KeyboardInterrupt: + print >> sys.stderr, _('Interrupted') + status = 0 + sys.exit(status) + + + +if __name__ == '__main__': + main() @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 7627 . +# From configure.in Revision: 7858 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59. # @@ -311,7 +311,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_python PYTHON INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE TRUE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT OPT VAR_PREFIX MAILMAN_USER MAILMAN_GROUP MAIL_GROUP CGI_GROUP CGIEXT MAILHOST URLHOST LANGUAGES CPP EGREP SCRIPTS LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_python PYTHON INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S SET_MAKE TRUE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT OPT VAR_PREFIX MAILMAN_USER MAILMAN_GROUP MAIL_GROUP CGI_GROUP CGIEXT MAILHOST URLHOST LANGUAGES CPP EGREP SCRIPTS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -721,13 +721,13 @@ echo X"$0" | /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then +if test ! -r "$srcdir/$ac_unique_file"; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } @@ -736,7 +736,7 @@ if test ! -r $srcdir/$ac_unique_file; then { (exit 1); exit 1; }; } fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +(cd $srcdir && test -r "./$ac_unique_file") 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` @@ -1580,6 +1580,17 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` @@ -4285,14 +4296,13 @@ build/bin/list_lists:bin/list_lists \ build/bin/list_members:bin/list_members \ build/bin/list_owners:bin/list_owners \ build/bin/mailmanctl:bin/mailmanctl \ +build/bin/mmshell:bin/mmshell \ build/bin/mmsitepass:bin/mmsitepass \ build/bin/msgfmt.py:bin/msgfmt.py \ -build/bin/newlist:bin/newlist \ build/bin/pygettext.py:bin/pygettext.py \ build/bin/qrunner:bin/qrunner \ build/bin/remove_members:bin/remove_members \ build/bin/reset_pw.py:bin/reset_pw.py \ -build/bin/rmlist:bin/rmlist \ build/bin/show_qfiles:bin/show_qfiles \ build/bin/sync_members:bin/sync_members \ build/bin/transcheck:bin/transcheck \ @@ -4322,7 +4332,7 @@ build/cron/senddigests:cron/senddigests \ # scripts. They're removed on a make distclean, so we make them here. mkdir -p build/bin build/contrib build/cron - ac_config_files="$ac_config_files misc/paths.py Mailman/Defaults.py Mailman/mm_cfg.py.dist src/Makefile misc/Makefile bin/Makefile Mailman/Makefile Mailman/Cgi/Makefile Mailman/Archiver/Makefile Mailman/Commands/Makefile Mailman/Handlers/Makefile Mailman/Bouncers/Makefile Mailman/Queue/Makefile Mailman/MTA/Makefile Mailman/Gui/Makefile templates/Makefile cron/Makefile scripts/Makefile messages/Makefile cron/crontab.in misc/mailman Makefile tests/Makefile tests/bounces/Makefile tests/msgs/Makefile $SCRIPTS" + ac_config_files="$ac_config_files misc/paths.py Mailman/Defaults.py Mailman/mm_cfg.py.dist src/Makefile misc/Makefile bin/Makefile Mailman/bin/Makefile Mailman/Makefile Mailman/Cgi/Makefile Mailman/Archiver/Makefile Mailman/Commands/Makefile Mailman/Handlers/Makefile Mailman/Bouncers/Makefile Mailman/Queue/Makefile Mailman/MTA/Makefile Mailman/Gui/Makefile templates/Makefile cron/Makefile scripts/Makefile messages/Makefile cron/crontab.in misc/mailman Makefile tests/Makefile tests/bounces/Makefile tests/msgs/Makefile $SCRIPTS" ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -4884,6 +4894,7 @@ do "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "misc/Makefile" ) CONFIG_FILES="$CONFIG_FILES misc/Makefile" ;; "bin/Makefile" ) CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; + "Mailman/bin/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mailman/bin/Makefile" ;; "Mailman/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mailman/Makefile" ;; "Mailman/Cgi/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mailman/Cgi/Makefile" ;; "Mailman/Archiver/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mailman/Archiver/Makefile" ;; @@ -4994,6 +5005,7 @@ s,@PYTHON@,$PYTHON,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@LN_S@,$LN_S,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@TRUE@,$TRUE,;t t s,@CC@,$CC,;t t diff --git a/configure.in b/configure.in index dd3d9a547..d3c691c3f 100644 --- a/configure.in +++ b/configure.in @@ -15,7 +15,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. dnl Process this file with autoconf to produce a configure script. -AC_REVISION($Revision: 7858 $) +AC_REVISION($Revision: 7876 $) AC_PREREQ(2.0) AC_INIT(src/common.h) @@ -123,6 +123,7 @@ AC_MSG_RESULT($havedistutils) # Checks for programs. AC_PROG_INSTALL +AC_PROG_LN_S AC_PROG_MAKE_SET AC_PATH_PROG(TRUE, true, true, $PATH:/bin:/usr/bin) @@ -613,14 +614,13 @@ bin/list_lists \ bin/list_members \ bin/list_owners \ bin/mailmanctl \ +bin/mmshell \ bin/mmsitepass \ bin/msgfmt.py \ -bin/newlist \ bin/pygettext.py \ bin/qrunner \ bin/remove_members \ bin/reset_pw.py \ -bin/rmlist \ bin/show_qfiles \ bin/sync_members \ bin/transcheck \ @@ -665,7 +665,7 @@ mkdir -p build/bin build/contrib build/cron dnl Output everything AC_OUTPUT([misc/paths.py Mailman/Defaults.py Mailman/mm_cfg.py.dist - src/Makefile misc/Makefile bin/Makefile + src/Makefile misc/Makefile bin/Makefile Mailman/bin/Makefile Mailman/Makefile Mailman/Cgi/Makefile Mailman/Archiver/Makefile Mailman/Commands/Makefile Mailman/Handlers/Makefile Mailman/Bouncers/Makefile |
