diff options
author | <> | 2003-01-02 05:25:50 +0000 |
---|---|---|
committer | <> | 2003-01-02 05:25:50 +0000 |
commit | b132a73f15e432eaf43310fce9196ca0c0651465 (patch) | |
tree | c15f816ba7c4de99fef510e3bd75af0890d47441 /configure.in | |
download | mailman2-b132a73f15e432eaf43310fce9196ca0c0651465.tar.gz mailman2-b132a73f15e432eaf43310fce9196ca0c0651465.tar.xz mailman2-b132a73f15e432eaf43310fce9196ca0c0651465.zip |
This commit was manufactured by cvs2svn to create branch
'Release_2_1-maint'.
Diffstat (limited to 'configure.in')
-rw-r--r-- | configure.in | 645 |
1 files changed, 645 insertions, 0 deletions
diff --git a/configure.in b/configure.in new file mode 100644 index 00000000..6d5f0af0 --- /dev/null +++ b/configure.in @@ -0,0 +1,645 @@ +# Copyright (C) 1998,1999,2000,2001,2002 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +dnl Process this file with autoconf to produce a configure script. +AC_REVISION($Revision: 6094 $) +AC_PREREQ(2.0) +AC_INIT(src/common.h) + + +# /usr/local/mailman is the default installation directory +AC_PREFIX_DEFAULT(/usr/local/mailman) + + +# Check for Python! Better be found on $PATH +AC_MSG_CHECKING(for --with-python) +AC_ARG_WITH(python, dnl +[ --with-python specify path to Python interpreter]) +case "$with_python" in + "") ans="no";; + *) ans="$with_python" +esac +AC_MSG_RESULT($ans) + +if test -z "$with_python" +then + AC_PATH_PROG(with_python, python, /usr/local/bin/python) +fi + +AC_MSG_CHECKING(Python interpreter) +if test ! -x $with_python +then + AC_MSG_ERROR([ + +***** No Python interpreter found! +***** Try including the configure option +***** --with-python=/path/to/python/interpreter]) +fi +AC_SUBST(PYTHON) +PYTHON=$with_python +AC_MSG_RESULT($PYTHON) + +# See if Python is new enough. 2.1 or better is required, with 2.1.3 +# recommended. +AC_MSG_CHECKING(Python version) +changequote(,) +cat > conftest.py <<EOF +import sys +try: + v = sys.hexversion +except AttributeError: + v = 0 +# int of hexversion 0x2010000 +if v >= 0x2010000: + s = sys.version.split()[0] +else: + s = "" +fp = open("conftest.out", "w") +fp.write("%s\n" % s) +fp.close() +EOF +changequote([, ]) +$PYTHON conftest.py +version=`cat conftest.out` +rm -f conftest.out conftest.py +if test -z "$version" +then + AC_MSG_ERROR([ + +***** $PYTHON is too old (or broken) +***** Python 2.1 or newer is required +***** Python 2.1.3 or better is recommended]) +fi +AC_MSG_RESULT($version) + +# Make sure distutils is available. Some Linux Python packages split +# distutils into the "-devel" package, so they need both. +AC_MSG_CHECKING(that Python has a working distutils) +changequote(,) +cat > conftest.py <<EOF +try: + import distutils.errors + import distutils.sysconfig +except ImportError: + res = "no" +else: + try: + distutils.sysconfig.get_config_vars() + except distutils.errors.DistutilsPlatformError: + res = "no" + else: + res = "yes" +fp = open("conftest.out", "w") +fp.write("%s\n" % res) +fp.close() +EOF +changequote([, ]) +$PYTHON conftest.py +havedistutils=`cat conftest.out` +rm -f conftest.out conftest.py +if test "$havedistutils" != "yes" +then + AC_MSG_ERROR([ + +***** Distutils is not available or is incomplete for $PYTHON +***** If you installed Python from RPM (or other package manager) +***** be sure to install the -devel package, or install Python +***** from source. See README.LINUX for details]) +fi +AC_MSG_RESULT($havedistutils) + +# Checks for programs. +AC_PROG_INSTALL +AC_PROG_MAKE_SET +AC_PATH_PROG(TRUE, true, true, $PATH:/bin:/usr/bin) + +# Find compiler, allow alternatives to gcc +AC_MSG_CHECKING(for --without-gcc) +AC_ARG_WITH(gcc, [ --without-gcc never use gcc], [ + case $withval in + no) CC=cc + without_gcc=yes;; + yes) CC=gcc + without_gcc=no;; + *) CC=$withval + without_gcc=$withval;; + esac], without_gcc=no;) +AC_MSG_RESULT($without_gcc) + +# If the user switches compilers, we can't believe the cache +if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC" +then + AC_ERROR(cached CC is different -- throw away $cache_file +(it is also a good idea to do 'make clean' before compiling)) +fi + +AC_PROG_CC + + +# Optimizer/debugger flags passed between Makefiles +AC_SUBST(OPT) +if test -z "$OPT" +then + case $GCC in + yes) + case $ac_cv_prog_cc_g in + yes) OPT="-g -O2";; + *) OPT="-O2";; + esac + ;; + *) OPT="-O";; + esac +fi + +# We better be able to execute interpreters +AC_SYS_INTERPRETER +if test "$ac_cv_sys_interpreter" != "yes" +then + AC_MSG_ERROR([ + +***** Cannot execute interpreter scripts? +***** Are you sure you system doesn't support this?]) +fi + + +# Check for an alternate data directory, separate from installation dir. +default_var_prefix="/var/mailman" +AC_SUBST(VAR_PREFIX) +AC_MSG_CHECKING(for --with-var-prefix) +AC_ARG_WITH(var-prefix, dnl +[ --with-var-prefix directory for mutable data [/var/mailman]]) +case "$with_var_prefix" in + yes) VAR_PREFIX="$default_var_prefix"; ans=$VAR_PREFIX;; + ""|no) VAR_PREFIX="$prefix"; ans="no";; + *) VAR_PREFIX="$with_var_prefix"; ans=$VAR_PREFIX; +esac +AC_MSG_RESULT($ans) + +AC_MSG_CHECKING(for --with-permcheck) +AC_ARG_WITH(permcheck, dnl +[ --without-permcheck skip the check for target directory permissions]) +if test -z "$with_permcheck" +then + with_permcheck="yes" +fi +AC_MSG_RESULT($with_permcheck) +# Now make sure that $prefix is set up correctly. It must be group +# owned by the target group, it must have the group sticky bit set, and +# it must be a+rx +if test "$VAR_PREFIX" = "NONE" +then + VAR_PREFIX=$ac_default_prefix + prefixcheck=$ac_default_prefix +else + prefixcheck=$VAR_PREFIX +fi + +# new macro for finding group names +AC_DEFUN(MM_FIND_GROUP_NAME, [ +# $1 == variable name +# $2 == user id to check for +AC_SUBST($1) +changequote(,) +if test -z "$$1" +then + cat > conftest.py <<EOF +import grp +gid = '' +for group in "$2".split(): + try: + try: + gname = grp.getgrgid(int(group))[0] + break + except ValueError: + gname = grp.getgrnam(group)[0] + break + except KeyError: + gname = '' +fp = open("conftest.out", "w") +fp.write("%s\n" % gname) +fp.close() +EOF + $PYTHON conftest.py + $1=`cat conftest.out` +fi +changequote([, ]) +rm -f conftest.out conftest.py]) + + +# new macro for finding UIDs +AC_DEFUN(MM_FIND_USER_NAME, [ +# $1 == variable name +# $2 == user id to check for +AC_SUBST($1) +changequote(,) +if test -z "$$1" +then + cat > conftest.py <<EOF +import pwd +uid = '' +for user in "$2".split(): + try: + try: + uname = pwd.getpwuid(int(user))[0] + break + except ValueError: + uname = pwd.getpwnam(user)[0] + break + except KeyError: + uname = '' +fp = open("conftest.out", "w") +fp.write("%s\n" % uname) +fp.close() +EOF + $PYTHON conftest.py + $1=`cat conftest.out` +fi +changequote([, ]) +rm -f conftest.out conftest.py]) + +# Check for some other uid to use than `mailman' +AC_MSG_CHECKING(for --with-username) +AC_ARG_WITH(username, dnl +[ --with-username specify a user name other than \"mailman\"]) + +if test -z "$with_username" +then + with_username="mailman" +fi +USERNAME=$with_username +AC_MSG_RESULT($USERNAME) + +# User `mailman' must exist +AC_SUBST(MAILMAN_USER) +AC_MSG_CHECKING(for user name \"$USERNAME\") +MM_FIND_USER_NAME(MAILMAN_USER, $USERNAME) +if test -z "$MAILMAN_USER" +then + if test "$with_permcheck" = "yes" + then + AC_MSG_ERROR([ +***** No \"$USERNAME\" user found! +***** Your system must have a \"$USERNAME\" user defined +***** (usually in your /etc/passwd file). Please see the INSTALL +***** file for details.]) + fi +fi +AC_MSG_RESULT(okay) + + +# Check for some other gid to use than `mailman' +AC_MSG_CHECKING(for --with-groupname) +AC_ARG_WITH(groupname, dnl +[ --with-groupname specify a group name other than \"mailman\"]) + +if test -z "$with_groupname" +then + with_groupname="mailman" +fi +GROUPNAME=$with_groupname +AC_MSG_RESULT($GROUPNAME) + + +# Target group must exist +AC_SUBST(MAILMAN_GROUP) +AC_MSG_CHECKING(for group name \"$GROUPNAME\") +MM_FIND_GROUP_NAME(MAILMAN_GROUP, $GROUPNAME) +if test -z "$MAILMAN_GROUP" +then + if test "$with_permcheck" = "yes" + then + AC_MSG_ERROR([ +***** No \"$GROUPNAME\" group found! +***** Your system must have a \"$GROUPNAME\" group defined +***** (usually in your /etc/group file). Please see the INSTALL +***** file for details.]) + fi +fi +AC_MSG_RESULT(okay) + + +AC_MSG_CHECKING(permissions on $prefixcheck) +changequote(,) +cat > conftest.py <<EOF +import os, grp +from stat import * +prefix = "$prefixcheck" +groupname = "$GROUPNAME" +mailmangroup = "$MAILMAN_GROUP" +mailmangid = grp.getgrnam(mailmangroup)[2] +problems = [] +try: statdata = os.stat(prefix) +except OSError: + problems.append("Directory doesn't exist: " + prefix) +else: + mode = statdata[ST_MODE] + gid = statdata[ST_GID] + if mailmangid <> gid: + problems.append("Directory must be owned by group " + + groupname + ": " + prefix) + if (mode & S_ISGID) <> S_ISGID: + problems.append("Set-gid bit must be set for directory: " + prefix) + perms = S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH + if (mode & perms) <> perms: + problems.append("Permissions should be at least 02775: " + prefix) +if not problems: + msg = "okay\n" +else: + msg = '***** ' + '\n***** '.join(problems) + '\n' +fp = open("conftest.out", "w") +fp.write(msg) +fp.close() +EOF +changequote([, ]) +$PYTHON conftest.py +status=`cat conftest.out` +rm -f conftest.out conftest.py +if test "$with_permcheck" = "yes" +then + if test "$status" != "okay" + then + AC_MSG_ERROR([ +***** Installation directory $prefixcheck is not configured properly! +$status]) + fi +else + status="skipped" +fi +AC_MSG_RESULT($status) + + +# Now find the UIDs and GIDs +# Support --with-mail-gid and --with-cgi-gid +AC_MSG_CHECKING(for mail wrapper group; i.e. --with-mail-gid) +AC_ARG_WITH(mail-gid, dnl +[ --with-mail-gid group name mail programs run as]) +if test -z "$with_mail_gid" +then + with_mail_gid="mailman other mail daemon" +fi +MM_FIND_GROUP_NAME(MAIL_GROUP, $with_mail_gid) +if test -z "$MAIL_GROUP" +then + if test "$with_permcheck" = "yes" + then + AC_MSG_ERROR([ +***** No group name \"$with_mail_gid\" found for the mail wrapper program. +***** This is the group that your mail server will use to run Mailman's +***** programs. You should specify an existing group with the +***** --with-mail-gid configure option, or use --without-permcheck to +***** skip this verification step. See also your mail server's documentation, +***** and Mailman's INSTALL file for details]) + else + MAIL_GROUP=$with_mail_gid + fi +fi +AC_MSG_RESULT($MAIL_GROUP) + + +AC_MSG_CHECKING(for CGI wrapper group; i.e. --with-cgi-gid) +AC_ARG_WITH(cgi-gid, dnl +[ --with-cgi-gid group name CGI programs run as]) +if test -z "$with_cgi_gid" +then + with_cgi_gid="www www-data nobody" +fi + +MM_FIND_GROUP_NAME(CGI_GROUP, $with_cgi_gid) +if test -z "$CGI_GROUP" +then + if test "$with_permcheck" = "yes" + then + AC_MSG_ERROR([ +***** No group name \"$with_cgi_gid\" found for the CGI wrapper program. +***** This is the group that your web server will use to run Mailman's +***** programs. You should specify an existing group with the +***** --with-cgi-gid configure option, or use --without-permcheck to +***** skip this verification step. See also your web server's documentation, +***** and Mailman's INSTALL file for details]) + else + CGI_GROUP=$with_cgi_gid + fi +fi +AC_MSG_RESULT($CGI_GROUP) + + +# Check for CGI extensions, required by some Web servers +AC_SUBST(CGIEXT) +AC_MSG_CHECKING(for CGI extensions) +AC_ARG_WITH(cgi-ext, dnl +[ --with-cgi-ext specify extension for CGI programs (include dot)]) +if test -z "$with_cgi_ext" +then + CGIEXT='' + with_cgi_ext='no' +else + CGIEXT=$with_cgi_ext +fi +AC_MSG_RESULT($with_cgi_ext) + + +# figure out the default mail hostname and url host component +AC_SUBST(MAILHOST) +AC_MSG_CHECKING(for --with-mailhost) +AC_ARG_WITH(mailhost, dnl +[ --with-mailhost specify the hostname part for outgoing email]) +if test -z "$with_mailhost" +then + MAILHOST='' + with_mailhost='no' +else + MAILHOST=$with_mailhost +fi +AC_MSG_RESULT($with_mailhost) + +AC_SUBST(URLHOST) +AC_MSG_CHECKING(for --with-urlhost) +AC_ARG_WITH(urlhost, dnl +[ --with-urlhost specify the hostname part of urls]) +if test -z "$with_urlhost" +then + URLHOST='' + with_urlhost='no' +else + URLHOST=$with_urlhost +fi +AC_MSG_RESULT($with_urlhost) + +changequote(,) +cat > conftest.py <<EOF +# python +from socket import * +fqdn = getfqdn() +fp = open('conftest.out', 'w') +print >> fp, fqdn +print >> fp, fqdn +fp.close() +EOF +$PYTHON conftest.py +changequote([, ]) +AC_MSG_CHECKING(for default mail host name) +if test -z "$MAILHOST" +then + MAILHOST=`sed q conftest.out` +fi +AC_MSG_RESULT($MAILHOST) +AC_MSG_CHECKING(for default URL host component) +if test -z "$URLHOST" +then + URLHOST=`sed -n '$p' conftest.out` +fi +AC_MSG_RESULT($URLHOST) +rm -f conftest.out conftest.py + +# Checks for libraries. +AC_CHECK_FUNCS(strerror setregid syslog) +if test $ac_cv_func_syslog = no; then + # syslog is not in the default libraries. See if it's in some other. + # Additionally, for at least SCO OpenServer, syslog() is #defined to + # one of several _real_ functions in syslog.h, so we need to do the test + # with the appropriate include. + for lib in bsd socket inet; do + AC_MSG_CHECKING(for syslog in -l$lib) + Mailman_LIBS_save="$LIBS"; LIBS="$LIBS -l$lib" + AC_TRY_LINK([#include <syslog.h>], + [syslog(LOG_DEBUG, "Just a test...");], + [AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SYSLOG) + break], + [AC_MSG_RESULT(no) + LIBS="$Mailman_LIBS_save"]) + unset Mailman_LIBS_save + done +fi + +# Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(syslog.h) + +# Checks for typedefs, structures, and compiler characteristics. +AC_TYPE_UID_T +AC_TYPE_GETGROUPS + +# Checks for library functions. +AC_CHECK_FUNCS(vsnprintf) + +dnl Expand PYTHON path in the scripts, output into build/scriptname + +AC_DEFUN(MM_SCRIPTS, [dnl +bin/add_members \ +bin/arch \ +bin/change_pw \ +bin/check_db \ +bin/check_perms \ +bin/cleanarch \ +bin/clone_member \ +bin/config_list \ +bin/convert.py \ +bin/dumpdb \ +bin/find_member \ +bin/fix_url.py \ +bin/genaliases \ +bin/inject \ +bin/list_admins \ +bin/list_lists \ +bin/list_members \ +bin/list_owners \ +bin/mailmanctl \ +bin/mmsitepass \ +bin/newlist \ +bin/pygettext.py \ +bin/qrunner \ +bin/remove_members \ +bin/rmlist \ +bin/sync_members \ +bin/transcheck \ +bin/unshunt \ +bin/update \ +bin/version \ +bin/withlist \ +bin/b4b5-archfix \ +contrib/check_perms_grsecurity.py \ +contrib/qmail-to-mailman.py \ +contrib/rotatelogs.py \ +cron/bumpdigests \ +cron/checkdbs \ +cron/disabled \ +cron/gate_news \ +cron/mailpasswds \ +cron/nightly_gzip \ +cron/senddigests \ +]) + +dnl Please make sure to leave a space at the end of the last entry. +dnl (This is so we don't have to use [a-z/] style character classes +dnl in the regexp below and mess with m4 quoting, which is not fun.) + +dnl This regexp munges each line in MM_SCRIPTS, replacing: +dnl path/script \ +dnl with: +dnl build/path/script:path/script \ +dnl so that we can macro-expand variables in scripts without using +dnl script.in filenames, outputting the new files in build/ . + +SCRIPTS="patsubst(MM_SCRIPTS, \(.+\) \(\\?\), build/\1:\1 \2)" + +AC_SUBST(SCRIPTS) + +# These directories are temporary directories to store macro-expanded +# scripts. They're removed on a make distclean, so we make them here. +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 + Mailman/Makefile Mailman/Cgi/Makefile Mailman/Logging/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], + echo "configuration completed at" `date`) + +# Make sure all the build scripts are executable. +chmod -R +x build + +# Test for the Chinese codecs. +dnl AC_MSG_CHECKING(for Python Chinese Unicode codecs) +dnl cat > conftest.py <<EOF +dnl try: +dnl unicode("abc", "big5-tw") +dnl print "found" +dnl except LookupError: +dnl print "not found" +dnl EOF +dnl chinese=`$PYTHON conftest.py 2>/dev/null` +dnl rm -f conftest.py +dnl AC_MSG_RESULT($chinese) +dnl if test "x$chinese" != "xfound" +dnl then +dnl AC_MSG_WARN([ + +dnl ***** Python Unicode codecs for Chinese not found. +dnl ***** Chinese emails generated by or manipulated in Mailman will not +dnl ***** be sent in the correct encoding and may be unreadable. +dnl ***** Please uncompress and install the Chinese codecs from: +dnl ***** http://sourceforge.net/projects/python-codecs/ +dnl ***** +dnl ***** Note: Everything else will work just fine. +dnl ]) +dnl fi |