X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fconfigure.ac;h=4c7995aa3d51ace231bd3099ad83f405d14d5d87;hp=85f1b00910477e991085203105e6a0bf9fa3f0b3;hb=29d80a8582103ead0b5910391cabc45cb85fa836;hpb=f7fd2a3e34da751cbc02bbf215e99c6dc89adc15 diff --git a/rt/configure.ac b/rt/configure.ac index 85f1b0091..4c7995aa3 100644 --- a/rt/configure.ac +++ b/rt/configure.ac @@ -3,20 +3,25 @@ dnl dnl Process this file with autoconf to produce a configure script dnl dnl Embed in generated ./configure script the following CVS info: -AC_REVISION($Revision: 1.1.1.4 $)dnl +AC_REVISION($Revision: 1.4 $)dnl dnl Setup autoconf -AC_PREREQ(2.53) -AC_INIT(RT, [3.2.2], [rt-bugs@fsck.com]) -AC_CONFIG_SRCDIR([lib/RT.pm.in]) +AC_PREREQ([2.53]) +AC_INIT(RT, m4_esyscmd([( git describe --tags || cat ./.tag 2> /dev/null || echo "rt-3.9.EXPORTED" )| tr -d "\n"]), [rt-bugs@bestpractical.com]) +AC_CONFIG_SRCDIR([lib/RT.pm]) + +dnl Save our incant early since $@ gets overwritten by some macros. +dnl ${ac_configure_args} is available later, but it's quoted differently +dnl and undocumented. See http://www.spinics.net/lists/ac/msg10022.html. +AC_SUBST(CONFIGURE_INCANT, "$0 $@") dnl Extract RT version number components AC_SUBST([rt_version_major], - m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\1])) + m4_bregexp(AC_PACKAGE_VERSION,[^rt-\(\w+\)\.\(\w+\)\.\(.+\)$],[\1])) AC_SUBST([rt_version_minor], - m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\2])) + m4_bregexp(AC_PACKAGE_VERSION,[^rt-\(\w+\)\.\(\w+\)\.\(.+\)$],[\2])) AC_SUBST([rt_version_patch], - m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\4])) + m4_bregexp(AC_PACKAGE_VERSION,[^rt-\(\w+\)\.\(\w+\)\.\(.+\)$],[\3])) test "x$rt_version_major" = 'x' && rt_version_major=0 test "x$rt_version_minor" = 'x' && rt_version_minor=0 test "x$rt_version_patch" = 'x' && rt_version_patch=0 @@ -29,27 +34,63 @@ if test "$PERL" = 'not found'; then AC_MSG_ERROR([cannot use $PACKAGE_NAME without perl]) fi - -dnl SPEED_BIN -AC_ARG_WITH(speedycgi, - AC_HELP_STRING([--with-speedycgi=/path/to/speedy], - [path to your speedycgi binary, if it exists]), - SPEEDY_BIN=$withval, - SPEEDY_BIN=/usr/local/bin/speedy) -AC_SUBST(SPEEDY_BIN) - +dnl BSD find uses -perm +xxxx, GNU find has deprecated this syntax in favour of +dnl -perm /xxx. +AC_MSG_CHECKING([checking version of find]) +AS_IF([find --version 2>&1 | grep 'GNU'], + [ FINDPERM="/" + AC_MSG_RESULT([configuring for GNU find]) ], + [ FINDPERM="+" + AC_MSG_RESULT([configuring for BSD find]) ]) + +AC_SUBST([FINDPERM]) + +dnl WEB_HANDLER +AC_ARG_WITH(web-handler, + AC_HELP_STRING([--with-web-handler=LIST], + [comma separated list of web-handlers RT will be able to use. + Default is fastcgi. Valid values are modperl1, modperl2, fastcgi and standalone. + To successfully run RT you need only one. + ]), + WEB_HANDLER=$withval, + WEB_HANDLER=fastcgi) +my_web_handler_test=$($PERL -e 'print "ok" unless grep $_ !~ /^(modperl1|modperl2|fastcgi|standalone)$/i, grep defined && length, split /\s*,\s*/, $ARGV@<:@0@:>@' $WEB_HANDLER) +if test "$my_web_handler_test" != "ok"; then + AC_MSG_ERROR([Only modperl1, modperl2, fastcgi and standalone are valid web-handlers]) +fi +AC_SUBST(WEB_HANDLER) dnl Defaults paths for installation -AC_PREFIX_DEFAULT([/opt/rt3]) +AC_PREFIX_DEFAULT([/opt/rt4]) RT_ENABLE_LAYOUT -dnl RTGROUP -AC_ARG_WITH(rt-group, - AC_HELP_STRING([--with-rt-group=GROUP], - [group to own all files (default: rt)]), - RTGROUP=$withval, - RTGROUP=rt) -AC_SUBST(RTGROUP) + +# ACRT_USER_EXISTS( users, variable, default ) +# - users is a list of users [www apache www-docs] +# from highest to lowest priority to high priority (i.e. first match) +# - variable is what you set with the result +# + +AC_DEFUN([ACRT_USER_GUESS], + [ + $2=$3 + for x in $1; do + AC_MSG_CHECKING([if user $x exists]) + AS_IF([ $PERL -e"exit( defined getpwnam('$x') ? 0 : 1)" ], + [ AC_MSG_RESULT([found]); $2=$x ; break], + [ AC_MSG_RESULT([not found]) ]) + done + ]) +AC_DEFUN([ACRT_GROUP_GUESS], + [ + $2=$3 + for x in $1; do + AC_MSG_CHECKING([if group $x exists]) + AS_IF([ $PERL -e"exit( defined getgrnam('$x') ? 0 : 1)" ], + [ AC_MSG_RESULT([found]); $2=$x ; break], + [ AC_MSG_RESULT([not found]) ]) + done + ]) dnl BIN_OWNER AC_ARG_WITH(bin-owner, @@ -78,11 +119,11 @@ AC_SUBST(LIBS_GROUP) dnl DB_TYPE AC_ARG_WITH(db-type, AC_HELP_STRING([--with-db-type=TYPE], - [sort of database RT will use (default: mysql) (mysql, Pg, Oracle, Informix and SQLite are valid)]), + [sort of database RT will use (default: mysql) (mysql, Pg, Oracle and SQLite are valid)]), DB_TYPE=$withval, DB_TYPE=mysql) -if test "$DB_TYPE" != 'mysql' -a "$DB_TYPE" != 'Pg' -a "$DB_TYPE" != 'SQLite' -a "$DB_TYPE" != 'Oracle' -a "$DB_TYPE" != 'Informix' -a "$DB_TYPE" != 'Sybase' ; then - AC_MSG_ERROR([Only Oracle, Informix, Pg, mysql and SQLite are valid db types]) +if test "$DB_TYPE" != 'mysql' -a "$DB_TYPE" != 'Pg' -a "$DB_TYPE" != 'SQLite' -a "$DB_TYPE" != 'Oracle' ; then + AC_MSG_ERROR([Only Oracle, Pg, mysql and SQLite are valid db types]) fi AC_SUBST(DB_TYPE) @@ -92,11 +133,6 @@ if test "$DB_TYPE" = 'Oracle'; then DATABASE_ENV_PREF="\$ENV{'ORACLE_HOME'} = '$ORACLE_HOME';" fi -dnl DATABASE_ENV_PREF -if test "$DB_TYPE" = 'Sybase'; then - test "x$SYBASE" = 'x' && AC_MSG_ERROR([Please declare the SYBASE_HOME environment variable]) - DATABASE_ENV_PREF="\$ENV{'SYBASE'} = '$SYBASE';" -fi AC_SUBST(DATABASE_ENV_PREF) dnl DB_HOST @@ -124,19 +160,24 @@ AC_ARG_WITH(db-rt-host, AC_SUBST(DB_RT_HOST) dnl DB_DATABASE_ADMIN +if test "$DB_TYPE" = "Pg" ; then + DB_DBA="postgres" +else + DB_DBA="root" +fi AC_ARG_WITH(db-dba, AC_HELP_STRING([--with-db-dba=DBA], - [name of database administrator (default: root)]), + [name of database administrator (default: root or postgres)]), DB_DBA=$withval, - DB_DBA=root) + DB_DBA="$DB_DBA") AC_SUBST(DB_DBA) dnl DB_DATABASE AC_ARG_WITH(db-database, AC_HELP_STRING([--with-db-database=DBNAME], - [name of the database to use (default: rt3)]), + [name of the database to use (default: rt4)]), DB_DATABASE=$withval, - DB_DATABASE=rt3) + DB_DATABASE=rt4) AC_SUBST(DB_DATABASE) dnl DB_RT_USER @@ -160,39 +201,139 @@ AC_ARG_WITH(web-user, AC_HELP_STRING([--with-web-user=USER], [user the web server runs as (default: www)]), WEB_USER=$withval, - WEB_USER=www) + ACRT_USER_GUESS([www www-data apache httpd nobody],[WEB_USER],[www]) +) AC_SUBST(WEB_USER) dnl WEB_GROUP AC_ARG_WITH(web-group, - AC_HELP_STRING([--with-web-group=GROUP], + AC_HELP_STRING([--with-web-group=GROUP], [group the web server runs as (default: www)]), WEB_GROUP=$withval, - WEB_GROUP=www) + ACRT_GROUP_GUESS([www www-data apache httpd nogroup nobody],[WEB_GROUP], [www])) AC_SUBST(WEB_GROUP) +dnl RTGROUP +AC_ARG_WITH(rt-group, + AC_HELP_STRING([--with-rt-group=GROUP], + [group to own all files (default: rt)]), + RTGROUP=$withval, + ACRT_GROUP_GUESS([rt3 rt $WEB_GROUP],[RTGROUP], [rt])) +AC_SUBST(RTGROUP) + dnl INSTALL AS ME -my_group=$(groups|cut -f1 -d' ') +my_group=$($PERL -MPOSIX=getgid -le 'print scalar getgrgid getgid') +my_user=${USER:-$LOGNAME} AC_ARG_WITH(my-user-group, AC_HELP_STRING([--with-my-user-group], [set all users and groups to current user/group]), RTGROUP=$my_group - BIN_OWNER=$USER - LIBS_OWNER=$USER + BIN_OWNER=$my_user + LIBS_OWNER=$my_user LIBS_GROUP=$my_group - WEB_USER=$USER + WEB_USER=$my_user WEB_GROUP=$my_group) +# Test for valid database names +AC_MSG_CHECKING([if database name is set]) + AS_IF([ echo $DB_DATABASE | $PERL -e 'exit(1) unless <> =~ /\S/' ], + [ AC_MSG_RESULT([yes]) ], + [ AC_MSG_ERROR([no. database name is not set]) ] + ) + +dnl Dependencies for testing and developing RT +AC_ARG_WITH(developer,[],RT_DEVELOPER=$withval,RT_DEVELOPER="0") +AC_ARG_ENABLE(developer, + AC_HELP_STRING([--enable-developer], + [Add dependencies needed for testing and developing RT]), + RT_DEVELOPER=$enableval, + RT_DEVELOPER=$RT_DEVELOPER) +if test "$RT_DEVELOPER" = yes; then + RT_DEVELOPER="1" +else + RT_DEVELOPER="0" +fi +AC_SUBST(RT_DEVELOPER) + +dnl RT's GraphViz dependency charts +AC_CHECK_PROG([RT_GRAPHVIZ], [dot], "yes", "no") +AC_ARG_WITH(graphviz,[],RT_GRAPHVIZ=$withval) +AC_ARG_ENABLE(graphviz, + AC_HELP_STRING([--enable-graphviz], + [Turns on support for RT's GraphViz dependency charts]), + RT_GRAPHVIZ=$enableval) +if test "$RT_GRAPHVIZ" = yes; then + RT_GRAPHVIZ="1" +else + RT_GRAPHVIZ="0" +fi +AC_SUBST(RT_GRAPHVIZ) + +dnl RT's GD pie and bar charts +AC_CHECK_PROG([RT_GD], [gdlib-config], "yes", "no") +AC_ARG_WITH(gd,[],RT_GD=$withval) +AC_ARG_ENABLE(gd, + AC_HELP_STRING([--enable-gd], + [Turns on support for RT's GD pie and bar charts]), + RT_GD=$enableval) +if test "$RT_GD" = yes; then + RT_GD="1" +else + RT_GD="0" +fi +AC_SUBST(RT_GD) + +dnl RT's GPG support +AC_CHECK_PROG([RT_GPG_DEPS], [gpg], "yes", "no") +if test "$RT_GPG_DEPS" = yes; then + RT_GPG_DEPS="1" +else + RT_GPG_DEPS="0" +fi +AC_ARG_ENABLE(gpg, + AC_HELP_STRING([--enable-gpg], + [Turns on GNU Privacy Guard (GPG) support]), + RT_GPG=$enableval) +if test "$RT_GPG" = yes; then + RT_GPG="1" + RT_GPG_DEPS="1" +else + if test "$RT_GPG" = no; then + RT_GPG="0" + RT_GPG_DEPS="0" + else + RT_GPG="0" + fi +fi +AC_SUBST(RT_GPG_DEPS) +AC_SUBST(RT_GPG) -dnl Set the value of apachectl -AC_ARG_WITH(apachectl, - AC_HELP_STRING([--with-apachectl], - [instruct RT where to find your apachectl]), +dnl RT's SMIME support +AC_CHECK_PROG([RT_SMIME_DEPS], [openssl], "yes", "no") +if test "$RT_SMIME_DEPS" = yes; then + RT_SMIME_DEPS="1" +else + RT_SMIME_DEPS="0" +fi +AC_ARG_ENABLE(smime, + AC_HELP_STRING([--enable-smime], + [Turns on Secure MIME (SMIME) support]), + RT_SMIME=$enableval) +if test "$RT_SMIME" = yes; then + RT_SMIME="1" + RT_SMIME_DEPS="1" +else + if test "$RT_SMIME" = no; then + RT_SMIME="0" + RT_SMIME_DEPS="0" + else + RT_SMIME="0" + fi +fi +AC_SUBST(RT_SMIME_DEPS) +AC_SUBST(RT_SMIME) - APACHECTL=$withval, - APACHECTL=`which apachectl`) -AC_SUBST(APACHECTL) dnl This section maps the variable names this script 'natively' generates dnl to their existing names. They should be removed from here as the .in @@ -208,43 +349,130 @@ AC_SUBST([RT_PATH], ${exp_prefix}) AC_SUBST([RT_DOC_PATH], ${exp_manualdir}) AC_SUBST([RT_LOCAL_PATH], ${exp_customdir}) AC_SUBST([RT_LIB_PATH], ${exp_libdir}) +AC_SUBST([RT_LEXICON_PATH], ${exp_lexdir}) +AC_SUBST([RT_STATIC_PATH], ${exp_staticdir}) AC_SUBST([RT_ETC_PATH], ${exp_sysconfdir}) AC_SUBST([CONFIG_FILE_PATH], ${exp_sysconfdir}) AC_SUBST([RT_BIN_PATH], ${exp_bindir}) AC_SUBST([RT_SBIN_PATH], ${exp_sbindir}) AC_SUBST([RT_VAR_PATH], ${exp_localstatedir}) AC_SUBST([RT_MAN_PATH], ${exp_mandir}) +AC_SUBST([RT_FONT_PATH], ${exp_fontdir}) +AC_SUBST([RT_PLUGIN_PATH], ${exp_plugindir}) AC_SUBST([MASON_DATA_PATH], ${exp_masonstatedir}) AC_SUBST([MASON_SESSION_PATH], ${exp_sessionstatedir}) AC_SUBST([MASON_HTML_PATH], ${exp_htmldir}) AC_SUBST([LOCAL_ETC_PATH], ${exp_custometcdir}) AC_SUBST([MASON_LOCAL_HTML_PATH], ${exp_customhtmldir}) AC_SUBST([LOCAL_LEXICON_PATH], ${exp_customlexdir}) +AC_SUBST([LOCAL_STATIC_PATH], ${exp_customstaticdir}) AC_SUBST([LOCAL_LIB_PATH], ${exp_customlibdir}) -AC_SUBST([DESTDIR], ${exp_prefix}) +AC_SUBST([LOCAL_PLUGIN_PATH], ${exp_customplugindir}) AC_SUBST([RT_LOG_PATH], ${exp_logfiledir}) +if test ${exp_sysconfdir} = "etc" -o ${exp_sysconfdir} = "etc/rt"; then +AC_SUBST([RT_PATH_R], ${exp_prefix}) +AC_SUBST([RT_DOC_PATH_R], ${exp_prefix}/${exp_manualdir}) +AC_SUBST([RT_LOCAL_PATH_R], ${exp_prefix}/${exp_customdir}) +AC_SUBST([RT_LIB_PATH_R], ${exp_prefix}/${exp_libdir}) +AC_SUBST([RT_ETC_PATH_R], ${exp_prefix}/${exp_sysconfdir}) +AC_SUBST([CONFIG_FILE_PATH_R], ${exp_prefix}/${exp_sysconfdir}) +AC_SUBST([RT_BIN_PATH_R], ${exp_prefix}/${exp_bindir}) +AC_SUBST([RT_SBIN_PATH_R], ${exp_prefix}/${exp_sbindir}) +AC_SUBST([RT_VAR_PATH_R], ${exp_prefix}/${exp_localstatedir}) +AC_SUBST([RT_MAN_PATH_R], ${exp_prefix}/${exp_mandir}) +AC_SUBST([RT_FONT_PATH_R], ${exp_prefix}/${exp_fontdir}) +AC_SUBST([RT_LEXICON_PATH_R], ${exp_prefix}/${exp_lexdir}) +AC_SUBST([RT_STATIC_PATH_R], ${exp_prefix}/${exp_staticdir}) +AC_SUBST([RT_PLUGIN_PATH_R], ${exp_prefix}/${exp_plugindir}) +AC_SUBST([MASON_DATA_PATH_R], ${exp_prefix}/${exp_masonstatedir}) +AC_SUBST([MASON_SESSION_PATH_R], ${exp_prefix}/${exp_sessionstatedir}) +AC_SUBST([MASON_HTML_PATH_R], ${exp_prefix}/${exp_htmldir}) +AC_SUBST([LOCAL_ETC_PATH_R], ${exp_prefix}/${exp_custometcdir}) +AC_SUBST([MASON_LOCAL_HTML_PATH_R], ${exp_prefix}/${exp_customhtmldir}) +AC_SUBST([LOCAL_LEXICON_PATH_R], ${exp_prefix}/${exp_customlexdir}) +AC_SUBST([LOCAL_STATIC_PATH_R], ${exp_prefix}/${exp_customstaticdir}) +AC_SUBST([LOCAL_LIB_PATH_R], ${exp_prefix}/${exp_customlibdir}) +AC_SUBST([LOCAL_PLUGIN_PATH_R], ${exp_prefix}/${exp_customplugindir}) +AC_SUBST([RT_LOG_PATH_R], ${exp_prefix}/${exp_logfiledir}) +else +AC_SUBST([RT_PATH_R], ${exp_prefix}) +AC_SUBST([RT_DOC_PATH_R], ${exp_manualdir}) +AC_SUBST([RT_LOCAL_PATH_R], ${exp_customdir}) +AC_SUBST([RT_LIB_PATH_R], ${exp_libdir}) +AC_SUBST([RT_LEXICON_PATH_R], ${exp_lexdir}) +AC_SUBST([RT_STATIC_PATH_R], ${exp_staticdir}) +AC_SUBST([RT_ETC_PATH_R], ${exp_sysconfdir}) +AC_SUBST([RT_PLUGIN_PATH_R], ${exp_plugindir}) +AC_SUBST([CONFIG_FILE_PATH_R], ${exp_sysconfdir}) +AC_SUBST([RT_BIN_PATH_R], ${exp_bindir}) +AC_SUBST([RT_SBIN_PATH_R], ${exp_sbindir}) +AC_SUBST([RT_VAR_PATH_R], ${exp_localstatedir}) +AC_SUBST([RT_MAN_PATH_R], ${exp_mandir}) +AC_SUBST([RT_FONT_PATH_R], ${exp_fontdir}) +AC_SUBST([MASON_DATA_PATH_R], ${exp_masonstatedir}) +AC_SUBST([MASON_SESSION_PATH_R], ${exp_sessionstatedir}) +AC_SUBST([MASON_HTML_PATH_R], ${exp_htmldir}) +AC_SUBST([LOCAL_ETC_PATH_R], ${exp_custometcdir}) +AC_SUBST([MASON_LOCAL_HTML_PATH_R], ${exp_customhtmldir}) +AC_SUBST([LOCAL_LEXICON_PATH_R], ${exp_customlexdir}) +AC_SUBST([LOCAL_STATIC_PATH_R], ${exp_customstaticdir}) +AC_SUBST([LOCAL_PLUGIN_PATH_R], ${exp_customplugindir}) +AC_SUBST([LOCAL_LIB_PATH_R], ${exp_customlibdir}) +AC_SUBST([RT_LOG_PATH_R], ${exp_logfiledir}) + +fi + dnl Configure the output files, and generate them. +dnl Binaries that should be +x AC_CONFIG_FILES([ - sbin/rt-setup-database + etc/upgrade/3.8-ical-extension + etc/upgrade/4.0-customfield-checkbox-extension + etc/upgrade/generate-rtaddressregexp + etc/upgrade/sanity-check-stylesheets + etc/upgrade/shrink-cgm-table + etc/upgrade/shrink-transactions-table + etc/upgrade/split-out-cf-categories + etc/upgrade/switch-templates-to + etc/upgrade/time-worked-history + etc/upgrade/upgrade-articles + etc/upgrade/vulnerable-passwords + sbin/rt-attributes-viewer + sbin/rt-session-viewer + sbin/rt-preferences-viewer + sbin/rt-session-viewer + sbin/rt-dump-metadata + sbin/rt-setup-database sbin/rt-test-dependencies + sbin/rt-email-digest + sbin/rt-email-dashboards + sbin/rt-clean-sessions + sbin/rt-shredder + sbin/rt-validator + sbin/rt-validate-aliases + sbin/rt-email-group-admin + sbin/rt-server + sbin/rt-server.fcgi + sbin/standalone_httpd + sbin/rt-setup-fulltext-index + sbin/rt-fulltext-indexer + sbin/rt-serializer + sbin/rt-importer + bin/rt-crontool + bin/rt-mailgate + bin/rt], + [chmod ug+x $ac_file] + ) + +dnl All other generated files +AC_CONFIG_FILES([ Makefile - etc/RT_Config.pm - lib/RT.pm - lib/t/00smoke.t - lib/t/01harness.t - lib/t/02regression.t - lib/t/03web.pl - lib/t/04_send_email.pl - lib/t/05cronsupport.pl - bin/mason_handler.fcgi - bin/mason_handler.scgi - bin/standalone_httpd - bin/mason_handler.svc - bin/rt-crontool - bin/rt-mailgate - bin/rt - bin/webmux.pl] - ) + etc/RT_Config.pm + lib/RT/Generated.pm + t/data/configs/apache2.2+mod_perl.conf + t/data/configs/apache2.2+fastcgi.conf + t/data/configs/apache2.4+mod_perl.conf + t/data/configs/apache2.4+fastcgi.conf], + ) AC_OUTPUT