############################################################################### # # $Id: Makefile.PL,v 1.39 2006/06/30 07:52:26 rjray Exp $ # # This is the MakeMaker skeleton for the RPC-XML extension. Besides the usual # tricks, this has to add rules to make the *.xpl files from *.code in the # methods/ subdir, as well as get them into a place where they get installed # correctly. # ############################################################################### use ExtUtils::MakeMaker; use File::Spec; use File::Find; use Cwd 'cwd'; use LWP; if ($LWP::VERSION < 5.801) { print STDERR <catfile(qw(etc make_method))); $CLEAN .= File::Spec->catfile(qw(methods *.xpl)); @PM_FILES = (); find(sub { push(@PM_FILES, $File::Find::name) if (-f $_ and /\.pm$/) }, 'lib'); # Exclude Apache2 stuff until it's ready for deployment @PM_FILES = grep(! /Apache2/, @PM_FILES); %PM_FILES = map { ($temp = $_) =~ s|^lib|\$\(INST_LIB\)|; $_ => $temp } @PM_FILES; # Handle the method code in "methods" specially: find(sub { if (-f $_ and /\.base$/) { s/\.base$//; $PM_FILES{File::Spec->catfile('methods', "$_.xpl")} = File::Spec->catfile('$(INST_LIB)', 'RPC', 'XML', "$_.xpl"); } }, 'methods'); # Anything stuck under "lib" is more generic find(sub { if (-f $_ and /\.base$/) { $File::Find::name =~ s/base$/xpl/; ($tmp = $File::Find::name) =~ s|^lib|\$(INST_LIB)|; $PM_FILES{$File::Find::name} = $tmp; $CLEAN .= " $File::Find::name"; } }, 'lib'); WriteMakefile( NAME => 'RPC::XML', VERSION => '0.59', AUTHOR => 'Randy J. Ray', ABSTRACT => 'Data, client and server classes for XML-RPC', EXE_FILES => \@scripts, PM => \%PM_FILES, PREREQ_PM => { XML::Parser => 2.31, File::Spec => 0.8, LWP => 5.801 }, dist => { COMPRESS => 'gzip -9f' }, clean => { FILES => $CLEAN }, ); sub MY::post_initialize { my $self = shift; my @text; my $makemeth = File::Spec->catfile(qw(etc make_method)); push(@text, '.SUFFIXES: .xpl .base', '', '.base.xpl:', "\t\$(PERL) $makemeth --base=\$*", ''); join("\n", @text); } sub MY::tools_other { package MY; my $text = shift->SUPER::tools_other(@_); "$text\nECHO=\@echo\nRPM=rpmbuild\n"; } sub MY::post_constants { my $self = shift; "SPECFILE=perl-$self->{DISTNAME}.spec"; } sub MY::postamble { my $self = shift; my @text; my $makemeth = File::Spec->catfile(qw(etc make_method)); if (-e 'spec.in' and -f _) { # # Generate the spec file from spec.in with substitutions # print "Generating perl-$self->{DISTNAME}.spec...\n"; $self->{RELEASE} = 1 unless $self->{RELEASE}; $self->{INSTALLDIR} = $Config{installsitelib} unless $self->{INSTALLDIR}; open(SPECI, "< spec.in"); if ($?) { die "Error opening template spec file: $!, stopped"; } open(SPECO, "> perl-$self->{DISTNAME}.spec"); if ($?) { die "Error creating output spec file: $!, stopped"; } for () { s/(\$\{(\w+)\})/$self->{$2}/eg; print SPECO $_; } close(SPECO); close(SPECI); print "Generating rpmrc...\n"; open(RPMRC, "> rpmrc"); if ($?) { die "Error creating rpmrc file: $!, stopped"; } else { print RPMRC < rpmmacro"); if ($?) { die "Error creating macro file: $!, stopped"; } else { print MACRO <