Re: problem with build on AIX 6.1
Rainer Jung wrote: On 06.10.2009 20:01, Michael Felt wrote: Hello all, I am trying to get a build made on AIX 6.1. And I suspect the problem I am having is the root cause of the problems people are reporting regarding can't make .so files when using AIX 6.1 (p.s. the quick fix is to compile on AIX 5.3, it runs fine on AIX 6.1) Standard process: unpack archive, ./configure --prefix=/usr/local/apache2 \ --enable-module=so \ --enable-module=unique_id \ --enable-module=usertrack \ --enable-module=vhost_alias \ --enable-rewrite=shared \ --enable-speling=shared \ --enable-digest=shared \ --enable-cgi=shared \ --enable-headers=shared \ --enable-info=shared \ --enable-log_forensic=shared \ --enable-proxy=shared \ --enable-proxy-connect=shared \ --enable-proxy-ftp=shared \ --enable-proxy-http=shared \ --enable-proxy-ajp=shared \ --enable-proxy-balancer=shared \ --with-z=/data/prj/zlib-1.2.3 make On AIX5.3 I have as result, among others: # find modules -name '*.so' modules/generators/.libs/mod_info.so modules/generators/.libs/mod_cgi.so modules/loggers/.libs/mod_log_forensic.so modules/mappers/.libs/mod_speling.so modules/mappers/.libs/mod_rewrite.so modules/metadata/.libs/mod_headers.so modules/proxy/.libs/mod_proxy.so modules/proxy/.libs/mod_proxy_connect.so modules/proxy/.libs/mod_proxy_ftp.so modules/proxy/.libs/mod_proxy_http.so modules/proxy/.libs/mod_proxy_scgi.so modules/proxy/.libs/mod_proxy_ajp.so modules/proxy/.libs/mod_proxy_balancer.so = And... # find modules -name '*.slo' modules/generators/mod_cgi.slo modules/generators/mod_info.slo modules/loggers/mod_log_forensic.slo modules/mappers/mod_rewrite.slo modules/mappers/mod_speling.slo modules/metadata/mod_headers.slo modules/proxy/mod_proxy.slo modules/proxy/ajp_header.slo modules/proxy/mod_proxy_connect.slo modules/proxy/mod_proxy_scgi.slo modules/proxy/mod_proxy_ftp.slo modules/proxy/ajp_utils.slo modules/proxy/mod_proxy_ajp.slo modules/proxy/proxy_util.slo modules/proxy/ajp_msg.slo modules/proxy/ajp_link.slo modules/proxy/mod_proxy_http.slo modules/proxy/mod_proxy_balancer.slo ++ On AIX 6.1 I have: mich...@x054:[/data/prj/httpd-2.2.14]find modules -name '*.so' = mich...@x054:[/data/prj/httpd-2.2.14]find modules -name '*.slo' modules/generators/mod_info.slo modules/generators/mod_cgi.slo modules/loggers/mod_log_forensic.slo modules/mappers/mod_speling.slo modules/mappers/mod_rewrite.slo modules/metadata/mod_headers.slo modules/proxy/mod_proxy.slo modules/proxy/proxy_util.slo modules/proxy/mod_proxy_connect.slo modules/proxy/mod_proxy_ftp.slo modules/proxy/mod_proxy_http.slo modules/proxy/mod_proxy_scgi.slo modules/proxy/mod_proxy_ajp.slo modules/proxy/ajp_header.slo modules/proxy/ajp_link.slo modules/proxy/ajp_msg.slo modules/proxy/ajp_utils.slo modules/proxy/mod_proxy_balancer.slo Suspecting it was libtool I downloaded, built and installed libtool 2.2.6a and Python 2.6.3, ope did the following: make distclean ./buildconf ./configure *** as above make = make ends with: Making all in srclib make[1]: Entering directory `/data/prj/http-2.2.14.bad/srclib' Making all in apr make[2]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr' make[3]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr' make[3]: Nothing to be done for `local-all'. make[3]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr' make[2]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr' Making all in apr-util make[2]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr-util' make[2]: *** No rule to make target `all'. Stop. make[2]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr-util' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/data/prj/http-2.2.14.bad/srclib' make: *** [all-recursive] Error 1 mich...@x054:[/data/prj/http-2.2.14.bad] Attached: the config.log from each directory/system AIX 5.3 TL07, xlc v7 patched to July 2009 AIX 6.1 : 6100-03-01-0921 (TL 03), same compiler. I wouldn't use libtool 2. So lets assume you have autoconf 2.64 and libtool 1.5.26. I assume both tools are in your PATH and correctly installed. Running buildconf for httpd 2.2.14 on my system (not AIX, it's Solaris) gives: % ./buildconf found apr source: srclib/apr found apr-util source: srclib/apr-util rebuilding srclib/apr/configure buildconf: checking installation... buildconf: python version 2.5.1 (ok) buildconf: autoconf version 2.64 (ok) buildconf: libtool version 1.5.26 (ok) Copying libtool helper files ... buildconf: Using libtool.m4 at /some/path/share/aclocal/libtool.m4. Creating include/arch/unix/apr_private.h.in ... Creating configure ... Generating 'make' outputs ... rebuilding rpm spec file rebuilding srclib/apr-util/configure Looking for apr source in /test/httpd-2.2.14.buildconf/srclib/apr Creating include/private/apu_config.h ... Creating configure ... Generating 'make' outputs ... Invoking
[VOTE] release httpd mod_fcgid-2.3.3?
Even quicker on the heels of the abortive attempt to release mod_fcgid 2.3.2, we have another candidate for your consideration, with many, many improvements to docs and directive names! Please fetch up the newly minted mod_fcgid-2.3.3.tar.gz (or bz2) or the win32/netware suitable package mod_fcgid-2.3.3-crlf.zip from: http://httpd.apache.org/dev/dist/mod_fcgid/ review, take it for a spin, and cast your choice [ ] -1 for any release of 2.3.3 (regressed from 2.3.1?) [ ] +1 to release as 2.3.3-beta [ ] +1 to release as 2.3.3-GA For getting started, http://svn.apache.org/repos/asf/httpd/mod_fcgid/tags/2.3.3/README-FCGID
Re: problem with build on AIX 6.1
On Tue, 6 Oct 2009, Michael Felt wrote: I don't have an AIX system at hand at the moment, but last time I build on AIX 6.1 I was astonished, that they used .a as a suffix for shared libs. They have two types of shared libs, depending on when symbol resolution is done. snip btw: I believe AIX documentation says they use .so for shared objects, but also support .a as a shared object archive. And of course, the docs I found are on my other computer - that I cannot access at the moment. As I get further I'll be working on a FAQ for http://www.rootvg.net (I am webmaster there, and I am working on this build for that portal.) btw - my other goal is to build a binary distrubtion for AIX and publish it via rootvg.net. AIX uses COFF, and thus behaves differently than most ELF-based unix dialects out there. Default for AIX is to use .a for all kinds of libs IIRC. .so is used when you have compiled with -brtl to do runtime symbol resolution ELF-style (ie, satisfying dependencies of linked-in libraries can be done by linking your main binary with the missing library). Hmm, man ld has some ramblings about dynamic vs shared mode too, so see that manpage for the complete picture. In any case, this hasn't changed between AIX5 and AIX6, so a fresh AIX6-aware libtool should be all that's needed. /Nikke -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Niklas Edmundsson, Admin @ {acc,hpc2n}.umu.se | ni...@acc.umu.se --- Dangerous Job #?: Klingon Dentist =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Re: [VOTE] release httpd mod_fcgid-2.3.3?
On Wed, Oct 7, 2009 at 5:51 AM, William A. Rowe, Jr. wr...@rowe-clan.net wrote: Even quicker on the heels of the abortive attempt to release mod_fcgid 2.3.2, we have another candidate for your consideration, with many, many improvements to docs and directive names! Please fetch up the newly minted mod_fcgid-2.3.3.tar.gz (or bz2) or the win32/netware suitable package mod_fcgid-2.3.3-crlf.zip from: http://httpd.apache.org/dev/dist/mod_fcgid/ build failure on at least OpenSolaris and Linux: for i in /export/home/trawick/inst/22/conf/httpd.conf /export/home/trawick/inst/22/conf/original/httpd.conf; do \ if test -f $i; then ( sh: syntax error at line 2: `(' unmatched fixed in svn
Re: svn commit: r822670 - /httpd/mod_fcgid/trunk/Makefile.apxs
traw...@apache.org wrote: Author: trawick Date: Wed Oct 7 11:29:52 2009 New Revision: 822670 URL: http://svn.apache.org/viewvc?rev=822670view=rev Log: fix make install syntax error on at least OpenSolaris and Linux Modified: httpd/mod_fcgid/trunk/Makefile.apxs Modified: httpd/mod_fcgid/trunk/Makefile.apxs URL: http://svn.apache.org/viewvc/httpd/mod_fcgid/trunk/Makefile.apxs?rev=822670r1=822669r2=822670view=diff == --- httpd/mod_fcgid/trunk/Makefile.apxs (original) +++ httpd/mod_fcgid/trunk/Makefile.apxs Wed Oct 7 11:29:52 2009 @@ -42,14 +42,14 @@ @$(MKINSTALLDIRS) $(DESTDIR)$(exp_sysconfdir) \ $(DESTDIR)$(exp_sysconfdir)/original for i in $(DESTDIR)$(httpd_conffile) $(DESTDIR)$(httpd_origconffile); do \ - if test -f $$i; then ( + if test -f $$i; then \ Wasn't this a simple matter of the missing trailing backslash on the line above? awk -f $(fcgid_srcdir)/build/addloadexample.awk \ -v MODULE=fcgid -v DSO=.so -v LIBPATH=$(rel_libexecdir) \ -v EXAMPLECONF=$(rel_sysconfdir)/extra/httpd-fcgid.conf \ $$i $$i.new \ - mv $$i $$i.bak mv $$i.new $$i \ - ) \ - fi; + mv $$i $$i.bak mv $$i.new $$i; \ + fi; \ + done install-conf-unused: @$(MKINSTALLDIRS) $(DESTDIR)$(exp_sysconfdir)/extra \
Re: svn commit: r822670 - /httpd/mod_fcgid/trunk/Makefile.apxs
On Wed, Oct 7, 2009 at 7:45 AM, William A. Rowe, Jr. wr...@rowe-clan.net wrote: traw...@apache.org wrote: Author: trawick Date: Wed Oct 7 11:29:52 2009 New Revision: 822670 URL: http://svn.apache.org/viewvc?rev=822670view=rev Log: fix make install syntax error on at least OpenSolaris and Linux Modified: httpd/mod_fcgid/trunk/Makefile.apxs Modified: httpd/mod_fcgid/trunk/Makefile.apxs URL: http://svn.apache.org/viewvc/httpd/mod_fcgid/trunk/Makefile.apxs?rev=822670r1=822669r2=822670view=diff == --- httpd/mod_fcgid/trunk/Makefile.apxs (original) +++ httpd/mod_fcgid/trunk/Makefile.apxs Wed Oct 7 11:29:52 2009 @@ -42,14 +42,14 @@ @$(MKINSTALLDIRS) $(DESTDIR)$(exp_sysconfdir) \ $(DESTDIR)$(exp_sysconfdir)/original for i in $(DESTDIR)$(httpd_conffile) $(DESTDIR)$(httpd_origconffile); do \ - if test -f $$i; then ( + if test -f $$i; then \ Wasn't this a simple matter of the missing trailing backslash on the line above? As far as repairing, I switched to the syntax used elsewhere in the makefile. But I'll try the other syntax very shortly.
Re: svn commit: r822670 - /httpd/mod_fcgid/trunk/Makefile.apxs
Jeff Trawick wrote: As far as repairing, I switched to the syntax used elsewhere in the makefile. But I'll try the other syntax very shortly. IIRC that syntax was selected to avert the makefile from aborting in case of failure. As it now stands, we check the file existence. But that doesn't mean this can't fail due to permissions, etc.
Re: svn commit: r822670 - /httpd/mod_fcgid/trunk/Makefile.apxs
On Wed, Oct 7, 2009 at 8:04 AM, William A. Rowe, Jr. wr...@rowe-clan.net wrote: Jeff Trawick wrote: As far as repairing, I switched to the syntax used elsewhere in the makefile. But I'll try the other syntax very shortly. IIRC that syntax was selected to avert the makefile from aborting in case of failure. Is this a valid test? (sorry, in the middle of getting the 10 YO off to school) $ if test -f Makefile.apxs; then ls /not/home; fi ls: cannot access /not/home: No such file or directory $ echo $? 2 $ if test -f Makefile.apxs; then ( ls /not/home ); fi ls: cannot access /not/home: No such file or directory $ echo $? 2 As it now stands, we check the file existence. But that doesn't mean this can't fail due to permissions, etc.
Re: svn commit: r822670 - /httpd/mod_fcgid/trunk/Makefile.apxs
Jeff Trawick wrote: On Wed, Oct 7, 2009 at 8:04 AM, William A. Rowe, Jr. wr...@rowe-clan.net wrote: Jeff Trawick wrote: As far as repairing, I switched to the syntax used elsewhere in the makefile. But I'll try the other syntax very shortly. IIRC that syntax was selected to avert the makefile from aborting in case of failure. Is this a valid test? (sorry, in the middle of getting the 10 YO off to school) We don't want the non-valid result code to kill the build in this case. The syntax takes care of avoiding further complications, and it should just plug on.
Re: svn commit: r822670 - /httpd/mod_fcgid/trunk/Makefile.apxs
On Wed, Oct 7, 2009 at 8:26 AM, William A. Rowe, Jr. wr...@rowe-clan.net wrote: Jeff Trawick wrote: On Wed, Oct 7, 2009 at 8:04 AM, William A. Rowe, Jr. wr...@rowe-clan.net wrote: Jeff Trawick wrote: As far as repairing, I switched to the syntax used elsewhere in the makefile. But I'll try the other syntax very shortly. IIRC that syntax was selected to avert the makefile from aborting in case of failure. Is this a valid test? (sorry, in the middle of getting the 10 YO off to school) We don't want the non-valid result code to kill the build in this case. The syntax takes care of avoiding further complications, and it should just plug on. Let me play stupid here... The syntax says don't rename files (.bak, .new) unless the edit worked. It won't just plug on because () doesn't ignore errors. Simple example, with proper syntax: $ cat Makefile all: for i in .bashrc .emacs; do \ echo $$i; \ if test -f $$i; then ( \ cp $$i /tmp/a/b/c true; \ ) fi; \ done $ make for i in .bashrc .emacs; do \ echo $i; \ if test -f $i; then ( \ cp $i /tmp/a/b/c; \ ) fi; \ done .bashrc cp: cannot create regular file `/tmp/a/b/c': No such file or directory *** Error code 1 make: Fatal error: Command failed for target `all' I guess this is what you're looking for? $ cat Makefile2 all: for i in .bashrc .emacs; do \ echo $$i; \ if test -f $$i; then \ (cp $$i /tmp/a/b/c ls /tmp/a/b/c) || true; \ fi; \ done $ make -f Makefile2 for i in .bashrc .emacs; do \ echo $i; \ if test -f $i; then \ (cp $i /tmp/a/b/c ls /tmp/a/b/c) || true; \ fi; \ done .bashrc cp: cannot create regular file `/tmp/a/b/c': No such file or directory .emacs cp: cannot create regular file `/tmp/a/b/c': No such file or directory $ echo $? 0
Re: svn commit: r822670 - /httpd/mod_fcgid/trunk/Makefile.apxs
Jeff Trawick wrote: I guess this is what you're looking for? Thanks Jeff, that works for me.
Re: svn commit: r822734 - /httpd/mod_fcgid/trunk/Makefile.apxs
On Wed, Oct 7, 2009 at 9:37 AM, traw...@apache.org wrote: Author: trawick Date: Wed Oct 7 13:37:09 2009 New Revision: 822734 URL: http://svn.apache.org/viewvc?rev=822734view=rev Log: fix syntax error in make install as was intended previously, errors modifying conf files are not fatal, as seen in the following example: works for me on OpenSolaris 2009.06, Ubuntu 8.10, Leopard-latest
Re: svn commit: r822094 - /httpd/mod_fcgid/trunk/modules/fcgid/fcgid_conf.c
Jeff Trawick wrote: FCGIDOutputBufferSize - FCGIDResponseBufferSize FCGIDBusyTimeout - FCGIDRequestTimeout FCGIDBusyScanInterval - FCGIDRequestTimeoutScanInterval (unfortunate name for unfortunate concept) Hmm ... can't say I have any opinion on those, really. I suppose Response is somewhat more specific than Output. If we're thinking about axing or replacing the busy scan at some point, maybe we should just leave those two named as-is? Chris. -- GPG Key ID: 366A375B GPG Key Fingerprint: 485E 5041 17E1 E2BB C263 E4DE C8E3 FA36 366A 375B
Re: svn commit: r822094 - /httpd/mod_fcgid/trunk/modules/fcgid/fcgid_conf.c
On Wed, Oct 7, 2009 at 10:05 AM, Chris Darroch chr...@pearsoncmg.com wrote: Jeff Trawick wrote: FCGIDOutputBufferSize - FCGIDResponseBufferSize FCGIDBusyTimeout - FCGIDRequestTimeout FCGIDBusyScanInterval - FCGIDRequestTimeoutScanInterval (unfortunate name for unfortunate concept) Hmm ... can't say I have any opinion on those, really. I suppose Response is somewhat more specific than Output. If we're thinking about axing or replacing the busy scan at some point, maybe we should just leave those two named as-is? works for me
Re: problem with build on AIX 6.1
You sound much better versed than I. However, next week when I am back I'll go thru my obscure and see if I can find anything to help me understand. Someone in IBM probably had a reason for being different (i.e. COFF versus ELF). I just hope to understand it well enough to be able to be able to get builds to build easily. Would you care to comment on a preference for CC definition when using XL compilers. I am leaning towards xlc. On Wed, Oct 7, 2009 at 1:03 PM, Niklas Edmundsson ni...@acc.umu.se wrote: On Tue, 6 Oct 2009, Michael Felt wrote: I don't have an AIX system at hand at the moment, but last time I build on AIX 6.1 I was astonished, that they used .a as a suffix for shared libs. They have two types of shared libs, depending on when symbol resolution is done. snip btw: I believe AIX documentation says they use .so for shared objects, but also support .a as a shared object archive. And of course, the docs I found are on my other computer - that I cannot access at the moment. As I get further I'll be working on a FAQ for http://www.rootvg.net (I am webmaster there, and I am working on this build for that portal.) btw - my other goal is to build a binary distrubtion for AIX and publish it via rootvg.net. AIX uses COFF, and thus behaves differently than most ELF-based unix dialects out there. Default for AIX is to use .a for all kinds of libs IIRC. .so is used when you have compiled with -brtl to do runtime symbol resolution ELF-style (ie, satisfying dependencies of linked-in libraries can be done by linking your main binary with the missing library). Hmm, man ld has some ramblings about dynamic vs shared mode too, so see that manpage for the complete picture. In any case, this hasn't changed between AIX5 and AIX6, so a fresh AIX6-aware libtool should be all that's needed. /Nikke -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Niklas Edmundsson, Admin @ {acc,hpc2n}.umu.se | ni...@acc.umu.se --- Dangerous Job #?: Klingon Dentist =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Re: problem with build on AIX 6.1
On Wed, Oct 7, 2009 at 10:27 AM, Michael Felt mamf...@gmail.com wrote: You sound much better versed than I. However, next week when I am back I'll go thru my obscure and see if I can find anything to help me understand. Someone in IBM probably had a reason for being different (i.e. COFF versus ELF). I just hope to understand it well enough to be able to be able to get builds to build easily. (butting in; I was once versed enough) COFF vs. ELF doesn't matter statically resolving all symbols vs. dynamically resolving symbols does matter for some code (e.g., mod_perl for Apache); thus, -brtl is important; APR's apr_hints.m4 adds it to LDFLAGS for modern AIX IIRC, when libtool sees -brtl it names shared libraries .so instead of .a Would you care to comment on a preference for CC definition when using XL compilers. I am leaning towards xlc. CC=xlc_r gets you the appropriate reentrant flags
Re: problem with build on AIX 6.1
I have differences in the following files, and all related to Darwin it seems: httpd-2.2.14a/srclib/apr/configure httpd-2.2.14a/srclib/apr/build/libtool.m4 httpd-2.2.14a/srclib/apr-util/xml/expat/aclocal.m4 httpd-2.2.14a/srclib/apr-util/xml/expat/configure What I also notice is that config.guess is not the same in the 4 locations. Probably not a issue with current problem, but just thought I mention it for completeness. 262158 44 -rwx-- 1 michael www 44208 Oct 7 06:02 ./build/config.guess 264234 44 -rwx-- 1 michael www 44208 Aug 7 2006 ./srclib/apr/build/config.guess 303593 44 -rwx-- 1 michael www 44208 Aug 7 2006 ./srclib/apr-util/build/config.guess 303794 39 -rwx-- 1 michael www 39110 Nov 24 2004 ./srclib/apr-util/xml/expat/conftools/config.guess The config.log files follow shortly. On Wed, Oct 7, 2009 at 1:00 AM, Rainer Jung rainer.j...@kippdata.de wrote: On 06.10.2009 20:01, Michael Felt wrote: Hello all, I am trying to get a build made on AIX 6.1. And I suspect the problem I am having is the root cause of the problems people are reporting regarding can't make .so files when using AIX 6.1 (p.s. the quick fix is to compile on AIX 5.3, it runs fine on AIX 6.1) Standard process: unpack archive, ./configure --prefix=/usr/local/apache2 \ --enable-module=so \ --enable-module=unique_id \ --enable-module=usertrack \ --enable-module=vhost_alias \ --enable-rewrite=shared \ --enable-speling=shared \ --enable-digest=shared \ --enable-cgi=shared \ --enable-headers=shared \ --enable-info=shared \ --enable-log_forensic=shared \ --enable-proxy=shared \ --enable-proxy-connect=shared \ --enable-proxy-ftp=shared \ --enable-proxy-http=shared \ --enable-proxy-ajp=shared \ --enable-proxy-balancer=shared \ --with-z=/data/prj/zlib-1.2.3 make On AIX5.3 I have as result, among others: # find modules -name '*.so' modules/generators/.libs/mod_info.so modules/generators/.libs/mod_cgi.so modules/loggers/.libs/mod_log_forensic.so modules/mappers/.libs/mod_speling.so modules/mappers/.libs/mod_rewrite.so modules/metadata/.libs/mod_headers.so modules/proxy/.libs/mod_proxy.so modules/proxy/.libs/mod_proxy_connect.so modules/proxy/.libs/mod_proxy_ftp.so modules/proxy/.libs/mod_proxy_http.so modules/proxy/.libs/mod_proxy_scgi.so modules/proxy/.libs/mod_proxy_ajp.so modules/proxy/.libs/mod_proxy_balancer.so = And... # find modules -name '*.slo' modules/generators/mod_cgi.slo modules/generators/mod_info.slo modules/loggers/mod_log_forensic.slo modules/mappers/mod_rewrite.slo modules/mappers/mod_speling.slo modules/metadata/mod_headers.slo modules/proxy/mod_proxy.slo modules/proxy/ajp_header.slo modules/proxy/mod_proxy_connect.slo modules/proxy/mod_proxy_scgi.slo modules/proxy/mod_proxy_ftp.slo modules/proxy/ajp_utils.slo modules/proxy/mod_proxy_ajp.slo modules/proxy/proxy_util.slo modules/proxy/ajp_msg.slo modules/proxy/ajp_link.slo modules/proxy/mod_proxy_http.slo modules/proxy/mod_proxy_balancer.slo ++ On AIX 6.1 I have: mich...@x054:[/data/prj/httpd-2.2.14]find modules -name '*.so' = mich...@x054:[/data/prj/httpd-2.2.14]find modules -name '*.slo' modules/generators/mod_info.slo modules/generators/mod_cgi.slo modules/loggers/mod_log_forensic.slo modules/mappers/mod_speling.slo modules/mappers/mod_rewrite.slo modules/metadata/mod_headers.slo modules/proxy/mod_proxy.slo modules/proxy/proxy_util.slo modules/proxy/mod_proxy_connect.slo modules/proxy/mod_proxy_ftp.slo modules/proxy/mod_proxy_http.slo modules/proxy/mod_proxy_scgi.slo modules/proxy/mod_proxy_ajp.slo modules/proxy/ajp_header.slo modules/proxy/ajp_link.slo modules/proxy/ajp_msg.slo modules/proxy/ajp_utils.slo modules/proxy/mod_proxy_balancer.slo Suspecting it was libtool I downloaded, built and installed libtool 2.2.6a and Python 2.6.3, ope did the following: make distclean ./buildconf ./configure *** as above make = make ends with: Making all in srclib make[1]: Entering directory `/data/prj/http-2.2.14.bad/srclib' Making all in apr make[2]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr' make[3]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr' make[3]: Nothing to be done for `local-all'. make[3]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr' make[2]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr' Making all in apr-util make[2]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr-util' make[2]: *** No rule to make target `all'. Stop. make[2]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr-util' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/data/prj/http-2.2.14.bad/srclib' make: ***
Re: problem with build on AIX 6.1
I had, as an experiment tried xlC and a LDFLAG I had been using for php builds (-blibpath:xxx) was not accepted as an argument. I'll try xlc and xlc_r and see if I can spot differences. On Wed, Oct 7, 2009 at 4:34 PM, Jeff Trawick traw...@gmail.com wrote: On Wed, Oct 7, 2009 at 10:27 AM, Michael Felt mamf...@gmail.com wrote: You sound much better versed than I. However, next week when I am back I'll go thru my obscure and see if I can find anything to help me understand. Someone in IBM probably had a reason for being different (i.e. COFF versus ELF). I just hope to understand it well enough to be able to be able to get builds to build easily. (butting in; I was once versed enough) COFF vs. ELF doesn't matter statically resolving all symbols vs. dynamically resolving symbols does matter for some code (e.g., mod_perl for Apache); thus, -brtl is important; APR's apr_hints.m4 adds it to LDFLAGS for modern AIX IIRC, when libtool sees -brtl it names shared libraries .so instead of .a Would you care to comment on a preference for CC definition when using XL compilers. I am leaning towards xlc. CC=xlc_r gets you the appropriate reentrant flags
Re: problem with build on AIX 6.1
Rainer - give the man a cigar - or would you prefer a beer, or some other beverage! Replacing config.guess seems to fix it all. == mich...@x054:[/data/prj/httpd-2.2.14]./httpd -t [Wed Oct 07 15:31:52 2009] [warn] module headers_module is already loaded, skipping Syntax OK mich...@x054:[/data/prj/httpd-2.2.14]find modules -name '*.so' modules/generators/.libs/mod_info.so modules/generators/.libs/mod_cgi.so modules/loggers/.libs/mod_log_forensic.so modules/mappers/.libs/mod_speling.so modules/mappers/.libs/mod_rewrite.so modules/metadata/.libs/mod_headers.so modules/proxy/.libs/mod_proxy.so modules/proxy/.libs/mod_proxy_connect.so modules/proxy/.libs/mod_proxy_ftp.so modules/proxy/.libs/mod_proxy_http.so modules/proxy/.libs/mod_proxy_scgi.so modules/proxy/.libs/mod_proxy_ajp.so modules/proxy/.libs/mod_proxy_balancer.so So, this is probably the fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=47692 Thanks Rainer - great call! On Wed, Oct 7, 2009 at 1:00 AM, Rainer Jung rainer.j...@kippdata.de wrote: On 06.10.2009 20:01, Michael Felt wrote: Hello all, I am trying to get a build made on AIX 6.1. And I suspect the problem I am having is the root cause of the problems people are reporting regarding can't make .so files when using AIX 6.1 (p.s. the quick fix is to compile on AIX 5.3, it runs fine on AIX 6.1) Standard process: unpack archive, ./configure --prefix=/usr/local/apache2 \ --enable-module=so \ --enable-module=unique_id \ --enable-module=usertrack \ --enable-module=vhost_alias \ --enable-rewrite=shared \ --enable-speling=shared \ --enable-digest=shared \ --enable-cgi=shared \ --enable-headers=shared \ --enable-info=shared \ --enable-log_forensic=shared \ --enable-proxy=shared \ --enable-proxy-connect=shared \ --enable-proxy-ftp=shared \ --enable-proxy-http=shared \ --enable-proxy-ajp=shared \ --enable-proxy-balancer=shared \ --with-z=/data/prj/zlib-1.2.3 make On AIX5.3 I have as result, among others: # find modules -name '*.so' modules/generators/.libs/mod_info.so modules/generators/.libs/mod_cgi.so modules/loggers/.libs/mod_log_forensic.so modules/mappers/.libs/mod_speling.so modules/mappers/.libs/mod_rewrite.so modules/metadata/.libs/mod_headers.so modules/proxy/.libs/mod_proxy.so modules/proxy/.libs/mod_proxy_connect.so modules/proxy/.libs/mod_proxy_ftp.so modules/proxy/.libs/mod_proxy_http.so modules/proxy/.libs/mod_proxy_scgi.so modules/proxy/.libs/mod_proxy_ajp.so modules/proxy/.libs/mod_proxy_balancer.so = And... # find modules -name '*.slo' modules/generators/mod_cgi.slo modules/generators/mod_info.slo modules/loggers/mod_log_forensic.slo modules/mappers/mod_rewrite.slo modules/mappers/mod_speling.slo modules/metadata/mod_headers.slo modules/proxy/mod_proxy.slo modules/proxy/ajp_header.slo modules/proxy/mod_proxy_connect.slo modules/proxy/mod_proxy_scgi.slo modules/proxy/mod_proxy_ftp.slo modules/proxy/ajp_utils.slo modules/proxy/mod_proxy_ajp.slo modules/proxy/proxy_util.slo modules/proxy/ajp_msg.slo modules/proxy/ajp_link.slo modules/proxy/mod_proxy_http.slo modules/proxy/mod_proxy_balancer.slo ++ On AIX 6.1 I have: mich...@x054:[/data/prj/httpd-2.2.14]find modules -name '*.so' = mich...@x054:[/data/prj/httpd-2.2.14]find modules -name '*.slo' modules/generators/mod_info.slo modules/generators/mod_cgi.slo modules/loggers/mod_log_forensic.slo modules/mappers/mod_speling.slo modules/mappers/mod_rewrite.slo modules/metadata/mod_headers.slo modules/proxy/mod_proxy.slo modules/proxy/proxy_util.slo modules/proxy/mod_proxy_connect.slo modules/proxy/mod_proxy_ftp.slo modules/proxy/mod_proxy_http.slo modules/proxy/mod_proxy_scgi.slo modules/proxy/mod_proxy_ajp.slo modules/proxy/ajp_header.slo modules/proxy/ajp_link.slo modules/proxy/ajp_msg.slo modules/proxy/ajp_utils.slo modules/proxy/mod_proxy_balancer.slo Suspecting it was libtool I downloaded, built and installed libtool 2.2.6a and Python 2.6.3, ope did the following: make distclean ./buildconf ./configure *** as above make = make ends with: Making all in srclib make[1]: Entering directory `/data/prj/http-2.2.14.bad/srclib' Making all in apr make[2]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr' make[3]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr' make[3]: Nothing to be done for `local-all'. make[3]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr' make[2]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr' Making all in apr-util make[2]: Entering directory `/data/prj/http-2.2.14.bad/srclib/apr-util' make[2]: *** No rule to make target `all'. Stop. make[2]: Leaving directory `/data/prj/http-2.2.14.bad/srclib/apr-util'
Making a binary distribution package... for AIX
Many thanks for the assistence with getting the build process to work on AIX 6.1. The next step for me is to work on creating a binary distribution image - and maybe I should pose this question elsewhere. If so, point me there and I'll leave you in peace (for now). = New question: that will mean homework I suspect. As I mentioned before, I am interested in creating a build that other people could install. Having one is the only way to see how big a need, if any exists, for a prebuilt AIX opensource httpd server. I suppose I could go for a RPM build - maybe all I need is on AIX by default, and perhaos it is the first step to learning what needs to be done. My preference is to create a .bff (or installp) format. I have found the build/rpm directory, and what seems to be the actual file intended: ./httpd.spec Question is: How do I use this file, and maybe modify it, to create a specification for an AIX binary distribution? Thanks. Michael
Re: svn commit: r821477 - in /httpd/httpd/trunk: CHANGES modules/http/byterange_filter.c modules/http/http_filters.c server/core_filters.c
On Sunday 04 October 2009, Nick Kew wrote: Good summary. I have taken the absence of further replies as agreement and commited the patch to util_filter.h.
Re: libapreq 2.12 failing with apache 2.2.14
If you were referring to 5.10*, I can't use that version because of certain bugs that haven't been fixed - they keep throwing errors in my app. Duh yeah that's what I meant. I know with 5.8.8 there were a lot of problems because of a bug in ExtUtils::ParseXS, there was a recent fix that was supposed to fix this, does it help to upgrade that and/or other core ExtUtils modules? Mark
Re: Making a binary distribution package... for AIX
Michael Felt wrote: New question: that will mean homework I suspect. As I mentioned before, I am interested in creating a build that other people could install. Having one is the only way to see how big a need, if any exists, for a prebuilt AIX opensource httpd server. I suppose I could go for a RPM build - maybe all I need is on AIX by default, and perhaos it is the first step to learning what needs to be done. My preference is to create a .bff (or installp) format. I have found the build/rpm directory, and what seems to be the actual file intended: ./httpd.spec Question is: How do I use this file, and maybe modify it, to create a specification for an AIX binary distribution? The basic pattern for rpm is that if a file called tarballname.spec exists in the tarball, then that spec file is used as a recipe to build the RPM when you go rpmbuild -tb tarball.tar.bz2. The recipe contains three things, metadata about the package (name, version, description, other stuff), scripts used to build the package and perform pre and post installation, and a list of files in the rpm. The buildconf script builds the httpd.spec file from httpd.spec.in, inserting the version number and other details into the file. The result is that when a tarball is rolled, a file called httpd.spec exists in the right place containing the right names, MMNs and version numbers. Do you have an example of how a .bff file is built? Regards, Graham -- smime.p7s Description: S/MIME Cryptographic Signature
Re: svn commit: r822870 - in /httpd/httpd/trunk: CHANGES include/util_filter.h
Does this *really* require a CHANGES entry?? On Oct 7, 2009, at 3:35 PM, s...@apache.org wrote: Author: sf Date: Wed Oct 7 19:35:09 2009 New Revision: 822870 URL: http://svn.apache.org/viewvc?rev=822870view=rev Log: Update comments in util_filter.h about bucket and brigade ownership to reflect current practice and the advice from manual/developer/output- filters.xml. Submitted by: Rici Lake rici ricilake.net Reviewed by: Stefan Fritsch, Joe Orton Modified: httpd/httpd/trunk/CHANGES httpd/httpd/trunk/include/util_filter.h Modified: httpd/httpd/trunk/CHANGES URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=822870r1=822869r2=822870view=diff = = = = = = = = == --- httpd/httpd/trunk/CHANGES [utf-8] (original) +++ httpd/httpd/trunk/CHANGES [utf-8] Wed Oct 7 19:35:09 2009 @@ -10,6 +10,11 @@ mod_proxy_ftp: NULL pointer dereference on error paths. [Stefan Fritsch sf fritsch.de, Joe Orton] + *) Update comments in util_filter.h about bucket and brigade ownership + to reflect current practice and the advice from + manual/developer/output-filters.xml. + [Rici Lake rici ricilake.net] + *) mod_ldap: If LDAPSharedCacheSize is too small, try harder to purge some cache entries and log a warning. Also increase the default LDAPSharedCacheSize to 50. This is a more realistic size suitable Modified: httpd/httpd/trunk/include/util_filter.h URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/util_filter.h?rev=822870r1=822869r2=822870view=diff = = = = = = = = == --- httpd/httpd/trunk/include/util_filter.h (original) +++ httpd/httpd/trunk/include/util_filter.h Wed Oct 7 19:35:09 2009 @@ -95,8 +95,8 @@ * @name Filter callbacks * * This function type is used for filter callbacks. It will be passed a - * pointer to this filter, and a bucket containing the content to be - * filtered. + * pointer to this filter, and a bucket brigade containing the content + * to be filtered. * * In filter-ctx, the callback will find its context. This context is * provided here, so that a filter may be installed multiple times, each @@ -112,10 +112,15 @@ * or output filter chains and before any data is generated to allow the * filter to prepare for processing. * - * The *bucket structure (and all those referenced by -next and - prev) - * should be considered const. The filter is allowed to modify the - * next/prev to insert/remove/replace elements in the bucket list, but - * the types and values of the individual buckets should not be altered. + * The bucket brigade always belongs to the caller, but the filter + * is free to use the buckets within it as it sees fit. Normally, + * the brigade will be returned empty. Buckets *may not* be retained + * between successive calls to the filter unless they have been + * set aside with a call apr_bucket_setaside. Typically this will + * be done with ap_save_brigade(). Buckets removed from the brigade + * become the responsibility of the filter, which must arrange for + * them to be deleted, either by doing so directly or by inserting + * them in a brigade which will subsequently be destroyed. * * For the input and output filters, the return value of a filter should be * an APR status value. For the init function, the return value should @@ -293,9 +298,13 @@ * Pass the current bucket brigade down to the next filter on the filter * stack. The filter returns an apr_status_t value. If the bottom- most * filter doesn't write to the network, then ::AP_NOBODY_WROTE is returned. - * The caller relinquishes ownership of the brigade. * @param filter The next filter in the chain * @param bucket The current bucket brigade + * + * @remark Ownership of the brigade is retained by the caller. On return, + * the contents of the brigade are UNDEFINED, and the caller must + * either call apr_brigade_cleanup or apr_brigade_destroy on + * the brigade. */ AP_DECLARE(apr_status_t) ap_pass_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket);
Re: Making a binary distribution package... for AIX
I'll have to look into the exact format of the files to make it something the AIX installer can work with - these are extra files. bff stands for backup file format. rather than being a tarball it is a file created by backup (backupbyfilename). a rough approximation of how the file would be created is: cd ${SOME_ROOTDIR} find . | backup -if PackageName.bff ## backup -i means read standard inout for the names of files to backup. On Wed, Oct 7, 2009 at 9:49 PM, Graham Leggett minf...@sharp.fm wrote: Michael Felt wrote: New question: that will mean homework I suspect. As I mentioned before, I am interested in creating a build that other people could install. Having one is the only way to see how big a need, if any exists, for a prebuilt AIX opensource httpd server. I suppose I could go for a RPM build - maybe all I need is on AIX by default, and perhaos it is the first step to learning what needs to be done. My preference is to create a .bff (or installp) format. I have found the build/rpm directory, and what seems to be the actual file intended: ./httpd.spec Question is: How do I use this file, and maybe modify it, to create a specification for an AIX binary distribution? The basic pattern for rpm is that if a file called tarballname.spec exists in the tarball, then that spec file is used as a recipe to build the RPM when you go rpmbuild -tb tarball.tar.bz2. The recipe contains three things, metadata about the package (name, version, description, other stuff), scripts used to build the package and perform pre and post installation, and a list of files in the rpm. The buildconf script builds the httpd.spec file from httpd.spec.in, inserting the version number and other details into the file. The result is that when a tarball is rolled, a file called httpd.spec exists in the right place containing the right names, MMNs and version numbers. Do you have an example of how a .bff file is built? Regards, Graham --
Re: svn commit: r822870 - in /httpd/httpd/trunk: CHANGES include/util_filter.h
On Wednesday 07 October 2009, Jim Jagielski wrote: Does this really require a CHANGES entry?? No. There is at least one other CHANGES entry about a changed comment, though.
Re: svn commit: r822870 - in /httpd/httpd/trunk: CHANGES include/util_filter.h
On Wed, Oct 7, 2009 at 3:53 PM, Jim Jagielski j...@jagunet.com wrote: Does this *really* require a CHANGES entry?? no On Oct 7, 2009, at 3:35 PM, s...@apache.org wrote: Author: sf Date: Wed Oct 7 19:35:09 2009 New Revision: 822870 URL: http://svn.apache.org/viewvc?rev=822870view=rev Log: Update comments in util_filter.h about bucket and brigade ownership to reflect current practice and the advice from manual/developer/output-filters.xml. Submitted by: Rici Lake rici ricilake.net Reviewed by: Stefan Fritsch, Joe Orton Modified: httpd/httpd/trunk/CHANGES
Re: Making a binary distribution package... for AIX
A sample of instructions I would follow are here: http://pware.hvcc.edu/PwarePackagingGuide.pdf. I just do not intend to call it pware.* but something different. Naming is so hard! On Wed, Oct 7, 2009 at 9:56 PM, Michael Felt mamf...@gmail.com wrote: I'll have to look into the exact format of the files to make it something the AIX installer can work with - these are extra files. bff stands for backup file format. rather than being a tarball it is a file created by backup (backupbyfilename). a rough approximation of how the file would be created is: cd ${SOME_ROOTDIR} find . | backup -if PackageName.bff ## backup -i means read standard inout for the names of files to backup. On Wed, Oct 7, 2009 at 9:49 PM, Graham Leggett minf...@sharp.fm wrote: Michael Felt wrote: New question: that will mean homework I suspect. As I mentioned before, I am interested in creating a build that other people could install. Having one is the only way to see how big a need, if any exists, for a prebuilt AIX opensource httpd server. I suppose I could go for a RPM build - maybe all I need is on AIX by default, and perhaos it is the first step to learning what needs to be done. My preference is to create a .bff (or installp) format. I have found the build/rpm directory, and what seems to be the actual file intended: ./httpd.spec Question is: How do I use this file, and maybe modify it, to create a specification for an AIX binary distribution? The basic pattern for rpm is that if a file called tarballname.spec exists in the tarball, then that spec file is used as a recipe to build the RPM when you go rpmbuild -tb tarball.tar.bz2. The recipe contains three things, metadata about the package (name, version, description, other stuff), scripts used to build the package and perform pre and post installation, and a list of files in the rpm. The buildconf script builds the httpd.spec file from httpd.spec.in, inserting the version number and other details into the file. The result is that when a tarball is rolled, a file called httpd.spec exists in the right place containing the right names, MMNs and version numbers. Do you have an example of how a .bff file is built? Regards, Graham --
Re: Making a binary distribution package... for AIX
And then some links into IBM: http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.install/doc/insgdrf/sw_pkg_creation.htm http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.cmds/doc/aixcmds3/mkinstallp.htm And the example file mentioned is attached (/usr/lpp/bos/README.MKINSTALLP) On Wed, Oct 7, 2009 at 10:02 PM, Michael Felt mamf...@gmail.com wrote: A sample of instructions I would follow are here: http://pware.hvcc.edu/PwarePackagingGuide.pdf. I just do not intend to call it pware.* but something different. Naming is so hard! On Wed, Oct 7, 2009 at 9:56 PM, Michael Felt mamf...@gmail.com wrote: I'll have to look into the exact format of the files to make it something the AIX installer can work with - these are extra files. bff stands for backup file format. rather than being a tarball it is a file created by backup (backupbyfilename). a rough approximation of how the file would be created is: cd ${SOME_ROOTDIR} find . | backup -if PackageName.bff ## backup -i means read standard inout for the names of files to backup. On Wed, Oct 7, 2009 at 9:49 PM, Graham Leggett minf...@sharp.fm wrote: Michael Felt wrote: New question: that will mean homework I suspect. As I mentioned before, I am interested in creating a build that other people could install. Having one is the only way to see how big a need, if any exists, for a prebuilt AIX opensource httpd server. I suppose I could go for a RPM build - maybe all I need is on AIX by default, and perhaos it is the first step to learning what needs to be done. My preference is to create a .bff (or installp) format. I have found the build/rpm directory, and what seems to be the actual file intended: ./httpd.spec Question is: How do I use this file, and maybe modify it, to create a specification for an AIX binary distribution? The basic pattern for rpm is that if a file called tarballname.spec exists in the tarball, then that spec file is used as a recipe to build the RPM when you go rpmbuild -tb tarball.tar.bz2. The recipe contains three things, metadata about the package (name, version, description, other stuff), scripts used to build the package and perform pre and post installation, and a list of files in the rpm. The buildconf script builds the httpd.spec file from httpd.spec.in, inserting the version number and other details into the file. The result is that when a tarball is rolled, a file called httpd.spec exists in the right place containing the right names, MMNs and version numbers. Do you have an example of how a .bff file is built? Regards, Graham -- README.MKINSTALLP Description: Binary data
Re: DAV Provider Patch
Brian J. France wrote: Sorry for the delay in response to this, life got in the way. I have updated the patch here: http://www.brianfrance.com/software/apache/dav/dav-provider-3.diff This patch doesn't break binary compatibility (adds the functions to the end of the struct) and adds both get_request_rec and get_pathname. While in most cases you can pull pathname from the request_rec, how would you get the pathname from a mod_dav_fs_db type module? Should mod_dav_fs_db update r-filename or should we keep the get_pathname function in the provider struct? Either way works for me, just happen to have a discussion at work about writing a custom mod_dav_fs module and thought of this patch case. Just a quick check - am I right in understanding that the get_pathname function below is an oversight? Index: modules/dav/main/mod_dav.h === --- modules/dav/main/mod_dav.h (revision 822497) +++ modules/dav/main/mod_dav.h (working copy) @@ -1940,6 +1940,12 @@ ** then this field may be used. In most cases, it will just be NULL. */ void *ctx; + +/* return request record */ +request_rec * (*get_request_rec)(const dav_resource *resource); + +/* return path */ +const char * (*get_pathname)(const dav_resource *resource); }; Regards, Graham -- smime.p7s Description: S/MIME Cryptographic Signature
Re: DAV Provider Patch
On Oct 7, 2009, at 5:37 PM, Graham Leggett wrote: Brian J. France wrote: Sorry for the delay in response to this, life got in the way. I have updated the patch here: http://www.brianfrance.com/software/apache/dav/dav-provider-3.diff This patch doesn't break binary compatibility (adds the functions to the end of the struct) and adds both get_request_rec and get_pathname. While in most cases you can pull pathname from the request_rec, how would you get the pathname from a mod_dav_fs_db type module? Should mod_dav_fs_db update r-filename or should we keep the get_pathname function in the provider struct? Either way works for me, just happen to have a discussion at work about writing a custom mod_dav_fs module and thought of this patch case. Just a quick check - am I right in understanding that the get_pathname function below is an oversight? Index: modules/dav/main/mod_dav.h === --- modules/dav/main/mod_dav.h (revision 822497) +++ modules/dav/main/mod_dav.h (working copy) @@ -1940,6 +1940,12 @@ ** then this field may be used. In most cases, it will just be NULL. */ void *ctx; + +/* return request record */ +request_rec * (*get_request_rec)(const dav_resource *resource); + +/* return path */ +const char * (*get_pathname)(const dav_resource *resource); }; Depends. Should a mod_dav_fs type module (like mod_dav_fs_database) update r- filename so other modules like mod_dav_acl could use the filename from the request_rec. Or should mod_dav_acl use a hook function to get the pathname because r-filename would not be set correctly since that is a path on disk in the case of mod_dav_fs_database? My patch (version 3) left the get_pathname hook with the assumption that r-filename should not be used and instead a hook should be used. Brian