diff options
author | Siep Kroonenberg <siepo@cybercomm.nl> | 2011-02-17 12:20:49 +0000 |
---|---|---|
committer | Siep Kroonenberg <siepo@cybercomm.nl> | 2011-02-17 12:20:49 +0000 |
commit | 316ee97c621496b0fe3267f57cce81bee44ca1e6 (patch) | |
tree | cb2cab1192b4f58a7971af19b213e980bceda4b4 /Master/tlpkg/tlperl/lib/Module/Build/PPMMaker.pm | |
parent | cd0f87b5d39480d85ad9bd4ee37f520f75bed560 (diff) |
Moving old tlperl prior to committing new one
git-svn-id: svn://tug.org/texlive/trunk@21422 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Module/Build/PPMMaker.pm')
-rwxr-xr-x | Master/tlpkg/tlperl/lib/Module/Build/PPMMaker.pm | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/Master/tlpkg/tlperl/lib/Module/Build/PPMMaker.pm b/Master/tlpkg/tlperl/lib/Module/Build/PPMMaker.pm deleted file mode 100755 index 977b4370d91..00000000000 --- a/Master/tlpkg/tlperl/lib/Module/Build/PPMMaker.pm +++ /dev/null @@ -1,189 +0,0 @@ -package Module::Build::PPMMaker; - -use strict; -use Config; -use vars qw($VERSION); -use IO::File; - -$VERSION = '0.3603'; -$VERSION = eval $VERSION; - -# This code is mostly borrowed from ExtUtils::MM_Unix 6.10_03, with a -# few tweaks based on the PPD spec at -# http://www.xav.com/perl/site/lib/XML/PPD.html - -# The PPD spec is based on <http://www.w3.org/TR/NOTE-OSD> - -sub new { - my $package = shift; - return bless {@_}, $package; -} - -sub make_ppd { - my ($self, %args) = @_; - my $build = delete $args{build}; - - my @codebase; - if (exists $args{codebase}) { - @codebase = ref $args{codebase} ? @{$args{codebase}} : ($args{codebase}); - } else { - my $distfile = $build->ppm_name . '.tar.gz'; - print "Using default codebase '$distfile'\n"; - @codebase = ($distfile); - } - - my %dist; - foreach my $info (qw(name author abstract version)) { - my $method = "dist_$info"; - $dist{$info} = $build->$method() or die "Can't determine distribution's $info\n"; - } - - $self->_simple_xml_escape($_) foreach $dist{abstract}, @{$dist{author}}; - - # TODO: could add <LICENSE HREF=...> tag if we knew what the URLs were for - # various licenses - my $ppd = <<"PPD"; -<SOFTPKG NAME=\"$dist{name}\" VERSION=\"$dist{version}\"> - <ABSTRACT>$dist{abstract}</ABSTRACT> -@{[ join "\n", map " <AUTHOR>$_</AUTHOR>", @{$dist{author}} ]} - <IMPLEMENTATION> -PPD - - # We don't include recommended dependencies because PPD has no way - # to distinguish them from normal dependencies. We don't include - # build_requires dependencies because the PPM installer doesn't - # build or test before installing. And obviously we don't include - # conflicts either. - - foreach my $type (qw(requires)) { - my $prereq = $build->$type(); - while (my ($modname, $spec) = each %$prereq) { - next if $modname eq 'perl'; - - my $min_version = '0.0'; - foreach my $c ($build->_parse_conditions($spec)) { - my ($op, $version) = $c =~ /^\s* (<=?|>=?|==|!=) \s* ([\w.]+) \s*$/x; - - # This is a nasty hack because it fails if there is no >= op - if ($op eq '>=') { - $min_version = $version; - last; - } - } - - # PPM4 spec requires a '::' for top level modules - $modname .= '::' unless $modname =~ /::/; - - $ppd .= qq! <REQUIRE NAME="$modname" VERSION="$min_version" />\n!; - } - } - - # We only include these tags if this module involves XS, on the - # assumption that pure Perl modules will work on any OS. - if (keys %{$build->find_xs_files}) { - my $perl_version = $self->_ppd_version($build->perl_version); - $ppd .= sprintf(<<'EOF', $self->_varchname($build->config) ); - <ARCHITECTURE NAME="%s" /> -EOF - } - - foreach my $codebase (@codebase) { - $self->_simple_xml_escape($codebase); - $ppd .= sprintf(<<'EOF', $codebase); - <CODEBASE HREF="%s" /> -EOF - } - - $ppd .= <<'EOF'; - </IMPLEMENTATION> -</SOFTPKG> -EOF - - my $ppd_file = "$dist{name}.ppd"; - my $fh = IO::File->new(">$ppd_file") - or die "Cannot write to $ppd_file: $!"; - - my $io_file_ok = eval { IO::File->VERSION(1.13); 1 }; - $fh->binmode(":utf8") - if $io_file_ok && $fh->can('binmode') && $] >= 5.008 && $Config{useperlio}; - print $fh $ppd; - close $fh; - - return $ppd_file; -} - -sub _ppd_version { - my ($self, $version) = @_; - - # generates something like "0,18,0,0" - return join ',', (split(/\./, $version), (0)x4)[0..3]; -} - -sub _varchname { # Copied from PPM.pm - my ($self, $config) = @_; - my $varchname = $config->{archname}; - # Append "-5.8" to architecture name for Perl 5.8 and later - if ($] >= 5.008) { - my $vstring = sprintf "%vd", $^V; - $vstring =~ s/\.\d+$//; - $varchname .= "-$vstring"; - } - return $varchname; -} - -{ - my %escapes = ( - "\n" => "\\n", - '"' => '"', - '&' => '&', - '>' => '>', - '<' => '<', - ); - my $rx = join '|', keys %escapes; - - sub _simple_xml_escape { - $_[1] =~ s/($rx)/$escapes{$1}/go; - } -} - -1; -__END__ - - -=head1 NAME - -Module::Build::PPMMaker - Perl Package Manager file creation - - -=head1 SYNOPSIS - - On the command line, builds a .ppd file: - ./Build ppd - - -=head1 DESCRIPTION - -This package contains the code that builds F<.ppd> "Perl Package -Description" files, in support of ActiveState's "Perl Package -Manager". Details are here: -L<http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/> - - -=head1 AUTHOR - -Dave Rolsky <autarch@urth.org>, Ken Williams <kwilliams@cpan.org> - - -=head1 COPYRIGHT - -Copyright (c) 2001-2006 Ken Williams. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - - -=head1 SEE ALSO - -perl(1), Module::Build(3) - -=cut |