Gordon Sim escribió:
Manuel Teira Paz wrote:
Hello everybody. Finally, I've got some spare time and would be nice to
spend it helping the project a while.
I've seen lots of changes happened, and was trying to put everything in
place again, porting uncommited changes to the trunk, and so on, to have
the solaris port working again.
The first issue I ran into is the way SSL support is intended to be
detected in configure.ac. I'm not sure about the roots of the problem,
but after getting:
checking for infiniband/verbs.h... no
checking rdma/rdma_cma.h usability... no
checking rdma/rdma_cma.h presence... no
checking for rdma/rdma_cma.h... no
./configure: line 25092: syntax error near unexpected token `SSL,'
./configure: line 25092: ` PKG_CHECK_MODULES(SSL,
nspr,,AC_MSG_ERROR([nspr not found]))'
I found that SSL is the only library to be detected using pkgconfig (I
guess I'm missing the macros and hence they're not expanded). While
pkgconfig is shipped (I think) with most of linux flavours, and provides
a helpful way to check for dependencies, that is not the case for other
unix environments. Don't know what happens with windows, I suppose it
doesn't even use this kind of configuration.
Question here is, should we use an homogeneus way to check for
dependencies, like the AC_CHECK_LIB/AC_CHECK_HEADERS , or perhaps allow
the use of pkg-config stuff, but I think that at least, we should
provide an updated list of dependencies for the project to be build.
Certainly the intention is that if you don't have nss/nspr then the
build proceeds but the SSL modules are not built.
The reason I ended up using PKG_CHECK_MODULES was due to the fact that
the nss header files refer to the nspr4 headers without using the full
path under which they were installed (at least on my system). [I dug out
the original patch I created that did not use pkg-config, see blow if
interested]
I'm no expert on autotools, but am happy to go with any suggestions that
work as widely (and cleanly) as possible.
Neither I am, unfortunately. :-(
At least on Ubuntu, the dev packages for nss3 and nspr4 provide a
nss-config and nspr-config executables, returning:
mte...@colossus:~$ nspr-config --cflags
-I/usr/include/nspr
mte...@colossus:~$ nss-config --cflags
-I/usr/include/nss
Does your system packages provide something similar returning the right
path? I think that could be used to configure properly CFLAGS and/or
LIBS before running the AC_CHECK_LIB macro?
Regards.
Index: configure.ac
===================================================================
--- configure.ac (revision 703347)
+++ configure.ac (working copy)
@@ -292,6 +292,50 @@
LIBS=$tmp_LIBS
AM_CONDITIONAL([RDMA], [test x$with_RDMA = xyes])
+# Setup --with-ssl/--without-ssl as arguments to configure
+tmp_LIBS=$LIBS
+AC_ARG_WITH([ssl],
+ [AS_HELP_STRING([--with-ssl], [Build with support for SSL])],
+ [case ${withval} in
+ yes)
+ with_SSL=yes
+ AC_CHECK_LIB([nspr4],[PR_Read],,[AC_MSG_ERROR([libnspr4 not found])])
+ AC_CHECK_LIB([nss3],[NSS_Init],,[AC_MSG_ERROR([libnss3 not found])])
+ AC_CHECK_LIB([ssl3],[SSL_ImportFD],,[AC_MSG_ERROR([libssl3 not
found])])
+ AC_CHECK_HEADERS([nspr4/nspr.h],,[AC_MSG_ERROR([nspr header files
not found])])
+ #TODO: is there a better way to do this? have to include nspr4 in
+ #order for configure to pick up the installed nss headers correctly as
+ #they refer to the nspr headers without the nspr4 prefix:
+ tmp_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS=-I/usr/include/nspr4
+ AC_CHECK_HEADERS([nss3/nss.h nss3/ssl.h],,[AC_MSG_ERROR([nss
header files not found])])
+ CPPFLAGS=$tmp_CPPFLAGS
+ ;;
+ no)
+ with_SSL=no
+ ;;
+ *)
+ AC_MSG_ERROR([Bad value for --with-ssl: ${withval}])
+ ;;
+ esac],
+ [
+ with_SSL=yes
+ AC_CHECK_LIB([nspr4],[PR_Read],,[with_SSL=no])
+ AC_CHECK_LIB([nss3],[NSS_Init],,[with_SSL=no])
+ AC_CHECK_LIB([ssl3],[SSL_ImportFD],,[with_SSL=no])
+ AC_CHECK_HEADERS([nspr4/nspr.h],,[with_SSL=no])
+ #TODO: is there a better way to do this?:
+ tmp_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS=-I/usr/include/nspr4
+ AC_CHECK_HEADERS([nss3/nss.h nss3/ssl.h],,[with_SSL=no])
+ CPPFLAGS=$tmp_CPPFLAGS
+ ]
+)
+# Remove from LIBS, we will link it explicitly in make files.
+LIBS=$tmp_LIBS
+AM_CONDITIONAL([SSL], [test x$with_SSL = xyes])
+
+
poller=no
AC_ARG_WITH([poller],
[AS_HELP_STRING([--with-poller], [The low level poller
implementation: poll/solaris-ecf/epoll])],
Best regards.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]