Michael G Schwern wrote:

On Fri, Aug 01, 2003 at 10:03:20AM +0100, Steve Hay wrote:


This bug evidently goes back a long way: MM 6.06_02 fails in the same way as 6.13.

I tried to use MM 6.06_01, but it wouldn't build itself ("don't know how to make 'C:\perl5\libNAME'"). Instead, I knife-and-forked it into place, but when I tried to use it to build libapreq, I just got the same error again - "don't know how to make 'C:\perl5\libNAME'".

OK, I've got MM 6.06_01 building now (it was generating broken Makefiles -- needed to change DIRFILESEP from \ to ^\, and fill in the missing *PERLSAFE macros), and the bad news is that it doesn't build libapreq-1.2 either! I still get the "unresolved external symbol boot_libapreq" error.

So it's one of the many changes between 6.05 and 6.06_01 that broke it.



Well, that narrows it down quite a bit.


Which version of mod_perl and Apache is this against and *exactly* what do
I have to do to exercise this bug? I haven't built mod_perl in a long time.


I'm using Apache 1.3.27, mod_perl 1.28, libapreq-1.2, but I'm on Windows with MS VC++ 6.0, so this might not be very useful to you since you haven't got such a setup yourself... Anyway, here goes; it's probably pretty similar on whatever OS you're on (perhaps with an extra "./configure ..." line before the Apache "make"?)

- Unpack Apache, mod_perl, libapreq into C:\Temp
- cd to C:\Temp\apache_1.3.27\src
- Run "nmake /f makefile.win installr". That builds Apache and installs it into C:\apache by default.
- cd to C:\Temp\mod_perl-1.28
- Run "perl Makefile.PL APACHE_SRC=C:/apache INSTALL_DLL=C:/apache/modules".
- Run "nmake", "nmake test", "nmake install" as usual.
- cd to C:\Temp\libapreq-1.2
- Run "perl Makefile.PL"
- Run "nmake" -- that fails with the "unresolved external symbol boot_libapreq" error.


That's it.

BTW, I've been looking at the Makefiles that I sent previously, and have found something interesting. The Makefile in the "c" sub-directory from the 6.05 build contains this:

=====================
# --- MakeMaker dynamic section:
## $(INST_PM) has been moved to the all: target.
## It remains here for awhile to allow for old usage: "make dynamic"
#dynamic :: Makefile
dynamic :: Makefile
   @$(NOOP)
=====================

while the corresponding section from the 6.12 build contains this:

=====================
# --- MakeMaker dynamic section:
## $(INST_PM) has been moved to the all: target.
## It remains here for awhile to allow for old usage: "make dynamic"
dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
   $(NOECHO) $(NOOP)
=====================

If that's relevant, then the latter looks more likely to be correct, doesn't it? Perhaps MM 6.06+ has correctly fixed a bug in MM 6.05, and the only problem here is that libapreq was previously relying on that bug?

Steve



Reply via email to