You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by st...@apache.org on 2013/11/19 12:31:55 UTC
svn commit: r1543390 - in /perl/apxs/trunk: Configure.pl README apr_win32.pl
apu_win32.pl apxs_win32 apxs_win32.pl util.pl
Author: stevehay
Date: Tue Nov 19 11:31:54 2013
New Revision: 1543390
URL: http://svn.apache.org/r1543390
Log:
Import http://archive.apache.org/dist/perl/win32-bin/apxs_win32-0.3.tar.gz
Modified:
perl/apxs/trunk/Configure.pl
perl/apxs/trunk/README
perl/apxs/trunk/apr_win32.pl
perl/apxs/trunk/apu_win32.pl
perl/apxs/trunk/apxs_win32
perl/apxs/trunk/apxs_win32.pl
perl/apxs/trunk/util.pl
Modified: perl/apxs/trunk/Configure.pl
URL: http://svn.apache.org/viewvc/perl/apxs/trunk/Configure.pl?rev=1543390&r1=1543389&r2=1543390&view=diff
==============================================================================
--- perl/apxs/trunk/Configure.pl (original)
+++ perl/apxs/trunk/Configure.pl Tue Nov 19 11:31:54 2013
@@ -10,105 +10,139 @@ use File::Spec::Functions;
require 'util.pl';
BEGIN {
- die 'This script is intended for Win32' unless $^O =~ /Win32/i;
+ die 'This script is intended for Win32' unless $^O =~ /Win32/i;
}
-my ($apache, $help);
+my ($apache, $help, $progname);
GetOptions( 'with-apache2=s' => \$apache,
+ 'with-apache-prog=s' => \$progname,
'help' => \$help,
) or usage($0);
usage($0) if $help;
my @path_ext;
path_ext();
-$apache ||= search();
+($apache, $progname) = search($apache, $progname);
+
+push @ARGV, "--with-apache-prog=$progname";
for my $file (qw(apxs_win32.pl apr_win32.pl apu_win32.pl) ) {
- push @ARGV, "--with-apache2=$apache";
- unless (my $return = do $file) {
- warn "Cannot parse $file: $@" if $@;
- warn "Cannot do $file: $!" unless defined $return;
- warn "Cannot run $file" unless $return;
- }
+ push @ARGV, "--with-apache2=$apache";
+ unless (my $return = do $file) {
+ die "Cannot parse $file: $@" if $@;
+ die "Cannot do $file: $!" unless defined $return;
+ die "Cannot run $file" unless $return;
+ }
}
sub search {
- my $apache;
- if (my $bin = which('Apache')) {
- (my $candidate = dirname($bin)) =~ s!bin$!!;
- if (-d $candidate and check($candidate)) {
- $apache = $candidate;
- }
- }
- unless ($apache and -d $apache) {
- $apache = prompt("Please give the path to your Apache2 installation:",
- $apache);
- }
- die "Can't find a suitable Apache2 installation!"
- unless ($apache and -d $apache and check($apache));
-
- $apache = Win32::GetShortPathName($apache);
- $apache =~ s!\\$!!;
- my $ans = prompt(qq{\nUse "$apache" for your Apache2 directory?}, 'yes');
- unless ($ans =~ /^y/i) {
- die <<'END';
+ my ($apache, $progname) = @_;
+
+ if ($apache) {
+ die qq{Cannot find the "$apache" directory} unless -d $apache;
+ if ($progname) {
+ my $bin = catfile $apache, 'bin', $progname;
+ die qq{"$bin" appears not to be an executable file} unless (-x $bin);
+ }
+ else {
+ $progname = 'Apache.exe';
+ }
+ if (check_httpd($apache, $progname)) {
+ $apache = Win32::GetShortPathName($apache);
+ $apache =~ s!\\$!!;
+ return ($apache, $progname);
+ }
+ else {
+ die qq{"$apache" appears not to be a suitable Apache2 installation};
+ }
+ }
+
+ for my $binary( qw(Apache.exe httpd.exe) ) {
+ my ($candidate, $bin);
+ if ($bin = which($binary)) {
+ ($candidate = dirname($bin)) =~ s!bin$!!;
+ if (-d $candidate and check_httpd($candidate, $binary)) {
+ $apache = $candidate;
+ $progname = $binary;
+ last;
+ }
+ }
+ }
+
+ $progname ||= 'Apache.exe';
+
+ unless ($apache and -d $apache) {
+ $apache = prompt("Please give the path to your Apache2 installation:",
+ $apache);
+ $progname = prompt("Please give the name of your Apache program name:",
+ $progname);
+ }
+ die "Cannot find a suitable Apache2 installation!"
+ unless ($apache and -d $apache and check_httpd($apache, $progname));
+
+ $apache = Win32::GetShortPathName($apache);
+ $apache =~ s!\\$!!;
+ my $ans = prompt(qq{\nUse "$apache" for your Apache2 directory?}, 'yes');
+ unless ($ans =~ /^y/i) {
+ die <<'END';
Please run this configuration script again, and give
the --with-apache2=C:\Path\to\Apache2 option to specify
-the desired top-level Apache2 directory.
+the desired top-level Apache2 directory and, if necessary,
+the --with-apache-prog=httpd.exe to specify the Apache
+program name.
END
- }
- return $apache;
+ }
+ return ($apache, $progname);
}
sub drives {
- my @drives = ();
- eval{require Win32API::File;};
- return map {"$_:\\"} ('C' .. 'Z') if $@;
- my @r = Win32API::File::getLogicalDrives();
- return unless @r > 0;
- for (@r) {
- my $t = Win32API::File::GetDriveType($_);
- push @drives, $_ if ($t == 3 or $t == 4);
- }
- return @drives > 0 ? @drives : undef;
+ my @drives = ();
+ eval{require Win32API::File;};
+ return map {"$_:\\"} ('C' .. 'Z') if $@;
+ my @r = Win32API::File::getLogicalDrives();
+ return unless @r > 0;
+ for (@r) {
+ my $t = Win32API::File::GetDriveType($_);
+ push @drives, $_ if ($t == 3 or $t == 4);
+ }
+ return @drives > 0 ? @drives : undef;
}
sub path_ext {
- if ($ENV{PATHEXT}) {
- push @path_ext, split ';', $ENV{PATHEXT};
- for my $ext (@path_ext) {
- $ext =~ s/^\.*(.+)$/$1/;
- }
- }
- else {
- #Win9X: doesn't have PATHEXT
- push @path_ext, qw(com exe bat);
- }
+ if ($ENV{PATHEXT}) {
+ push @path_ext, split ';', $ENV{PATHEXT};
+ for my $ext (@path_ext) {
+ $ext =~ s/^\.*(.+)$/$1/;
+ }
+ }
+ else {
+ #Win9X: doesn't have PATHEXT
+ push @path_ext, qw(com exe bat);
+ }
}
sub which {
- my $program = shift;
- return unless $program;
- my @extras = ();
- my @drives = drives();
- if (@drives > 0) {
- for my $drive (@drives) {
- for ('Apache2', 'Program Files/Apache2',
- 'Program Files/Apache Group/Apache2') {
- my $bin = catfile $drive, $_, 'bin';
- push @extras, $bin if (-d $bin);
- }
- }
- }
- my @a = map {catfile($_, $program) }
- (path(), @extras);
- for my $base(@a) {
- return $base if -x $base;
- for my $ext (@path_ext) {
- return "$base.$ext" if -x "$base.$ext";
- }
+ my $program = shift;
+ return unless $program;
+ my @extras = ();
+ my @drives = drives();
+ if (@drives > 0) {
+ for my $drive (@drives) {
+ for ('Apache2', 'Program Files/Apache2',
+ 'Program Files/Apache Group/Apache2') {
+ my $bin = catfile $drive, $_, 'bin';
+ push @extras, $bin if (-d $bin);
+ }
+ }
+ }
+ my @a = map {catfile($_, $program) } (path(), @extras);
+ for my $base(@a) {
+ return $base if -x $base;
+ for my $ext (@path_ext) {
+ return "$base.$ext" if -x "$base.$ext";
}
- return;
+ }
+ return;
}
Modified: perl/apxs/trunk/README
URL: http://svn.apache.org/viewvc/perl/apxs/trunk/README?rev=1543390&r1=1543389&r2=1543390&view=diff
==============================================================================
--- perl/apxs/trunk/README (original)
+++ perl/apxs/trunk/README Tue Nov 19 11:31:54 2013
@@ -5,8 +5,18 @@ To install, at a DOS prompt run
which will attempt to find your top-level Apache2 directory.
If this is unsuccessful, or the guess is wrong, run
perl Configure.pl --with-apache2=\Path\to\Apache2
-The utilties will be placed under \Path\to\Apache2\bin\.
+The utilities will be placed under \Path\to\Apache2\bin\.
+
+If you are building for Apache 2.1-dev/2.2, you will discover
+that it's now httpd.exe, not Apache.exe. Specifying
+
+ perl Configure.pl --with-apache-prog=httpd.exe
+
+will provide the results you hoped for.
Randy Kobes <ra...@theoryx5.uwinnipeg.ca>
-March 17, 2004
+Bill Rowe <wrowe rowe-clan.net> provided the fixes necessary
+for Apache 2.1-dev/2.2.
+
+July 22, 2005
Modified: perl/apxs/trunk/apr_win32.pl
URL: http://svn.apache.org/viewvc/perl/apxs/trunk/apr_win32.pl?rev=1543390&r1=1543389&r2=1543390&view=diff
==============================================================================
--- perl/apxs/trunk/apr_win32.pl (original)
+++ perl/apxs/trunk/apr_win32.pl Tue Nov 19 11:31:54 2013
@@ -45,7 +45,7 @@ unless (defined $prefix and -d $prefix)
$prefix);
}
die "Can't find a suitable Apache2 installation!"
- unless (-d $prefix and check($prefix));
+ unless (-d $prefix and check_apr($prefix));
$prefix = Win32::GetShortPathName($prefix);
Modified: perl/apxs/trunk/apu_win32.pl
URL: http://svn.apache.org/viewvc/perl/apxs/trunk/apu_win32.pl?rev=1543390&r1=1543389&r2=1543390&view=diff
==============================================================================
--- perl/apxs/trunk/apu_win32.pl (original)
+++ perl/apxs/trunk/apu_win32.pl Tue Nov 19 11:31:54 2013
@@ -45,7 +45,7 @@ unless (defined $prefix and -d $prefix)
$prefix);
}
die "Can't find a suitable Apache2 installation!"
- unless (-d $prefix and check($prefix));
+ unless (-d $prefix and check_apu($prefix));
$prefix = Win32::GetShortPathName($prefix);
Modified: perl/apxs/trunk/apxs_win32
URL: http://svn.apache.org/viewvc/perl/apxs/trunk/apxs_win32?rev=1543390&r1=1543389&r2=1543390&view=diff
==============================================================================
--- perl/apxs/trunk/apxs_win32 (original)
+++ perl/apxs/trunk/apxs_win32 Tue Nov 19 11:31:54 2013
@@ -41,6 +41,7 @@ my $exec_prefix = get_vars('exec_pre
my $datadir = get_vars('datadir');
my $localstatedir = get_vars('localstatedir');
my $CFG_TARGET = get_vars('progname');
+my $progname = get_vars('progname');
my $CFG_SYSCONFDIR = get_vars('sysconfdir');
my $CFG_SYSCONF = get_vars('sysconf');
my $CFG_CFLAGS = join ' ', map { get_vars($_) }
@@ -302,6 +303,7 @@ if ($opt_g) {
my $data = join('', <DATA>);
$data =~ s!__END__.*!!s;
$data =~ s|%NAME%|$name|sg;
+ $data =~ s|%PROGNAME%|$progname|sg;
$data =~ s|%SYSCONF%|$CFG_SYSCONF|sg;
$data =~ s|%PREFIX%|$prefix|sg;
$data =~ s|%INSTALLBUILDDIR%|$installbuilddir|sg;
@@ -687,7 +689,7 @@ top_builddir=%PREFIX%
# the used tools
APXS=apxs
-APACHECTL=Apache.exe -k
+APACHECTL=%PROGNAME% -k
# additional defines, includes and libraries
#DEFS=-Dmy_define=my_value
Modified: perl/apxs/trunk/apxs_win32.pl
URL: http://svn.apache.org/viewvc/perl/apxs/trunk/apxs_win32.pl?rev=1543390&r1=1543389&r2=1543390&view=diff
==============================================================================
--- perl/apxs/trunk/apxs_win32.pl (original)
+++ perl/apxs/trunk/apxs_win32.pl Tue Nov 19 11:31:54 2013
@@ -7,8 +7,9 @@ use Config;
use ExtUtils::MakeMaker;
use File::Spec::Functions;
require 'util.pl';
-my ($apache, $help);
+my ($apache, $help, $progname);
GetOptions( 'with-apache2=s' => \$apache,
+ 'with-apache-prog=s' => \$progname,
'help' => \$help,
) or usage($0);
usage($0) if $help;
@@ -18,13 +19,14 @@ unless (defined $apache and -d $apache)
$apache);
}
die "Can't find a suitable Apache2 installation!"
- unless (-d $apache and check($apache));
+ unless (-d $apache and check_httpd($apache, $progname));
$apache = Win32::GetShortPathName($apache);
my $perl = which('perl');
my %subs_cfg = (
'%APACHE2%' => $apache,
+ '%PROGNAME%' => $progname,
'%AWK%' => which('awk') || which('gawk') || '',
'%CC%' => $Config{cc},
'%CPP%' => $Config{cpp},
@@ -132,7 +134,7 @@ close $out;
system ('pl2bat', $apxs_out) == 0
or die "system pl2bat $apxs_out failed: $?";
-print qq{\napxs.bat has been created under $apache/bin.\n\n};
+print qq{\napxs.bat has been created under $apache\\bin.\n\n};
__DATA__
exp_exec_prefix = %APACHE2%
@@ -166,7 +168,7 @@ htdbm_LTFLAGS =
ab_LTFLAGS =
checkgid_LTFLAGS =
APACHECTL_ULIMIT =
-progname = Apache.exe
+progname = %PROGNAME%
MPM_LIB = server/mpm/winnt/
OS = win32
OS_DIR = win32
Modified: perl/apxs/trunk/util.pl
URL: http://svn.apache.org/viewvc/perl/apxs/trunk/util.pl?rev=1543390&r1=1543389&r2=1543390&view=diff
==============================================================================
--- perl/apxs/trunk/util.pl (original)
+++ perl/apxs/trunk/util.pl Tue Nov 19 11:31:54 2013
@@ -1,32 +1,84 @@
-sub usage {
- my $script = shift;
- print <<"END";
-
- Usage: perl $script [--with-apache2=C:\Path\to\Apache2]
- perl $script --help
-
-Options:
-
- --with-apache2=C:\Path\to\Apache2 : specify the top-level Apache2 directory
- --help : print this help message
-
-With no options specified, an attempt will be made to find a suitable
-Apache2 directory.
-
-END
- exit;
-}
-
-sub check {
- my $apache = shift;
- die qq{No libhttpd library found under $apache/lib}
- unless -e qq{$apache/lib/libhttpd.lib};
- die qq{No httpd header found under $apache/include}
- unless -e qq{$apache/include/httpd.h};
- my $vers = qx{"$apache/bin/Apache.exe" -v};
- die qq{"$apache" does not appear to be version 2.0}
- unless $vers =~ m!Apache/2.0!;
- return 1;
-}
-
-1;
+use File::Spec::Functions;
+
+sub usage {
+ my $script = shift;
+ print <<"END";
+
+ Usage: perl $script [--with-apache2=C:\Path\to\Apache2]
+ perl $script [--with-apache-prog=httpd.exe]
+ perl $script --help
+
+Options:
+
+ --with-apache2=C:\Path\to\Apache2 : specify the top-level Apache2 directory
+ --with-apache-prog=Apache.exe : specify the Apache2 program name
+ --help : print this help message
+
+With no options specified, an attempt will be made to find a suitable
+Apache2 directory with a program name of "Apache.exe".
+
+END
+ exit;
+}
+
+sub check_httpd {
+ my ($apache, $progname) = @_;
+
+ die qq{No libhttpd library found under $apache/lib}
+ unless -e qq{$apache/lib/libhttpd.lib};
+
+ die qq{No httpd header found under $apache/include}
+ unless -e qq{$apache/include/httpd.h};
+
+ my $vers = qx{"$apache/bin/$progname" -v};
+ die qq{"$apache" does not appear to be version 2}
+ unless $vers =~ m!Apache/2!;
+
+ return 1;
+}
+
+sub check_apr {
+ (my $prefix) = @_;
+ my ($dir);
+
+ my $lib = catdir $prefix, 'lib';
+ opendir($dir, $lib) or die qq{Cannot opendir $lib: $!};
+ my @libs = grep /^libapr\b\S+lib$/, readdir $dir;
+ closedir $dir;
+ die qq{Unable to find apr lib beneath $lib} unless (scalar @libs > 0);
+
+ die qq{No apr.h header found under $prefix/include}
+ unless -e qq{$prefix/include/apr.h};
+
+ my $bin = catdir $prefix, 'bin';
+ opendir($dir, $bin) or die qq{Cannot opendir $bin: $!};
+ my @bins = grep /^libapr\b\S+dll$/, readdir $dir;
+ closedir $dir;
+ die qq{Unable to find apr dll beneath $bin} unless (scalar @bins > 0);
+
+ return 1;
+}
+
+sub check_apu {
+ (my $prefix) = @_;
+ my ($dir);
+
+ my $lib = catdir $prefix, 'lib';
+ opendir($dir, $lib) or die qq{Cannot opendir $lib: $!};
+ my @libs = grep /^libaprutil\b\S+lib$/, readdir $dir;
+ closedir $dir;
+ die qq{Unable to find aprutil lib beneath $lib} unless (scalar @libs > 0);
+
+ die qq{No apu.h header found under $prefix/include}
+ unless -e qq{$prefix/include/apu.h};
+
+ my $bin = catdir $prefix, 'bin';
+ opendir($dir, $bin) or die qq{Cannot opendir $bin: $!};
+ my @bins = grep /^libaprutil\b\S+dll$/, readdir $dir;
+ closedir $dir;
+ die qq{Unable to find aprutil dll beneath $bin} unless (scalar @bins > 0);
+
+ return 1;
+}
+
+1;