aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2014-04-09 20:34:27 +0000
committerRob Austein <sra@hactrn.net>2014-04-09 20:34:27 +0000
commitcbdca1699ea9866131d8e0c9d18028d017f8e227 (patch)
tree844244054c5218696379da5b2a0075ffa870f22a /configure.ac
parent997e067c6252b376edfc7768a0495d3c863dcd33 (diff)
Need to run setup.py for CA too, not just RP. Doh. Many of the old
assumptions in configure.ac were no longer valid, so it was time to refactor big chunks of it. svn path=/branches/tk685/; revision=5774
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac525
1 files changed, 270 insertions, 255 deletions
diff --git a/configure.ac b/configure.ac
index ac67871a..a2a4dc79 100644
--- a/configure.ac
+++ b/configure.ac
@@ -153,109 +153,157 @@ case $enable_runtime_dependencies in
;;
esac
+# Figure out whether we want RP tools, CA tools, or both
+
+AC_MSG_CHECKING([whether user wants the RP tools])
+case $enable_rp_tools in
+ yes|no)
+ build_rp_tools=$enable_rp_tools
+ ;;
+ *)
+ AC_MSG_ERROR([Unrecognized value for --enable-rp-tools: $enable_rp_tools])
+ ;;
+esac
+AC_MSG_RESULT([$build_rp_tools])
+
+AC_MSG_CHECKING([whether user wants the CA tools])
+case $enable_ca_tools in
+ yes|no)
+ build_ca_tools=$enable_ca_tools
+ ;;
+ *)
+ AC_MSG_ERROR([Unrecognized value for --enable-ca-tools: $enable_ca_tools])
+ ;;
+esac
+AC_MSG_RESULT([$build_ca_tools])
+
+if test $build_rp_tools = no && test $build_ca_tools = no
+then
+ AC_MSG_ERROR([Building with neither RP tools nor CA tools makes no sense])
+fi
+
# Figure out whether we need to build our own OpenSSL library or can
# use the system libraries. We're looking for two recent features:
# CMS and RFC 3779 support. We also have to check whether the user
# has an opinion on all this. In the "auto" case (no
# --with-system-openssl option specified in any form), we may need to
# check a platform-specific location (eg, /usr/local on FreeBSD).
+#
+# At this point all of the C code is in the RP tools package, so we can
+# skip all this if we're just building the CA tools.
-old_CFLAGS="$CFLAGS"
-old_LDFLAGS="$LDFLAGS"
+if test $build_rp_tools = no
+then
-case $with_system_openssl in
- yes|auto)
- if test $CFLAGS_or_LDFLAGS_were_set = no
- then
- case $host_os in
- freebsd*)
- CFLAGS="-I/usr/local/include $CFLAGS"
- LDFLAGS="-L/usr/local/lib $LDFLAGS"
- ;;
- esac
- fi
- ;;
- no|/usr)
- :
- ;;
+ build_openssl=no
- *)
- CFLAGS="-I$with_system_openssl/include $CFLAGS"
- LDFLAGS="-L$with_system_openssl/lib $LDFLAGS"
-esac
+else
-case $with_system_openssl in
- no)
- have_usable_openssl=no
- ;;
- *)
- AC_CHECK_LIB([crypto], [v3_addr_validate_path],
- [system_openssl_has_rfc3779=yes],
- [system_openssl_has_rfc3779=no])
+ old_CFLAGS="$CFLAGS"
+ old_LDFLAGS="$LDFLAGS"
+
+ case $with_system_openssl in
+ yes|auto)
+ if test $CFLAGS_or_LDFLAGS_were_set = no
+ then
+ case $host_os in
+ freebsd*)
+ CFLAGS="-I/usr/local/include $CFLAGS"
+ LDFLAGS="-L/usr/local/lib $LDFLAGS"
+ ;;
+ esac
+ fi
+ ;;
+ no|/usr)
+ :
+ ;;
- AC_CHECK_LIB([crypto], [CMS_verify],
- [system_openssl_has_cms=yes],
- [system_openssl_has_cms=no])
+ *)
+ CFLAGS="-I$with_system_openssl/include $CFLAGS"
+ LDFLAGS="-L$with_system_openssl/lib $LDFLAGS"
+ esac
- if test $system_openssl_has_rfc3779 = yes && test $system_openssl_has_cms = yes
- then
- have_usable_openssl=yes
- else
+ case $with_system_openssl in
+ no)
have_usable_openssl=no
- fi
-esac
+ ;;
+ *)
+ AC_CHECK_LIB([crypto], [v3_addr_validate_path],
+ [system_openssl_has_rfc3779=yes],
+ [system_openssl_has_rfc3779=no])
+
+ AC_CHECK_LIB([crypto], [CMS_verify],
+ [system_openssl_has_cms=yes],
+ [system_openssl_has_cms=no])
+
+ AC_MSG_CHECKING([whether system OpenSSL library is usable])
+ if test $system_openssl_has_rfc3779 = yes && test $system_openssl_has_cms = yes
+ then
+ have_usable_openssl=yes
+ else
+ have_usable_openssl=no
+ fi
+ AC_MSG_RESULT([$have_usable_openssl])
+ esac
-case $with_system_openssl in
- yes)
- build_openssl=no
- if test $have_usable_openssl = no
- then
- AC_MSG_ERROR([Can't find OpenSSL crypto library with CMS and RFC 3779 support, try --with-system-openssl=/path/to/openssl])
- fi
- ;;
- no)
- build_openssl=yes
- ;;
- auto)
- if test $have_usable_openssl = no
- then
+ AC_MSG_CHECKING([whether we need to build a private copy of OpenSSL])
+ case $with_system_openssl in
+ yes)
+ build_openssl=no
+ if test $have_usable_openssl = no
+ then
+ AC_MSG_ERROR([Can't find OpenSSL crypto library with CMS and RFC 3779 support, try --with-system-openssl=/path/to/openssl])
+ fi
+ ;;
+ no)
build_openssl=yes
- else
+ ;;
+ auto)
+ if test $have_usable_openssl = no
+ then
+ build_openssl=yes
+ else
+ build_openssl=no
+ fi
+ ;;
+ *)
build_openssl=no
- fi
- ;;
- *)
- build_openssl=no
- if test $have_usable_openssl = no
- then
- AC_MSG_ERROR([Can't find OpenSSL crypto library with CMS and RFC 3779 support in $with_system_openssl])
- fi
-esac
+ if test $have_usable_openssl = no
+ then
+ AC_MSG_ERROR([Can't find OpenSSL crypto library with CMS and RFC 3779 support in $with_system_openssl])
+ fi
+ esac
+ AC_MSG_RESULT([$build_openssl])
-if test $build_openssl = yes
-then
- CFLAGS="$old_CFLAGS"
- LDFLAGS="$old_LDFLAGS"
-fi
+ build_openssl_asm=undefined
-case $enable_openssl_asm in
- yes|no)
- build_openssl_asm=$enable_openssl_asm
- ;;
- auto)
- case $host in
- x86_64-*-linux*)
- build_openssl_asm=no
+ if test $build_openssl = yes
+ then
+ CFLAGS="$old_CFLAGS"
+ LDFLAGS="$old_LDFLAGS"
+
+ AC_MSG_CHECKING([whether to enable assembly code in OpenSSL])
+ case $enable_openssl_asm in
+ yes|no)
+ build_openssl_asm=$enable_openssl_asm
;;
- *)
- build_openssl_asm=yes
+ auto)
+ case $host in
+ x86_64-*-linux*)
+ build_openssl_asm=no
+ ;;
+ *)
+ build_openssl_asm=yes
+ ;;
+ esac
;;
- esac
- ;;
- *)
- AC_MSG_ERROR([Unrecognized value for --enable-openssl-asm: $enable_openssl_asm])
- ;;
-esac
+ *)
+ AC_MSG_ERROR([Unrecognized value for --enable-openssl-asm: $enable_openssl_asm])
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_openssl_asm])
+ fi
+fi
# RCYNIC_DIR is a "precious" argument variable to this script (see
# autoconf doc), which means that autoconf is careful with whatever
@@ -415,6 +463,7 @@ AC_SUBST_FILE(CA_MAKE_RULES)
# Where to put HTML files is similarly platform dependent, we have to know.
# rcynic-cron will skip generating HTML files if it has no place to put them.
+AC_MSG_CHECKING([where rcynic-html output should go])
case $host_os in
freebsd*)
RCYNIC_HTML_DIR="/usr/local/www/apache${APACHE_VERSION}/data/rcynic"
@@ -433,6 +482,7 @@ case $host_os in
RCYNIC_HTML_DIR=''
;;
esac
+AC_MSG_RESULT([$RCYNIC_HTML_DIR])
AC_SUBST(RCYNIC_HTML_DIR)
@@ -464,190 +514,150 @@ AC_SUBST(CA_INSTALL_TARGETS)
# we do have Python, we need to check for required packages and
# versions.
-have_python=no
-have_acceptable_python=no
-have_python_h=no
-have_django=no
-have_acceptable_django=no
-have_lxml=no
-have_mysqldb=no
-have_pyyaml=no
-have_vobject=no
-have_django_south=no
-have_acceptable_django_south=no
-have_argparse=no
-
-if test "x$PYTHON" != "x"
+if test "x$PYTHON" = "x"
then
- have_python=yes
-
- AC_MSG_CHECKING([for Python version 2.6 or higher])
- have_acceptable_python=`$PYTHON -c 'import sys; print "yes" if sys.version_info[[0]] == 2 and sys.version_info[[1]] >= 6 else "no"'`
- AC_MSG_RESULT([$have_acceptable_python])
-
- AC_MSG_CHECKING([distutils to find out where Python.h should be])
- python_h=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc() + "/Python.h"'`
- AC_MSG_RESULT([$python_h])
-
- AC_CHECK_HEADER([$python_h], [have_python_h=yes], [have_python_h=no])
-
- AC_MSG_CHECKING([for lxml.etree])
- if $PYTHON -c 'import lxml.etree' 2>/dev/null
- then
- have_lxml=yes
- fi
- AC_MSG_RESULT([$have_lxml])
-
- AC_MSG_CHECKING([for MySQLdb])
- if $PYTHON -c 'import MySQLdb' 2>/dev/null
- then
- have_mysqldb=yes
- fi
- AC_MSG_RESULT([$have_mysqldb])
+ AC_MSG_ERROR([I can't find a Python binary at all, this isn't going to work. Perhaps you need to set PATH?])
+fi
- AC_MSG_CHECKING([for Django])
- if $PYTHON -c 'import django' 2>/dev/null
- then
- have_django="yes"
- fi
- AC_MSG_RESULT([$have_django])
+AC_MSG_CHECKING([for Python version 2.6 or higher])
+have_acceptable_python=`$PYTHON -c 'import sys; print "yes" if sys.version_info[[0]] == 2 and sys.version_info[[1]] >= 6 else "no"'`
+AC_MSG_RESULT([$have_acceptable_python])
- if test $have_django = yes
- then
- AC_MSG_CHECKING([for Django 1.3.7 or higher])
- have_acceptable_django=`$PYTHON -c "import django; print 'no' if django.VERSION < (1, 3, 7) else 'yes'"`
- AC_MSG_RESULT([$have_acceptable_django])
- fi
+AC_MSG_CHECKING([distutils to find out where Python.h should be])
+python_h=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc() + "/Python.h"'`
+AC_MSG_RESULT([$python_h])
- AC_MSG_CHECKING([for PyYAML])
- if $PYTHON -c 'import yaml' 2>/dev/null
- then
- have_pyyaml=yes
- fi
- AC_MSG_RESULT([$have_pyyaml])
+AC_CHECK_HEADER([$python_h], [have_python_h=yes], [have_python_h=no])
- AC_MSG_CHECKING([for vobject])
- if $PYTHON -c 'import vobject' 2>/dev/null
- then
- have_vobject=yes
- fi
- AC_MSG_RESULT([$have_vobject])
+AC_MSG_CHECKING([for lxml.etree])
+if $PYTHON -c 'import lxml.etree' 2>/dev/null; then have_lxml=yes; else have_lxml=no; fi
+AC_MSG_RESULT([$have_lxml])
- AC_MSG_CHECKING([for Django South])
- if $PYTHON -c 'import south' 2>/dev/null
- then
- have_django_south=yes
- fi
- AC_MSG_RESULT([$have_django_south])
+AC_MSG_CHECKING([for MySQLdb])
+if $PYTHON -c 'import MySQLdb' 2>/dev/null; then have_mysqldb=yes; else have_mysqldb=no; fi
+AC_MSG_RESULT([$have_mysqldb])
- if test $have_django_south = yes
- then
- AC_MSG_CHECKING([for Django South 0.7.5 or later])
- have_acceptable_django_south=`$PYTHON -c "import south; print 'no' if map(int,south.__version__.split('.')) < [[0, 7, 5]] else 'yes'"`
- AC_MSG_RESULT([$have_acceptable_django_south])
- fi
+AC_MSG_CHECKING([for Django])
+if $PYTHON -c 'import django' 2>/dev/null; then have_django=yes; else have_django=no; fi
+AC_MSG_RESULT([$have_django])
- AC_MSG_CHECKING([for argparse])
- if $PYTHON -c 'import argparse' 2>/dev/null
- then
- have_argparse=yes
- fi
- AC_MSG_RESULT([$have_argparse])
+if test $have_django = yes
+then
+ AC_MSG_CHECKING([for Django 1.3.7 or higher])
+ have_acceptable_django=`$PYTHON -c "import django; print 'no' if django.VERSION < (1, 3, 7) else 'yes'"`
+ AC_MSG_RESULT([$have_acceptable_django])
+else
+ have_acceptable_django=no
fi
-ok=yes
+AC_MSG_CHECKING([for PyYAML])
+if $PYTHON -c 'import yaml' 2>/dev/null; then have_pyyaml=yes; else have_pyyaml=no; fi
+AC_MSG_RESULT([$have_pyyaml])
-if test $have_python = no
-then
- ok=no
- AC_MSG_WARN([I can't find a Python binary, perhaps you need to set PATH?])
-fi
+AC_MSG_CHECKING([for vobject])
+if $PYTHON -c 'import vobject' 2>/dev/null; then have_vobject=yes; else have_vobject=no; fi
+AC_MSG_RESULT([$have_vobject])
-if test $have_acceptable_python = no
+AC_MSG_CHECKING([for Django South])
+if $PYTHON -c 'import south' 2>/dev/null; then have_django_south=yes; else have_django_south=no; fi
+AC_MSG_RESULT([$have_django_south])
+
+if test $have_django_south = yes
then
- ok=no
- AC_MSG_WARN([The RPKI code requires Python version 2.x, for x = 6 or higher.])
+ AC_MSG_CHECKING([for Django South 0.7.5 or later])
+ have_acceptable_django_south=`$PYTHON -c "import south; print 'no' if map(int,south.__version__.split('.')) < [[0, 7, 5]] else 'yes'"`
+ AC_MSG_RESULT([$have_acceptable_django_south])
+else
+ have_acceptable_django_south=no
fi
-case $enable_rp_tools in
- yes) build_rp_tools=yes
- ;;
- no) build_rp_tools=no
- ;;
- *) AC_MSG_ERROR([Unrecognized value for --enable-rp-tools: $enable_rp_tools])
- ;;
-esac
+AC_MSG_CHECKING([for argparse])
+if $PYTHON -c 'import argparse' 2>/dev/null; then have_argparse=yes; else have_argparse=no; fi
+AC_MSG_RESULT([$have_argparse])
-case $enable_ca_tools in
- yes) build_ca_tools=yes
- if test $have_python_h = no
- then
- ok=no
- AC_MSG_WARN([I can't find Python.h. Python sources are required to build the CA tools.])
- fi
- if test $have_lxml = no
- then
- ok=no
- AC_MSG_WARN([The RPKI tools require the Python LXML module.])
- fi
- if test $have_acceptable_django = no
- then
- ok=no
- AC_MSG_WARN([The RPKI CA tools require Django 1.3.7 or higher.])
- fi
- if test $have_vobject = no
- then
- ok=no
- AC_MSG_WARN([The RPKI CA GUI requires the Python vobject module.])
- fi
- if test $have_acceptable_django_south = no
- then
- ok=no
- AC_MSG_WARN([The RPKI CA tools require Django South 0.7.5 or higher.])
- fi
- if test $have_argparse = no
- then
- ok=no
- AC_MSG_WARN([The RPKI CA tools require the Python argparse module.])
- fi
- #
- # This should be the last test in this group, so that failures get the --disable-ca-tools warning.
- #
- if test $ok = no
- then
- AC_MSG_WARN([If you do not wish to install the RPKI CA tools, please specify --disable-ca-tools as an argument to this configure script.])
- fi
- ;;
- no) build_ca_tools=no
- ;;
- *) AC_MSG_ERROR([Unrecognized value for --enable-ca-tools: $enable_ca_tools]);;
-esac
+# Warnings and dependency errors. Exit on fatal errors deferred until
+# the very end of this, so we can warn the user about all known
+# problems in a single pass. Errors that prevent build or basic
+# installation are always fatal; errors that prevent proper operation
+# at runtime or during post-installation setup can be converted to
+# warnings by --disable-runtime-dependencies.
-if test $build_ca_tools = yes && test $have_pyyaml = no
-then
- AC_MSG_WARN([PyYAML missing, so "make test" will not work properly.])
-fi
+build_ok=yes
+runtime_ok=yes
-if test "x$XSLTPROC" = "x"
+if test $have_acceptable_python = no
then
- AC_MSG_WARN([xsltproc missing, so "make test" will not work properly.])
+ runtime_ok=no
+ AC_MSG_WARN([The RPKI code requires Python version 2.x, for x = 6 or higher.])
fi
-if test "x$RRDTOOL" = "x"
+if test $build_rp_tools = yes
then
- ok=no
- AC_MSG_WARN([rcynic-html requires rrdtool.])
+ if test $have_python_h = no
+ then
+ build_ok=no
+ AC_MSG_WARN([I can't find Python.h. Python sources are required to build the RP tools.])
+ fi
+ if test "x$RRDTOOL" = "x"
+ then
+ runtime_ok=no
+ AC_MSG_WARN([rcynic-html requires rrdtool.])
+ fi
+ if test $use_rcynic_jail = no && test "X$RSYNC" = "X"
+ then
+ runtime_ok=no
+ AC_MSG_WARN([The RPKI relying party tools require rsync.])
+ fi
fi
-if test $use_rcynic_jail = no && test "X$RSYNC" = "X"
+if test $build_ca_tools = yes
then
- ok=no
- AC_MSG_WARN([The RPKI relying party tools require rsync.])
+ if test $have_lxml = no
+ then
+ runtime_ok=no
+ AC_MSG_WARN([The RPKI tools require the Python LXML module.])
+ fi
+ if test $have_acceptable_django = no
+ then
+ runtime_ok=no
+ AC_MSG_WARN([The RPKI CA tools require Django 1.3.7 or higher.])
+ fi
+ if test $have_vobject = no
+ then
+ runtime_ok=no
+ AC_MSG_WARN([The RPKI CA GUI requires the Python vobject module.])
+ fi
+ if test $have_acceptable_django_south = no
+ then
+ runtime_ok=no
+ AC_MSG_WARN([The RPKI CA tools require Django South 0.7.5 or higher.])
+ fi
+ if test $have_argparse = no
+ then
+ runtime_ok=no
+ AC_MSG_WARN([The RPKI CA tools require the Python argparse module.])
+ fi
+ if test $have_pyyaml = no
+ then
+ AC_MSG_WARN([PyYAML missing, so "make test" will not work properly.])
+ fi
+ if test "x$XSLTPROC" = "x"
+ then
+ AC_MSG_WARN([xsltproc missing, so "make test" will not work properly.])
+ fi
fi
-if test $ok = no
+if test $build_ok = no || test $runtime_ok = no
then
- if test $enable_runtime_dependencies = yes
+ if test $build_rp_tools = yes
+ then
+ AC_MSG_WARN([If you do not wish to install the RPKI RP tools, please specify --disable-rp-tools as an argument to this configure script.])
+ fi
+ if test $build_ca_tools = yes
+ then
+ AC_MSG_WARN([If you do not wish to install the RPKI CA tools, please specify --disable-ca-tools as an argument to this configure script.])
+ fi
+ if test $build_ok = no || test $enable_runtime_dependencies = yes
then
AC_MSG_ERROR([Please correct the problems above then re-run this configuration script.])
else
@@ -750,7 +760,7 @@ else
AC_MSG_RESULT([$WSGI_PYTHON_EGG_CACHE_DIR])
fi
-# Figure out which parts of this package we have to build.
+# Tell the Makefiles and setup.py which parts of this package we've decided to build.
if test $build_openssl = yes; then OPENSSL_TARGET=openssl; else OPENSSL_TARGET=noop; fi
if test $build_rp_tools = yes; then RP_TARGET=rp; else RP_TARGET=noop; fi
@@ -770,7 +780,8 @@ AC_CONFIG_FILES([Makefile
if test $build_openssl = yes
then
- AC_CONFIG_FILES([openssl/Makefile openssl/tests/Makefile])
+ AC_CONFIG_FILES([openssl/Makefile
+ openssl/tests/Makefile])
AC_MSG_CHECKING([what configuration target to use when building OpenSSL])
case $host in
@@ -828,23 +839,27 @@ then
ca/tests/Makefile])
fi
-if test $build_ca_tools = yes &&
- test "X$enable_wsgi_daemon_mode" = "Xyes"
-then
- AC_MSG_ERROR([You must specify the user to run the wsgi process as with --enable-wsgi-daemon-mode=USER])
-fi
-
-if test $build_ca_tools = yes &&
- test "X$enable_wsgi_daemon_mode" != "Xno"
+if test $build_ca_tools = yes
then
- save_IFS="$IFS"
- IFS=':' read user group <<_EOF
+ case $enable_wsgi_daemon_mode in
+ no)
+ ;;
+ yes)
+ AC_MSG_ERROR([You must specify the user to run the wsgi process as with --enable-wsgi-daemon-mode=USER])
+ ;;
+ *)
+ AC_MSG_CHECKING([how to run mod_wsgi daemon mode])
+ save_IFS="$IFS"
+ IFS=':'
+ read user group <<_EOF
$enable_wsgi_daemon_mode
_EOF
- IFS="$save_IFS"
- AC_SUBST(WSGI_DAEMON_PROCESS, "WSGIDaemonProcess rpkigui user=$user ${group:+group=}${group} display-name=%{GROUP}")
- AC_SUBST(WSGI_PROCESS_GROUP, "WSGIProcessGroup rpkigui")
- AC_MSG_RESULT([running mod_wsgi in daemon mode with user "$user" and group "${group:-default}"])
+ IFS="$save_IFS"
+ AC_SUBST(WSGI_DAEMON_PROCESS, "WSGIDaemonProcess rpkigui user=$user ${group:+group=}${group} display-name=%{GROUP}")
+ AC_SUBST(WSGI_PROCESS_GROUP, "WSGIProcessGroup rpkigui")
+ AC_MSG_RESULT([with user "$user" and group "${group:-default}"])
+ ;;
+ esac
fi
# Now that we're finally done with all the conditional changes to