# Copyright (C) 1998-2007 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. dnl Process this file with autoconf to produce a configure script. AC_REVISION($Revision: 8122 $) 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. AC_MSG_CHECKING(Python version) changequote(,) cat > conftest.py <= 0x2030000: 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.3 or newer is required]) fi AC_MSG_RESULT($version) # Check the email package version. AC_MSG_CHECKING(Python's email package) changequote(,) cat > conftest.py < version: res = "not ok" else: res = "ok" fp = open("conftest.out", "w") fp.write("%s\n" % res) fp.close() EOF changequote([, ]) $PYTHON conftest.py needemailpkg=`cat conftest.out` rm -f conftest.out conftest.py # Should we rely on Python's own email package or use the pre-packaged version? AC_SUBST(EMAILPKG) if test "$needemailpkg" = "ok" then EMAILPKG="" else EMAILPKG=email-2.5.8 fi AC_MSG_RESULT($needemailpkg) # 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 < conftest.py < conftest.py < conftest.py < 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 <> 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(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/discard \ bin/dumpdb \ bin/export.py \ 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/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 \ bin/unshunt \ bin/update \ bin/version \ bin/withlist \ bin/b4b5-archfix \ bin/rb-archfix \ contrib/check_perms_grsecurity.py \ contrib/qmail-to-mailman.py \ contrib/rotatelogs.py \ cron/bumpdigests \ cron/checkdbs \ cron/cull_bad_shunt \ 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 </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