#!C:/Perl/bin/perl ################################################################### # apxs, apr-config, and apu-config are Apache utilities used # # to both get certain configuration information and also to # # assist in building Apache modules. These utilities have not # # yet been officially ported to Win32. The following will fetch # # and install a development version of these scripts which can # # be used in both mod_perl 2 and Apache C modules. # # # # Please report problems in installing or using these utilties to # # Randy Kobes # ################################################################### use strict; use warnings; use Getopt::Long; use File::Spec::Functions; use File::Path; use ExtUtils::MakeMaker qw(prompt); use Cwd; die "This is intended for Win32" unless ($^O =~ /Win32/i); my $prefix; GetOptions( 'with-apache2=s' => \$prefix); unless ($prefix and -d $prefix) { die << 'END'; I could not determine a valid Apache2 directory. Please run this script specifying the option --with-apache2=/Path/to/Apache2 where /Path/to/Apache2 is the location of your installed Apache2 top-level directory. END } exit 0 if (-e catfile($prefix, 'bin', 'apxs.bat')); print << 'END'; ---------------------------------------------------------------------- I could not find an apxs utility, which will be used in certain parts of the build, if present. This utility (and the apr-config and apu-config utilities) have not yet been ported to Apache2 on Win32, but a development port is available. You can either - ignore installing apxs by answering "no" at the prompt below (mod_perl will still build), - install apxs by answering "yes" at the prompt below, - quit now, run the "fetch_win32_apxs.pl" script in the build/ directory to fetch and install the utilities, and then rebuild mod_perl, - quit now, and from https://apache.org/dist/perl/win32-bin/ grab apxs_win32.tar.gz; when unpacked, this contains a README explaining how to install the utilities. Afterwards, rebuild mod_perl. ---------------------------------------------------------------------- END my $ans = prompt('Install apxs now?', 'yes'); exit 0 unless $ans =~ /^y/i; my $prog; for my $trial(qw(Apache.exe httpd.exe)) { next unless -e File::Spec->catfile($prefix, 'bin', $trial); $prog = $trial; last; } die "Could not determine the Apache2 binary name" unless $prog; require LWP::Simple; LWP::Simple->import(qw(is_success getstore)); my $file = 'apxs_win32.tar.gz'; unless (-e $file) { my $remote = 'https://apache.org/dist/perl/win32-bin/' . $file; print "Fetching $remote ... "; die "Download of $remote failed" unless (is_success(getstore($remote, $file))); print " done!\n"; } require Archive::Tar; my $cwd = getcwd; my $dir = 'apxs'; my $arc = Archive::Tar->new($file, 1); $arc->extract($arc->list_files()); die "Unpacking $file failed" unless (-d $dir); print "chdir $dir\n"; chdir $dir or die "chdir to $dir failed: $!"; my @args = ($^X, 'Configure.pl', "--with-apache2=$prefix", "--with-apache-prog=$prog"); print "@args\n"; system(@args) == 0 or die "system @args failed: $?"; chdir $cwd; #rmtree($dir, 1, 1) or warn "rmtree of $dir failed: $!"; #print "unlink $file\n\n"; #unlink $file or warn "unlink of $file failed: $!";