it seems, that i've had been confused with the various build options.
finally i had to figure out, that there is no problem at all with
apache2/apxs building mod_jk, as long as you use
apache::with_shared_core=yes, so that apache's libtool gets fixed.

so, there's no need to change anything in apache2.spec. more than that:
my solution with the "--enable-mods-shared"-options has serious problems
(access violation at httpd-startup) when mod_ssl is enabled. so just
keep apache2.spec just as it was, and forget my writings.

sorry for that confusion.

to build mod_jk as shared module, you can use the spec-file from my last
mail, when you substitute the following apache2-preconditions with

BuildPreReq:  apache2, apache2::with_shared_core = yes
PreReq:       apache2, apache2::with_shared_core = yes

now that apache2/mod_jk runs, i want to enable apr-usage for tomcat.

for that i want to build a package for tomcat-native.tar.gz. from
http://archive.apache.org/dist/jakarta/tomcat-connectors/jni.

has anyone done that before? when i call the package's configure-script,
it says:

configure: error: APR could not be located. Please use the --with-apr
option.

when i let --with-apr point to my apache2's apr-config, "configure" and
"make" runs fine, but "make installs" says:

make: /opt/tkintern/local/PKG/tomcat-native/include/apr-1: Command not found

any ideas, how to get apache2's apr into my openpkg-environment?

thanks,
        andi

Mark Keller schrieb:

> 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
> 
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
User Communication List                      openpkg-users@openpkg.org

Reply via email to