2 Replies Latest reply on Aug 7, 2013 5:51 AM by marcodanti

    Cannot build mod_cluster-1.2.0 against httpd-2.4.6

    marcodanti

      Hi everybody,

      I just joined the community because of a build problem I am unable to solve. I haven't found any refernce to similar problems in the community forums, so I guess/hope it may just be some misunderstanding on my part.

       

      I have successfully built httpd-2.4.6 from sources on my system (SLES 11-SP1 x86_64), using the following configuration:

       

      ./configure  --prefix=/opt/apache-2.4.6 \

                   --with-mpm=worker \

                   --with-included-apr \

                   --enable-mpms-shared=all \

                   --enable-mods-shared=most \

                   --with-expat=builtin \

                   --enable-ssl \

                   --enable-proxy \

                   --disable-proxy-balancer \

                   --disable-slotmem-shm \

                   --disable-heartmonitor \

                   --disable-heartbeat \

                   --disable-lbmethod-heartbeat \

                   --disable-lbmethod-heartmonitor

       

       

      Now I wanted to build mod_cluster-1.2.0.Final from sources as well.

       

      The same operation worked perfectly well on a different machine where I have httpd-2.2.24 (where the .configure is just the same except the last 5 lines) and mod_cluster-1.2.0.Final.

       

      The problem I run into when trying to build mod_cluster-1.2.0.Final against httpd-2.4.6 is the following:

       

      > cd mod_cluster-1.2.0.Final-src-ssl/

      > cd srclib/mod_cluster/native/mod_manager

      > ./buildconf

      > ./configure --with-apxs=/opt/apache-2.4.6/bin/apxs

      checking for Apache httpd installation... APXS is /opt/apache-2.4.6/bin/apxs

      apxs_support is true

      configure: creating ./config.status

      config.status: creating Makefile

      > make

      /opt/apache-2.4.6/build/libtool --silent --mode=compile gcc -std=gnu99  -g -O2 -pthread      -DLINUX -D_REENTRANT -D_GNU_SOURCE     -I/opt/apache-2.4.6/include -I. -I/home/marco/src/httpd-2.4.6/srclib/apr/include -I/home/marco/src/httpd-2.4.6/srclib/apr-util/include -I/home/marco/src/httpd-2.4.6/srclib/apr-util/xml/expat/lib -I/usr/local/include -I../include -prefer-pic -c mod_manager.c && touch mod_manager.slo

      In file included from mod_manager.c:48:

      ../include/node.h:155: error: expected declaration specifiers or '...' before 'slotmem_storage_method'

      ../include/node.h:164: error: expected declaration specifiers or '...' before 'slotmem_storage_method'

      In file included from mod_manager.c:49:

      ../include/host.h:116: error: expected declaration specifiers or '...' before 'slotmem_storage_method'

      ../include/host.h:125: error: expected declaration specifiers or '...' before 'slotmem_storage_method'

       

      ... more errors removed ...

       

      make: *** [mod_manager.slo] Error 1

      >

       

      First problem i see: two sources define same preprocessor guard (this causes the error reported above)

       

      > grep SLOTMEM_H ../include/*

      ../include/slotmem.h:#ifndef SLOTMEM_H

      ../include/slotmem.h:#define SLOTMEM_H

      ../include/slotmem.h:#endif /*SLOTMEM_H*/

       

       

      > grep SLOTMEM_H /opt/apache-2.4.6/include/*

      /opt/apache-2.4.6/include/ap_slotmem.h:#ifndef SLOTMEM_H

      /opt/apache-2.4.6/include/ap_slotmem.h:#define SLOTMEM_H

       

      Second problem: redefinition of symbols

       

      /opt/apache-2.4.6/include/ap_slotmem.h defines

       

           typedef apr_status_t ap_slotmem_callback_fn_t(void* mem, void *data, apr_pool_t *pool);

       

      but in mod_cluster-1.2.0.Final-src-ssl/srclib/mod_cluster/native/include/slotmem.h the same symbol is redefined differently

       

          typedef apr_status_t ap_slotmem_callback_fn_t(void* mem, void **data, int ident, apr_pool_t *pool);

       

      and possibly other similar problems.

       

      So this makes it impossible for me to build mod_cluster-1.2 against httpd-2.4. My understanding is that there are conflicts between mod_cluster and APR, but I am not sure how to go about it.

       

      Has anyone been able to build mod_cluster-1.2.0 against httpd-2.4.6 ?

       

      Thanks,

      Marco