I had found this problem quite a while ago and had submitted a spec file that fixed the problem at least for me. It seems that when apache2 is compiled with --disable-shared it creates a libtool that has "build_libtool_libs=no" and that is what was causing my problems.
I had added the following to the "install" section: %if "%{with_shared_core}" == "yes" %{l_shtool} subst \ -e 's;^build_libtool_libs=no;build_libtool_libs=yes;' \ $RPM_BUILD_ROOT%{l_prefix}/share/apache2/build/libtool %endif Looking at the apache2.spec in the sources that is still in there. I am able to compile mod_dav_svn, mod_php, mod_suphp, and mod_pubcookie as shared modules with that configuration. It is possible that none of those modules use apxs directly and use %{l_prefix}/share/apache2/build/libtool to build the module instead. I even submitted a bug report to the apache project, because this used to work just fine in apache 1.3.x. I just got a response that said this was by design and that was it. Mark Keller Lead Systems Administrator Portland State University On Wednesday 21 September 2005 7:12, Andreas Schmidt wrote: > Hi openpkg-users, > > while trying to build the apache mod_jk connector for apache2 with > openpkg (the tomcat-adapter in openpkg's current-directory only supports > apache 1.3) it seems that i've found some misconfiguration in the > build-process of openpkg's apache2-package when building with > with_core_so=yes. The resulting apache runs fine, and is able to load > DSO from foreign sources, but i found no way to create a DSO for mod_jk > with the apache's apxs-tool. The created apxs seem's to disallow the > creation of shared-objects. > > After some try-and-error-modifications in apache2.spec i figured out, > that apache's configure-option --disable-shared is responsible for this. > So i removed that option in case of "with_shared_core=yes", and was able > to build mod_jk with the help of the new apxs. To still avoid the > creation of shared modues by default, i now use > --enable-mods-shared=none, when building with with_shared_core=yes. > > Here's the diff to the original apache2.spec: > > 55c55,60 > < %option with_shared_core no > --- > > > %option with_shared_core yes > > > > # if we set with_shared_core, we can specify a list of DSO-modules in > > # single quotes or use one of the predefined special values > > # "none", "all" and "most" > > %option mods_shared none > > 105a111,116 > > > NOTICE2: This is a derived version of the original apache2 package > > of openpkg. It modifies the original configuration to enable > > DSO support for apxs. This is necessary, if you want to build > > DSO-modules > > > with this apache's apxs-instance. > > 209a221,224 > > > --enable-mods-shared=%{mods_shared} \ > > %endif > > %if "%{with_shared_core}" == "no" > > --disable-shared \ > > 218d232 > < --disable-shared \ > > > As you can see, i've added a new build option "mods_shared", that allows > to create some of apaches modules as DSO. But the default remains "none". > > I'm not sure, if what i've done is contrary to openpkg's > avoid-shared-objects strategy, but since the resulting httpd doesn't > contain any DSO, as long as you don't change the default-value of > "mod_shared", the resulting httpd still shouldn't use any shared > objects, unless you add some extra DSO in the httpd.conf. > > > With this apache's apxs, i was able to build the tomcat connector module > mod_jk. For those who need this as well, i add my apache2-mod_jk.spec, > which is based on the tomcat-apache.spec of openpkg's current-directory: > > -------START OF SPEC ------------- > > ## > ## apache2-mod_jk.spec -- OpenPKG RPM Package Specification > ## Copyright (c) 2000-2005 OpenPKG Foundation e.V. <http://openpkg.net/> > ## Copyright (c) 2000-2005 Ralf S. Engelschall <http://engelschall.com/> > ## > ## Permission to use, copy, modify, and distribute this software for > ## any purpose with or without fee is hereby granted, provided that > ## the above copyright notice and this permission notice appear in all > ## copies. > ## > ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED > ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF > ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. > ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR > ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF > ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND > ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, > ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT > ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > ## SUCH DAMAGE. > ## > > # package information > Name: apache2-mod_jk > Summary: Apache Jakarta Tomcat Webserver Adapter > URL: http://jakarta.apache.org/ > Vendor: Apache Software Foundation > Packager: OpenPKG > Distribution: OpenPKG > Class: EVAL > Group: Web > License: Apache Software License 1.1 > Version: 1.2.14 > Release: 20050921 > > # package options > > # list of sources > Source0: > http://www.apache.org/dist/jakarta/tomcat-connectors/jk/source/jk-%{version >}/jakarta-tomcat-connectors-%{version}.1-src.tar.gz Source1: > apache2-mod_jk.conf > > # build information > Prefix: %{l_prefix} > BuildRoot: %{l_buildroot} > BuildPreReq: OpenPKG, openpkg >= 20040130, perl, gcc, make > PreReq: OpenPKG, openpkg >= 20040130 > BuildPreReq: apache2so > PreReq: apache2so > AutoReq: no > AutoReqProv: no > > %description > Apache Jakarta Tomcat webserver adapter mod_jk is a glue code > between the > Apache HTTP server and Apache Tomcat. This package contains the > mod_jk connector for Apache 2 only. > > %track > prog tomcat-adapter = { > version = %{version} > url = > http://www.apache.org/dist/jakarta/tomcat-connectors/jk/source/ > regex = (jk-\d+\.\d+\.\d+) > url = > http://www.apache.org/dist/jakarta/tomcat-connectors/jk/source/__NEWVER__/ > regex = jakarta-tomcat-connectors-(__VER__)-src\.tar\.gz > } > > %prep > %setup -q -n jakarta-tomcat-connectors-%{version}.1-src > > %build > ( cd jk/native > export CC="%{l_cc}" > export CFLAGS="%{l_cflags -O}" > export CPPFLAGS="%{l_cppflags}" > export LDFLAGS="%{l_ldflags}" > ./configure \ > --prefix=%{l_prefix} \ > --with-apxs=%{l_prefix}/sbin/apxs > %{l_make} %{l_mflags} LIBTOOL=$PWD/libtool > ) || exit $? > > %install > rm -rf $RPM_BUILD_ROOT > > # create installation tree > %{l_shtool} mkdir -f -p -m 755 \ > $RPM_BUILD_ROOT%{l_prefix}/etc/apache2-mod_jk \ > $RPM_BUILD_ROOT%{l_prefix}/libexec/apache2-mod_jk \ > $RPM_BUILD_ROOT%{l_prefix}/var/apache2-mod_jk > > # install config > %{l_shtool} install -c -m 644 %{l_value -s -a} \ > %{SOURCE apache2-mod_jk.conf} \ > $RPM_BUILD_ROOT%{l_prefix}/etc/apache2-mod_jk/ > > # install mod_jk DSO > %{l_shtool} install -c -m 755 \ > jk/native/apache-2.0/mod_jk.so \ > $RPM_BUILD_ROOT%{l_prefix}/libexec/apache2-mod_jk/mod_jk.so > > # determine installation files > %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ > %{l_files_std} \ > '%config %{l_prefix}/etc/apache2-mod_jk/*' > > %files -f files > > %clean > rm -rf $RPM_BUILD_ROOT > > ------- END OF SPEC ------------- > > my changes to the original spec-file were: > - change the package-name to apache2-mod_jk > - use just the connector-package from apache, not the whole tomcat-package. > - set the same compiler/linker-environment as in apache2.spec before the > configure-call. without got some error-messages saying something about > "tagged versions". i didn't understand this at all, but some > code-sniffing and try-and-error lead to this solution. > - remove the apache-1.3-specific build-code > - remove the not needed dependencies > - change the dependency from apache to apache2so, which is the name i > gave my modified apache2-package. in case of my changes would become > part of the openpkg-apache2-package, it would be necessary to ensure > that the apache2 was build with "with_shared_core=yes". > > I was also able to build an apache2 with static linked mod_jk -- > unfortunately not as an openpkg-rpm. For this, it was necessary to: > 1. build apache2 > 2. build mod_jk and modifiy apache2-source-tree > 3. rebuild apache2 > Since I didn't see a way, how to do this in a package external to the > core apache2-package, i preferred the solution with the DSO. On the > other hand, if mod_jk would be an build-option of apache2-package this > would allow allow a smoother integration of the mod_jk-configuration. > but this was to complicated for my basic understanding of rpm.spec-files. > > > I have to admit, that I don't understand deeply, what i did here (i'm > still an openpkg novice, and not a specialist in unix-build-prcesses at > all), and most of it is the result of try-and-error. But maybe it helps > some other openpkg-guru to build a correct package for apache2 with > mod_jk-support. > Since i don't know how to configure and use the %track-section in the > spec file, you should give it a close look, in case you want to use it. > > > Hope that helps others, who, like me, try to use apache2/java/tomcat in > an openpkg environment. > > andi > > ______________________________________________________________________ > The OpenPKG Project www.openpkg.org > User Communication List openpkg-users@openpkg.org ______________________________________________________________________ The OpenPKG Project www.openpkg.org User Communication List openpkg-users@openpkg.org