use ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. my %required = ( URI => 1.03, XML::Parser => 2.30, ); my %optional = ( DBI => 1.14, DB_File => 1.72, ); my %msg = ( URI => 'module for URI handling', XML::Parser => 'Expat XML parser needed for RDF::Core::Parser', DBI => 'module for a database connectivity (optional)', DB_File => 'needed for Berkeley DB data storage', ); my @missing_req = (); my @missing_opt = (); $| = 1; sub get_dots { return '.' x (30 - length shift); } sub check_deps { my ($list, $result) = @_; foreach (keys %$list) { my $m = "$_ ($list->{$_})"; print "Checking for $m", get_dots($m); my $try = "require $_;"; eval $try; if ($@) { print "missing!\n"; push @$result, $_; } else { my $version = '$' . "$_" . '::VERSION >= ' . $list->{$_}; if( eval $version ) { print "ok\n"; } else { print "old version!\n"; push @result, $_; } } } } sub report_deps { if ($missing_req[0]) { # print "\nSorry, RDF::Core can't be instaled. "; print "The following modules are required:\n\n"; foreach (@missing_req) { print "$_, version $required{$_} or later: $msg{$_}\n"; } #exit 1; } if ($missing_opt[0]) { print "\nRDF::Core can be instaled but its functionality will be limited\n"; print "as the following modules are required to support some features:\n\n"; foreach (@missing_opt) { print "$_, version $optional{$_} or later: $msg{$_}\n"; } print "\nIf you want use the above described features,\n"; print "install or update the missing modules.\n\n" } } check_deps(\%required, \@missing_req); check_deps(\%optional, \@missing_opt); report_deps; WriteMakefile( 'PMLIBDIRS' => [ 'lib' ], 'NAME' => 'RDF::Core', 'VERSION_FROM' => 'lib/RDF/Core.pm', # finds $VERSION 'PREREQ_PM' => {%required, %optional}, 'dist' => { 'COMPRESS' => 'gzip', 'SUFFIX' => 'gz', } );