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

Reply via email to