perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Hay" <Steve...@planit.com>
Subject RE: [RELEASE CANDIDATE]: mod_perl-2.0.6 RC2
Date Sun, 19 Feb 2012 00:03:56 GMT
[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...)

Mime
View raw message