# $Id: Makefile.PL,v 1.5 2002/02/16 18:27:22 btrott Exp $ use ExtUtils::MakeMaker qw( prompt WriteMakefile ); use strict; my %PREREQS = ( _base => { 'Digest::MD5' => 0, 'Math::Pari' => '2.001804', 'Data::Buffer' => 0, 'MIME::Base64' => 0, }, PEM => { 'Convert::PEM' => '0.05', 'Crypt::DES' => 0, }, SSH => { 'Crypt::CBC' => '2.00', 'Crypt::DES' => 0, }, ); my %all; for my $type (keys %PREREQS) { for my $mod (keys %{ $PREREQS{$type} }) { $all{$mod} = $PREREQS{$type}{$mod}; } } $PREREQS{_all} = \%all; my %prereq = %{ $PREREQS{_base} }; print<install($k); delete $prereq{$k}; chdir $cwd or die "Can't chdir back to $cwd: $!"; } } } =pod print "\nChecking for optional modules\n\n"; unless (check_module('Digest::BubbleBabble', 0.01, \$missing)) { print<install('Digest::BubbleBabble'); chdir $cwd or die "Can't chdir back to $cwd: $!"; } print "\n"; } =cut print "\n"; WriteMakefile( NAME => 'Crypt::Keys', DISTNAME => 'Crypt-Keys', VERSION_FROM => 'lib/Crypt/Keys.pm', PREREQ_PM => \%prereq, AUTHOR => 'Benjamin Trott ', ABSTRACT => 'On-disk management of public and private keyfiles', ); sub read_yes_or_no { my($prompt, $def) = @_; my $ans = prompt($prompt, $def); $ans =~ /^y/i; } sub check_module { my($name, $ver, $missing) = @_; print substr("$name ............................", 0, 30); my $ok = have_mod($name, $ver); $$missing++ unless $ok; print $ok ? "ok\n" : "** FAILED **\n"; $ok; } sub have_mod { my($name, $ver) = @_; eval("use $name" . ($ver ? " $ver;" : ";")); !$@; }