[Replying with the Outlook QuoteFix macro installed  at last :-) ...]

Torsten Förtsch wrote on 2012-02-18:
> Hi,
> 
> I am starting a new thread here because a) this is about RC2 not RC1
> and b) the RC1 thread is already too long for me to cope with.
> 
> To summarize the current state as I see it. We have a RC2 at
> 
>   http://people.apache.org/~phred/mod_perl-2.0.6-rc2.tar.gz
> It got 2 +1 for linux (me) and osx (fred).
> 
> On windows Steve reported another problem with recursive "make"
> invocations. He also sent a patch to the list but didn't commit it for
> some reason. If I understood the patch correctly the problem are the
> hard-wired "make" options (-k and -C). So, I committed a slightly
> different patch (more makeish I think).
> 
> Steve, could you please confirm that revision 1245946 works for you?
> 

I didn't commit because we're in the middle of making a release so I thought it 
wouldn't be appropriate without the RM's approval. Anyway, I like your patch 
better, and I can confirm that it works for me :-)


> I have also just committed revision 1290839 to have our top-level
> Makefile.PL pass on MP_APXS and MP_AP_PREFIX as environment variables.
> At least this patch doesn't disturb anything here. But I doubt that it
> solves Steve's Apache- Reload problem.

Indeed it doesn't solve my problem. As I wrote before, even setting the MP_APXS 
environment variable myself before running Makefile.PL didn't help.


> 
> The A::R Makefile.PL reads:
> 
> ...
>   if ($ENV{MOD_PERL_2_BUILD}) {
>       push @ARGV, "-apxs $ENV{MP_APXS}";
>       my $mp_gen = satisfy_mp_generation(2);
>   }
> ...
> 
> So the string "-apxs ..." is pushed to @ARGV as a single argument. I
> think that should rather read
> 
>       push @ARGV, "-apxs", $ENV{MP_APXS};

Yes, and hence we do indeed need to pass MP_APXS through in the environment, as 
you've now done in revision 1290839, plus I need to run "perl Makefile.PL 
MP_APXS=..." now (as per the INSTALL file!), rather than "perl Makefile.PL 
MP_AP_PREFIX=..." (as I've always done). I'm ok with that, but see later:


> Steve, if you want to play with it remember to change the place where
> the additional parameter is removed from @ARGV later, as well. Around
> line 50 it
> reads:
> 
>     if ($ENV{MOD_PERL_2_BUILD}) {
>         pop @ARGV;               # that should now be 2 times pop or a
> splice
>     }
> These lines of code are also present in A::SL and have their origin
> there. They appeared in revision 441414.

Pushing two args onto @ARGV as you suggest works for me, but splicing them off 
again (splice @ARGV, -2) doesn't! It gives the error "Modification of 
non-creatable array value attempted", due to check_for_apache_test() calling 
Apache::TestMM::filter_args(), which actually assigns a new value to @ARGV (in 
my case, an empty array!). Given that @ARGV is getting rewritten anyway, I 
think it is simplest to not worry about trying pop the pushed values off again, 
so the attached patch simply deletes the pop lines.


> 
> Hopefully RC3 will then get 3 +1. I'd really like to get it over with
> before my vacation starting mid-next week but hope is weak.
> 
> 
> $ svn diff -c 1245946 Index: Makefile.PL
> =================================================================== ---
> Makefile.PL (revision 1245945) +++ Makefile.PL (revision 1245946) @@
> -789,24 +789,23 @@
>         $(PASSENV) \
>         $(FULLPERL) -I$(INST_ARCHLIB) -I$(INST_LIB) \
>         t/TEST -bugreport -verbose=$(TEST_VERBOSE) $(TEST_FILES)
> -       $(MAKE) -k run_subtests
> 
>  run_subtests ::
> -       $(MAKE) -C ModPerl-Registry test
> +       cd ModPerl-Registry && $(MAKE) test
> 
>  run_subtests ::
> -       $(MAKE) -C Apache-Reload test
> +       cd Apache-Reload && $(MAKE) test
> 
>  EOF
>      $preamble .= <<'EOF' unless $build->mpm_is_threaded();
> run_subtests ::
> -       $(MAKE) -C Apache-SizeLimit test
> +       cd Apache-SizeLimit && $(MAKE) test
> 
>  EOF
>      $preamble .= <<'EOF';
> -test :: pure_all run_tests test_clean
> +test :: pure_all run_tests run_subtests
>  EOF
>      return $preamble;
> 
> Another funny discovery I made in our top-level Makefile.PL. There is a
> function named win32_fetch_apxs which is called almost first thing if we
> run on WIN32. It looks for a win32_fetch_apxs executable. I found such a
> script in build/. It tries to fetch the archive
> http://perl.apache.org/dist/win32- bin/apxs_win32.tar.gz via LWP. The
> newest files in this directory from 2007-04-18 03:32. Do we really need
> this?

I didn't realize that the top-level Makefile.PL actually fetches apxs for you 
if you don't have it, but it seems worth leaving in if I understand things 
correctly:

My understanding is that apxs is required for building modules likes mod_perl 
and libapreq and that it normally gets installed with Apache httpd but doesn't 
get installed on Win32, hence the existence of that separate apxs_win32.tar.gz 
package. It was created by the sadly departed Randy Kobes, and has not been 
updated since but currently still works.

I've always installed it manually first, and then built mod_perl, but it looks 
like the mod_perl build will fetch it if it's missing, installing it into the 
MP_AP_PREFIX location (if given on the command-line). Having said that, the 
build currently doesn't work correctly on Win32 if you only specify 
MP_AP_PREFIX as I've done up until now: we now need MP_APXS to be specified 
too. Therefore, the attached patch also modifies the fetch function to set 
$build->{MP_APXS}, akin to what prompt_for_apxs() does.

I'm curious how the build *does* work on other platforms, though: why has 
nobody else hit the same problem with Apache-Reload's tests not getting run? Is 
everyone else using MP_APXS rather than MP_AP_PREFIX anyway? If so then should 
be drop the MP_AP_PREFIX argument?

(I again haven't applied my patch myself because I'm not sure how to go about 
patching Reload and SizeLimit. I see they're downloaded into my mod_perl 
working copy as "externals", but can I commit changes from there? Also, the 
version of Reload in that working copy seems to be newer than what's in our 
RC2. Is that intentional? My working copy of mod_perl (Trunk) contains Reload 
0.12-dev, with a changes file saying that the last thing added to 0.11 was an 
Apache-Test 1.34 dependency, but RC2 contains what purports to be 0.11 and yet 
it doesn't contain that Apache-Test 1.34 dependency...)

Attachment: apxs.patch
Description: apxs.patch

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org

Reply via email to