[Bioperl-l] a thought on Bio::Root::Build

Mark A. Jensen maj at fortinbras.us
Mon Jan 26 02:44:42 UTC 2009


Sendu--
Following is a little more thoughtful. Summary is

+ # CPAN-install prereqs in the install set selected by the
+ # user when ./Build.PL or ./Build was run...unless the
+ # user's MyConfig.pm overrides.
+ # However, if Module::CoreList is available, install
+ # core module updates to the core install set (if the
+ # module was part of the core when the local Perl was
+ # installed...)

MAJ

Index: Build.pm
===================================================================
--- Build.pm (revision 15441)
+++ Build.pm (working copy)
@@ -101,12 +101,16 @@

 use strict;
 use warnings;
+use CPAN; # use here to get %{$CPAN::Config} with user defaults

 our $VERSION = '1.007000';
 our @extra_types = qw(options excludes_os feature_requires test); # test must 
always be last in the list!
 our $checking_types = "requires|conflicts|".join("|", @extra_types);
+our $myconfig_mbuildpl_arg = $$CPAN::Config{mbuildpl_arg};
+our $myconfig_makepl_arg = $$CPAN::Config{makepl_arg};


+
 # our modules are in Bio, not lib
 sub find_pm_files {
     my $self = shift;
@@ -441,11 +445,37 @@
         # being we continue even if installation fails, and that this works
         # even when not using CPAN to install.
         require Cwd;
-        require CPAN;
-
+#        'use'd at compile time, see above/maj
+#        require CPAN;
+
         # Save this because CPAN will chdir all over the place.
         my $cwd = Cwd::cwd();
-
+
+ # CPAN-install prereqs in the install set selected by the
+ # user when ./Build.PL or ./Build was run...unless the
+        # user's MyConfig.pm overrides.
+ # However, if Module::CoreList is available, install
+        # core module updates to the core install set (if the
+        # module was part of the core when the local Perl was
+        # installed...)
+ $$CPAN::Config{mbuildpl_arg} = "--installdirs ".$self->installdirs
+     unless $myconfig_mbuildpl_arg;
+ $$CPAN::Config{makepl_arg} = "INSTALLDIRS=".$self->installdirs
+     unless $myconfig_makepl_arg;
+ # if Module::CoreList is available, be clever...
+ if (eval "require Module::CoreList; 1") &&
+     (Module::CoreList->find_modules(qr/^$desired$/)) {
+  # in the core
+  if (Module::CoreList->first_release($desired) <= $]) {
+      # in the core of the local Perl installation
+      $$CPAN::Config{mbuildpl_arg} = "--installdirs core"
+   unless $myconfig_mbuildpl_arg;
+      $$CPAN::Config{makepl_arg} = "INSTALLDIRS=core"
+   unless $myconfig_makepl_arg;
+  }
+     }
+ }
+
         CPAN::Shell->install($desired);
         my $msg;
         my $expanded = CPAN::Shell->expand("Module", $desired);

----- Original Message ----- 
From: "Sendu Bala" <bix at sendu.me.uk>
To: "Mark A. Jensen" <maj at fortinbras.us>
Cc: "BioPerl List" <bioperl-l at bioperl.org>
Sent: Friday, January 23, 2009 12:35 PM
Subject: Re: [Bioperl-l] a thought on Bio::Root::Build


> Mark A. Jensen wrote:
>> Is it a reasonable convenience for the user who has run ./Build.PL
>> with a non-default set of install directories to ask CPAN::Shell
>> to use those directories when installing prerequisites (unless the user's 
>> MyConfig.pm is saying something else)?
>
> Seems like a good idea to me. If you've thought about it and are confident it 
> should be OK, go ahead and commit.
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>
> 




More information about the Bioperl-l mailing list