gozer 2004/07/23 16:24:56
Modified: . Changes Makefile.PL README RELEASE
src/docs/2.0/user/install install.pod
lib/Apache Build.pm
lib/ModPerl BuildOptions.pm
t/response/TestAPI module.pm
todo release
Log:
Static builds for httpd >= 2.0.51 available. With the new MP_AP_BUILD
option, configure and compile an httpd with mod_perl statically linked
in
Revision Changes Path
1.423 +4 -0 modperl-2.0/Changes
Index: Changes
===================================================================
RCS file: /home/cvs/modperl-2.0/Changes,v
retrieving revision 1.422
retrieving revision 1.423
diff -u -r1.422 -r1.423
--- Changes 23 Jul 2004 22:35:31 -0000 1.422
+++ Changes 23 Jul 2004 23:24:55 -0000 1.423
@@ -12,6 +12,10 @@
=item 1.99_15-dev
+Static builds for httpd >= 2.0.51 available. With the new MP_AP_BUILD
+option, configure and compile an httpd with mod_perl statically linked
+in [Gozer]
+
Apache::RequestRec methods: method_number, connection,
canonical_filename are now read-only [Stas]
1.150 +20 -2 modperl-2.0/Makefile.PL
Index: Makefile.PL
===================================================================
RCS file: /home/cvs/modperl-2.0/Makefile.PL,v
retrieving revision 1.149
retrieving revision 1.150
diff -u -r1.149 -r1.150
--- Makefile.PL 15 Jul 2004 07:38:18 -0000 1.149
+++ Makefile.PL 23 Jul 2004 23:24:55 -0000 1.150
@@ -7,6 +7,7 @@
$ENV{MOD_PERL_2_BUILD} = 1;
my $min_httpd_version = '2.0.46';
+my $min_httpd_version_static = '2.0.51';
my($old_modperl_version, $old_modperl_pm);
@@ -222,8 +223,16 @@
}
exit(1);
}
-
- if ($httpd_version lt $min_httpd_version) {
+
+ my $min_version;
+ if ($build->should_build_apache) {
+ $min_version = $min_httpd_version_static;
+ }
+ else {
+ $min_version = $min_httpd_version;
+ }
+
+ if ($httpd_version lt $min_version) {
error "Apache/$httpd_version not supported, " .
"$min_httpd_version or higher is required";
exit(1);
@@ -251,6 +260,10 @@
#ModPerl::BuildMM will use Apache::BuildConfig in subdir/Makefile.PL's
$build->save;
+ if ($build->should_build_apache) {
+ $build->configure_apache();
+ }
+
ModPerl::TestRun->generate_script;
ModPerl::TestReport->generate_script;
Apache::TestSmokePerl->generate_script;
@@ -509,6 +522,11 @@
EOF
}
+ if ($build->should_build_apache) {
+ ModPerl::MM::add_dep(\$string, pure_all => 'ap_build');
+ $string .= qq[\nap_build:\n\tcd "$build->{MP_AP_PREFIX}" && make\n];
+ }
+
ModPerl::MM::add_dep(\$string, pure_all => 'modperl_lib');
$string .= <<'EOF';
1.21 +2 -1 modperl-2.0/README
Index: README
===================================================================
RCS file: /home/cvs/modperl-2.0/README,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- README 1 Jul 2004 01:40:18 -0000 1.20
+++ README 23 Jul 2004 23:24:55 -0000 1.21
@@ -3,7 +3,8 @@
*** Prerequisites ***
Apache:
- This version of mod_perl works with Apache versions 2.0.46 - 2.0.50.
+ The DSO version of mod_perl works with Apache versions 2.0.46 -
+ 2.0.50. The static version -- with Apache versions 2.0.51 - 2.0.51.
Newer Apache versions may work with this version of mod_perl. If
not, the cvs version likely will, which can be obtained from:
http://perl.apache.org/download/source.html#Development_mod_perl_2_0_Source_Distribution
1.18 +9 -6 modperl-2.0/RELEASE
Index: RELEASE
===================================================================
RCS file: /home/cvs/modperl-2.0/RELEASE,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- RELEASE 21 May 2004 18:50:47 -0000 1.17
+++ RELEASE 23 Jul 2004 23:24:55 -0000 1.18
@@ -32,21 +32,24 @@
- remove '-dev'
- add release date
- b. rerun:
+ b. check ./README & ./Makefile.PL
+ - make sure supported httpd versions (dso & static) are current
+
+ c. rerun:
% perl Makefile.PL MP_INST_APACHE2=1
make sure tag looks right
% make -n cvs_tag
- c. commit Changes
- % cvs ci Changes
+ d. commit Changes README Makefile.PL
+ % cvs ci Changes README Makefile.PL
- d. tag
+ e. tag
% make cvs_tag
- e. create the final package
+ f. create the final package
% make dist
- f. test the final package again at least once
+ g. test the final package again at least once
4. Release the package and update links (e.g. mod_perl-1.99_15.tar.gz)
1.59 +9 -21 modperl-docs/src/docs/2.0/user/install/install.pod
Index: install.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/install/install.pod,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- install.pod 16 Jul 2004 01:11:03 -0000 1.58
+++ install.pod 23 Jul 2004 23:24:55 -0000 1.59
@@ -383,28 +383,10 @@
mod_perl is built once as I<mod_perl.a> and I<mod_perl.so>, but
afterwards you can choose which of the two to use.
-META: The following is not implemented yet.
-
- mod_perl and ends up with a src/modules/perl/mod_perl.{so,a} and
- src/modules/perl/ldopts. to link modperl static with httpd, we just
- need some config.m4 magic to add `ldopts` and mod_perl.a to the build.
- so one could then build httpd like so:
-
- ln -s ~/apache/modperl-2.0/src/modules/perl $PWD/src/modules
- ./configure --with-mpm=prefork --enable-perl=static ...
-
- we not be configuring/building httpd for the user as 1.x attempted.
-
- downside is one will need to have configured httpd first, so that
- headers generated. so it will probably be more like:
-
- ./configure --with-mpm=prefork ...
- (go build modperl)
- ./config.nice --enable-perl=static && make
-
- we could of course provide a wrapper script todo this, but don't want
- to have this stuff buried and tangled like it is in 1.x
+=head4 MP_AP_BUILD
+Configure and build httpd in C<MP_AP_PREFIX>, linking mod_perl statically
+to it.
=head4 MP_STATIC_EXTS
@@ -593,6 +575,12 @@
tracing which makes it easier to tell the reported errors and
warnings, from the rest of the notifications.
+=head4 MP_AP_CONFIGURE
+
+The command-line arguments to pass to httpd's configure script.
+
+C<MP_AP_CONFIGURE> has no effect unless C<MP_AP_BUILD> is also
+specified.
=head2 Re-using Configure Options
1.165 +41 -0 modperl-2.0/lib/Apache/Build.pm
Index: Build.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/lib/Apache/Build.pm,v
retrieving revision 1.164
retrieving revision 1.165
diff -u -r1.164 -r1.165
--- Build.pm 4 Jul 2004 18:44:49 -0000 1.164
+++ Build.pm 23 Jul 2004 23:24:55 -0000 1.165
@@ -244,6 +244,47 @@
return $self->{mpm_name} = $mpm_name;
}
+sub should_build_apache {
+ my ($self) = @_;
+ return $self->{MP_AP_BUILD} ? 1 : 0;
+}
+
+sub configure_apache {
+ my ($self) = @_;
+
+ unless ($self->{MP_AP_CONFIGURE}) {
+ error "You specified MP_AP_BUILD but did not specify the " .
+ "arguments to httpd's ./configure with MP_AP_CONFIGURE";
+ exit 1;
+ }
+
+ unless ($self->{MP_USE_STATIC}) {
+ error "When building httpd, you must set MP_USE_STATIC=1";
+ exit 1;
+ }
+
+ debug "Configuring httpd in $self->{MP_AP_PREFIX}";
+
+ my $httpd = File::Spec->catfile($self->{MP_AP_PREFIX}, 'httpd');
+ push @Apache::TestMM::Argv, ('-httpd' => $httpd);
+
+ my $mplib = "$self->{MP_LIBNAME}$Config{lib_ext}";
+ my $mplibpath = catfile($self->{cwd}, qw(src modules perl), $mplib);
+
+ local $ENV{BUILTIN_LIBS} = $mplibpath;
+ local $ENV{AP_LIBS} = $self->ldopts;
+ local $ENV{MODLIST} = 'perl';
+
+ #XXX: -Wall and/or -Werror at httpd configure time breaks things
+ local $ENV{CFLAGS} = join ' ', grep { ! /\-Wall|\-Werror/ }
+ split /\s+/, $ENV{CFLAGS};
+
+ my $cd = qq(cd $self->{MP_AP_PREFIX});
+ my $cmd = qq(./configure $self->{MP_AP_CONFIGURE});
+ debug "Running $cmd";
+ system("$cd && $cmd") == 0 or die "httpd: $cmd failed";
+}
+
#--- Perl Config stuff ---
my %gtop_config = ();
1.28 +2 -0 modperl-2.0/lib/ModPerl/BuildOptions.pm
Index: BuildOptions.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/lib/ModPerl/BuildOptions.pm,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- BuildOptions.pm 4 Jul 2004 18:44:49 -0000 1.27
+++ BuildOptions.pm 23 Jul 2004 23:24:55 -0000 1.28
@@ -220,6 +220,8 @@
STATIC_EXTS 0 Build Apache::*.xs as static extensions
APXS 0 Path to apxs
AP_PREFIX 0 Apache installation or source tree prefix
+AP_CONFIGURE 0 Apache ./configure arguments
+AP_BUILD 0 Whether to build httpd
APR_CONFIG 0 Path to apr-config
XS_GLUE_DIR 1 Directories containing extension glue
INCLUDE_DIR 1 Add directories to search for header files
1.13 +1 -1 modperl-2.0/t/response/TestAPI/module.pm
Index: module.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/module.pm,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- module.pm 8 Jul 2004 05:29:42 -0000 1.12
+++ module.pm 23 Jul 2004 23:24:56 -0000 1.13
@@ -87,7 +87,7 @@
#.so
{
my $build = Apache::BuildConfig->new;
- my $expect = $build->{MODPERL_LIB_SHARED} ? 1 : 0;
+ my $expect = $build->should_build_apache ? 0 : 1;
ok t_cmp(Apache::Module::loaded('mod_perl.so'), $expect,
"Apache::Module::loaded('mod_perl.so')");
}
1.33 +0 -9 modperl-2.0/todo/release
Index: release
===================================================================
RCS file: /home/cvs/modperl-2.0/todo/release,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- release 14 Jul 2004 08:42:07 -0000 1.32
+++ release 23 Jul 2004 23:24:56 -0000 1.33
@@ -58,15 +58,6 @@
of child_exit.
owner: stas
-* static build - if we make it working on OpenBSD, AIX and FreeBSD,
- then it's not important to fix the DSO issues, otherwise make the
- DSO issues in (todo/bugs_build) a release issue.
- httpd-apreq-2 has recently implemented a static build support, we
- could probably try to re-use some of the code that was written to do
- that, though they use autoconf, which is not quite what we
- want. Anyway it's something to look at.
- owner: gozer
-
* <Perl> sections:
A few issues with <Perl> sections:
http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=106074969831522&w=2