Re: apr-util v1.7: request for more testing

Rainer Jung <[email protected]> Tue, 25 Mar 2025 15:03:36 +0100
Newsgroups gmane.comp.apache.apr.devel
Message-ID <[email protected]>
Am 20.03.25 um 22:52 schrieb Graham Leggett via dev:
> On 20 Mar 2025, at 16:12, Rainer Jung <[email protected]> wrote:
> 
>> Am 20.03.25 um 16:34 schrieb Graham Leggett via dev:
>>> On 20 Mar 2025, at 15:08, Graham Leggett <[email protected]> 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