1 autoconf; exec ./configure $@
3 dnl Process this file with autoconf to produce a configure script
5 dnl Embed in generated ./configure script the following CVS info:
6 AC_REVISION($Revision: 1.4 $)dnl
10 AC_INIT(RT, 3.8.15, [rt-bugs@bestpractical.com])
11 AC_CONFIG_SRCDIR([lib/RT.pm.in])
13 dnl Extract RT version number components
14 AC_SUBST([rt_version_major],
15 m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\1]))
16 AC_SUBST([rt_version_minor],
17 m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\2]))
18 AC_SUBST([rt_version_patch],
19 m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\)\.\(\w+\)\(\.\(\w+\)\)?],[\4]))
20 test "x$rt_version_major" = 'x' && rt_version_major=0
21 test "x$rt_version_minor" = 'x' && rt_version_minor=0
22 test "x$rt_version_patch" = 'x' && rt_version_patch=0
24 dnl Check for programs
27 AC_ARG_VAR([PERL],[Perl interpreter command])
28 AC_PATH_PROG([PERL], [perl], [not found])
29 if test "$PERL" = 'not found'; then
30 AC_MSG_ERROR([cannot use $PACKAGE_NAME without perl])
35 AC_ARG_WITH(web-handler,
36 AC_HELP_STRING([--with-web-handler=LIST],
37 [comma separated list of web-handlers RT will be able to use.
38 Default is fastcgi when modperl1, modperl2, fastcgi, fastcgi-server,
39 and speedycgi are valid. To successfuly run RT you need only one.
44 my_web_handler_test=$($PERL -e 'print "ok" unless grep $_ !~ /^(modperl1|modperl2|fastcgi(?:-server)?|speedycgi|standalone)$/i, grep defined && length, split /\s*,\s*/, $ARGV[0]' $WEB_HANDLER)
45 if test "$my_web_handler_test" != "ok"; then
46 AC_MSG_ERROR([Only modperl1, modperl2, fastcgi, fastcgi-server, speedycgi and standalone are valid web-handlers])
51 AC_ARG_WITH(speedycgi,
52 AC_HELP_STRING([--with-speedycgi=/path/to/speedy],
53 [path to your speedycgi binary, if it exists]),
55 SPEEDY_BIN=/usr/local/bin/speedy)
56 if test "$WEB_HANDLER" = 'speedycgi' -a ! -x "$SPEEDY_BIN"; then
57 AC_MSG_ERROR([cannot find speedycgi binary])
61 dnl Defaults paths for installation
62 AC_PREFIX_DEFAULT([/opt/rt3])
66 # ACRT_USER_EXISTS( users, variable, default )
67 # - users is a list of users [www apache www-docs]
68 # from highest to lowest priority to high priority (i.e. first match)
69 # - variable is what you set with the result
72 AC_DEFUN([ACRT_USER_GUESS],
76 AC_MSG_CHECKING([if user $x exists])
77 AS_IF([ $PERL -e"exit( defined getpwnam('$x') ? 0 : 1)" ],
78 [ AC_MSG_RESULT([found]); $2=$x ; break],
79 [ AC_MSG_RESULT([not found]) ])
82 AC_DEFUN([ACRT_GROUP_GUESS],
86 AC_MSG_CHECKING([if group $x exists])
87 AS_IF([ $PERL -e"exit( defined getgrnam('$x') ? 0 : 1)" ],
88 [ AC_MSG_RESULT([found]); $2=$x ; break],
89 [ AC_MSG_RESULT([not found]) ])
94 AC_ARG_WITH(bin-owner,
95 AC_HELP_STRING([--with-bin-owner=OWNER],
96 [user that will own RT binaries (default root)]),
102 AC_ARG_WITH(libs-owner,
103 AC_HELP_STRING([--with-libs-owner=OWNER],
104 [user that will own RT libraries (default root)]),
110 AC_ARG_WITH(libs-group,
111 AC_HELP_STRING([--with-libs-group=GROUP],
112 [group that will own RT binaries (default bin)]),
119 AC_HELP_STRING([--with-db-type=TYPE],
120 [sort of database RT will use (default: mysql) (mysql, Pg, Oracle and SQLite are valid)]),
123 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
124 AC_MSG_ERROR([Only Oracle, Pg, mysql and SQLite are valid db types])
128 dnl DATABASE_ENV_PREF
129 if test "$DB_TYPE" = 'Oracle'; then
130 test "x$ORACLE_HOME" = 'x' && AC_MSG_ERROR([Please declare the ORACLE_HOME environment variable])
131 DATABASE_ENV_PREF="\$ENV{'ORACLE_HOME'} = '$ORACLE_HOME';"
134 dnl DATABASE_ENV_PREF
135 if test "$DB_TYPE" = 'Sybase'; then
136 test "x$SYBASE" = 'x' && AC_MSG_ERROR([Please declare the SYBASE_HOME environment variable])
137 DATABASE_ENV_PREF="\$ENV{'SYBASE'} = '$SYBASE';"
139 AC_SUBST(DATABASE_ENV_PREF)
143 AC_HELP_STRING([--with-db-host=HOSTNAME],
144 [FQDN of database server (default: localhost)]),
151 AC_HELP_STRING([--with-db-port=PORT],
152 [port on which the database listens on]),
158 AC_ARG_WITH(db-rt-host,
159 AC_HELP_STRING([--with-db-rt-host=HOSTNAME],
160 [FQDN of RT server which talks to the database server (default: localhost)]),
162 DB_RT_HOST=localhost)
165 dnl DB_DATABASE_ADMIN
166 if test "$DB_TYPE" = "Pg" ; then
172 AC_HELP_STRING([--with-db-dba=DBA],
173 [name of database administrator (default: root or postgres)]),
179 AC_ARG_WITH(db-database,
180 AC_HELP_STRING([--with-db-database=DBNAME],
181 [name of the database to use (default: rt3)]),
182 DB_DATABASE=$withval,
184 AC_SUBST(DB_DATABASE)
187 AC_ARG_WITH(db-rt-user,
188 AC_HELP_STRING([--with-db-rt-user=DBUSER],
189 [name of database user (default: rt_user)]),
195 AC_ARG_WITH(db-rt-pass,
196 AC_HELP_STRING([--with-db-rt-pass=PASSWORD],
197 [password for database user (default: rt_pass)]),
203 AC_ARG_WITH(web-user,
204 AC_HELP_STRING([--with-web-user=USER],
205 [user the web server runs as (default: www)]),
207 ACRT_USER_GUESS([www www-data apache httpd nobody],[WEB_USER],[www])
212 AC_ARG_WITH(web-group,
213 AC_HELP_STRING([--with-web-group=GROUP],
214 [group the web server runs as (default: www)]),
216 ACRT_GROUP_GUESS([www www-data apache httpd nogroup nobody],[WEB_GROUP], [www]))
220 AC_ARG_WITH(rt-group,
221 AC_HELP_STRING([--with-rt-group=GROUP],
222 [group to own all files (default: rt)]),
224 ACRT_GROUP_GUESS([rt3 rt $WEB_GROUP],[RTGROUP], [rt]))
228 # XXX TODO: The command below to figure out the group brokenly relies on
229 # output order (and "id -gn" doesn't work on all platforms).
230 my_group=$(groups|cut -f1 -d' ')
231 my_user=${USER:-$LOGNAME}
232 AC_ARG_WITH(my-user-group,
233 AC_HELP_STRING([--with-my-user-group],
234 [set all users and groups to current user/group]),
242 # Test for valid database names
243 AS_IF([ test "$DB_TYPE" = "mysql" ],
244 [ AC_MSG_CHECKING([if database name is valid])
245 AS_IF([ echo $DB_DATABASE | $AWK '/-/ { exit 1 }' ],
246 [ AC_MSG_RESULT([yes]) ],
247 [ AC_MSG_ERROR([no. database name ($DB_DATABASE) contains '-' which is not valid for mysql]) ]
253 dnl Set the value of apachectl
254 AC_ARG_WITH(apachectl,
255 AC_HELP_STRING([--with-apachectl],
256 [instruct RT where to find your apachectl]),
258 APACHECTL=`which apachectl`)
261 dnl RT's "maintainer mode"
262 AC_ARG_WITH(devel-mode,[],RT_DEVEL_MODE=$withval,RT_DEVEL_MODE="0")
263 AC_ARG_ENABLE(devel-mode,
264 AC_HELP_STRING([--enable-devel-mode],
265 [Turn on development aids that might hurt you in production]),
266 RT_DEVEL_MODE=$enableval,
267 RT_DEVEL_MODE=$RT_DEVEL_MODE)
268 if test "$RT_DEVEL_MODE" = yes; then
273 AC_SUBST(RT_DEVEL_MODE)
275 dnl RT's GraphViz dependency charts
276 AC_CHECK_LIB([graph],[aginitlib],RT_GRAPHVIZ="1")
277 AC_ARG_WITH(graphviz,[],RT_GRAPHVIZ=$withval)
278 AC_ARG_ENABLE(graphviz,
279 AC_HELP_STRING([--enable-graphviz],
280 [Turns on support for RT's GraphViz dependency charts]),
281 RT_GRAPHVIZ=$enableval)
282 if test "$RT_GRAPHVIZ" = yes; then
287 AC_SUBST(RT_GRAPHVIZ)
289 dnl RT's GD pie and bar charts
290 AC_CHECK_PROG([RT_GD], [gdlib-config], "yes", "no")
291 AC_ARG_WITH(gd,[],RT_GD=$withval)
293 AC_HELP_STRING([--enable-gd],
294 [Turns on support for RT's GD pie and bar charts]),
296 if test "$RT_GD" = yes; then
304 AC_CHECK_PROG([RT_GPG], [gpg], "yes", "no")
306 AC_HELP_STRING([--enable-gpg],
307 [Turns on GNU Privacy Guard (GPG) support]),
309 if test "$RT_GPG" = yes; then
317 dnl This section maps the variable names this script 'natively' generates
318 dnl to their existing names. They should be removed from here as the .in
319 dnl files are changed to use the new names.
322 AC_SUBST(RT_VERSION_MAJOR, ${rt_version_major})
323 AC_SUBST(RT_VERSION_MINOR, ${rt_version_minor})
324 AC_SUBST(RT_VERSION_PATCH, ${rt_version_patch})
327 AC_SUBST([RT_PATH], ${exp_prefix})
328 AC_SUBST([RT_DOC_PATH], ${exp_manualdir})
329 AC_SUBST([RT_LOCAL_PATH], ${exp_customdir})
330 AC_SUBST([RT_LIB_PATH], ${exp_libdir})
331 AC_SUBST([RT_ETC_PATH], ${exp_sysconfdir})
332 AC_SUBST([CONFIG_FILE_PATH], ${exp_sysconfdir})
333 AC_SUBST([RT_BIN_PATH], ${exp_bindir})
334 AC_SUBST([RT_SBIN_PATH], ${exp_sbindir})
335 AC_SUBST([RT_VAR_PATH], ${exp_localstatedir})
336 AC_SUBST([RT_MAN_PATH], ${exp_mandir})
337 AC_SUBST([RT_FONT_PATH], ${exp_fontdir})
338 AC_SUBST([RT_PLUGIN_PATH], ${exp_plugindir})
339 AC_SUBST([MASON_DATA_PATH], ${exp_masonstatedir})
340 AC_SUBST([MASON_SESSION_PATH], ${exp_sessionstatedir})
341 AC_SUBST([MASON_HTML_PATH], ${exp_htmldir})
342 AC_SUBST([LOCAL_ETC_PATH], ${exp_custometcdir})
343 AC_SUBST([MASON_LOCAL_HTML_PATH], ${exp_customhtmldir})
344 AC_SUBST([LOCAL_LEXICON_PATH], ${exp_customlexdir})
345 AC_SUBST([LOCAL_LIB_PATH], ${exp_customlibdir})
346 AC_SUBST([RT_LOG_PATH], ${exp_logfiledir})
348 if test ${exp_sysconfdir} = "etc"; then
349 AC_SUBST([RT_PATH_R], ${exp_prefix})
350 AC_SUBST([RT_DOC_PATH_R], ${exp_prefix}/${exp_manualdir})
351 AC_SUBST([RT_LOCAL_PATH_R], ${exp_prefix}/${exp_customdir})
352 AC_SUBST([RT_LIB_PATH_R], ${exp_prefix}/${exp_libdir})
353 AC_SUBST([RT_ETC_PATH_R], ${exp_prefix}/${exp_sysconfdir})
354 AC_SUBST([CONFIG_FILE_PATH_R], ${exp_prefix}/${exp_sysconfdir})
355 AC_SUBST([RT_BIN_PATH_R], ${exp_prefix}/${exp_bindir})
356 AC_SUBST([RT_SBIN_PATH_R], ${exp_prefix}/${exp_sbindir})
357 AC_SUBST([RT_VAR_PATH_R], ${exp_prefix}/${exp_localstatedir})
358 AC_SUBST([RT_MAN_PATH_R], ${exp_prefix}/${exp_mandir})
359 AC_SUBST([RT_FONT_PATH_R], ${exp_prefix}/${exp_fontdir})
360 AC_SUBST([RT_PLUGIN_PATH_R], ${exp_prefix}/${exp_plugindir})
361 AC_SUBST([MASON_DATA_PATH_R], ${exp_prefix}/${exp_masonstatedir})
362 AC_SUBST([MASON_SESSION_PATH_R], ${exp_prefix}/${exp_sessionstatedir})
363 AC_SUBST([MASON_HTML_PATH_R], ${exp_prefix}/${exp_htmldir})
364 AC_SUBST([LOCAL_ETC_PATH_R], ${exp_prefix}/${exp_custometcdir})
365 AC_SUBST([MASON_LOCAL_HTML_PATH_R], ${exp_prefix}/${exp_customhtmldir})
366 AC_SUBST([LOCAL_LEXICON_PATH_R], ${exp_prefix}/${exp_customlexdir})
367 AC_SUBST([LOCAL_LIB_PATH_R], ${exp_prefix}/${exp_customlibdir})
368 AC_SUBST([RT_LOG_PATH_R], ${exp_prefix}/${exp_logfiledir})
370 AC_SUBST([RT_PATH_R], ${exp_prefix})
371 AC_SUBST([RT_DOC_PATH_R], ${exp_manualdir})
372 AC_SUBST([RT_LOCAL_PATH_R], ${exp_customdir})
373 AC_SUBST([RT_LIB_PATH_R], ${exp_libdir})
374 AC_SUBST([RT_ETC_PATH_R], ${exp_sysconfdir})
375 AC_SUBST([RT_PLUGIN_PATH_R], ${exp_plugindir})
376 AC_SUBST([CONFIG_FILE_PATH_R], ${exp_sysconfdir})
377 AC_SUBST([RT_BIN_PATH_R], ${exp_bindir})
378 AC_SUBST([RT_SBIN_PATH_R], ${exp_sbindir})
379 AC_SUBST([RT_VAR_PATH_R], ${exp_localstatedir})
380 AC_SUBST([RT_MAN_PATH_R], ${exp_mandir})
381 AC_SUBST([RT_FONT_PATH_R], ${exp_fontdir})
382 AC_SUBST([MASON_DATA_PATH_R], ${exp_masonstatedir})
383 AC_SUBST([MASON_SESSION_PATH_R], ${exp_sessionstatedir})
384 AC_SUBST([MASON_HTML_PATH_R], ${exp_htmldir})
385 AC_SUBST([LOCAL_ETC_PATH_R], ${exp_custometcdir})
386 AC_SUBST([MASON_LOCAL_HTML_PATH_R], ${exp_customhtmldir})
387 AC_SUBST([LOCAL_LEXICON_PATH_R], ${exp_customlexdir})
388 AC_SUBST([LOCAL_LIB_PATH_R], ${exp_customlibdir})
389 AC_SUBST([RT_LOG_PATH_R], ${exp_logfiledir})
393 dnl Configure the output files, and generate them.
395 dnl Binaries that should be +x
397 etc/upgrade/3.8-branded-queues-extension
398 etc/upgrade/3.8-ical-extension
399 etc/upgrade/split-out-cf-categories
400 etc/upgrade/generate-rtaddressregexp
401 etc/upgrade/vulnerable-passwords
402 sbin/rt-attributes-viewer
403 sbin/rt-session-viewer
404 sbin/rt-dump-database
405 sbin/rt-setup-database
406 sbin/rt-test-dependencies
408 sbin/rt-email-dashboards
409 sbin/rt-clean-sessions
412 sbin/rt-email-group-admin
415 bin/mason_handler.fcgi
416 bin/mason_handler.scgi
421 [chmod ug+x $ac_file]
424 dnl All other generated files
429 bin/mason_handler.svc
431 t/data/configs/apache2.2+mod_perl.conf
432 t/data/configs/apache2.2+fastcgi.conf],