Am 20.03.25 um 22:52 schrieb Graham Leggett via dev:
On 20 Mar 2025, at 16:12, Rainer Jung <rainer.j...@kippdata.de> wrote:
Am 20.03.25 um 16:34 schrieb Graham Leggett via dev:
On 20 Mar 2025, at 15:08, Graham Leggett <minf...@sharp.fm> wrote:
...
To sum up:
- httpd-trunk + apr-trunk - old API and new API will not build by definition.
- httpd-trunk + apr-trunk + https://github.com/apache/httpd/pull/438:
<https://github.com/apache/httpd/pull/438:> new API and new API will build
- httpd-trunk + apr-util-1.7: old API and old+new API will build
- httpd-trunk + apr-util-1.7 + https://github.com/apache/httpd/pull/438
<https://github.com/apache/httpd/pull/438:>: new API and old+new API will build
What about httpd 2.4.x and apt-util 1.7.x?
httpd v2.4.x is identical to httpd-trunk. Everything in httpd-trunk has been
backported to v2.4, so it's all the same code. Replace httpd-trunk with
httpd-2.4.x and you get the same matrix above.
I use this in production using apr-util v1.7 + httpd 2.4.63 at the moment. The
end goal is I get full SASL support, specifically EXTERNAL over unix domain
sockets, and it works great.
I tried compiling httpd 2.4.63 against apr-util 1.7.x head. It fails
during compilation of the generated exports.c.
exports.c contains
...
#include "apr_ldap_common.h"
#include "apr_ldap.h"
#include "apr_ldap_init.h"
#include "apr_ldap_option.h"
#include "apr_ldap_rebind.h"
#include "apr_ldap_url.h"
...
but apr_ldap.h must be included first. The order above comes from
server/export_files, which in turn is generated by server/Makefile.
There the list of header files is sorted using "sort".
With LANG=en_US.UTF-8 (as in my case) sort seems to make no distinction
between "." and "_", so "common.h" comes before "h" and the other files.
With LANG=X or POSIX, the order is the one we need. It seems we have to
fix this.
Another small problem: compiling apr-util 1.7.x with ldap is broken an
SLES 11 and RHEL 6. They use old compilers and do not allow (compatible)
redefinition of structs. So the compilation fails with:
/bin/bash /path/to/my/libtool --silent --mode=compile --tag=CC gcc ...
-o ldap/apr_ldap.lo -c /path/to/my/ldap/apr_ldap.c && touch ldap/apr_ldap.lo
/path/to/my/ldap/apr_ldap.c:91: error: redefinition of typedef 'apr_ldap_t'
/path/to/my/include/apr_ldap_common.h:172: error: previous declaration
of 'apr_ldap_t' was here
make[1]: *** [ldap/apr_ldap.lo] Error 1
Best regards,
Rainer