[MOBY-guts] biomoby commit

Eddie Kawas kawas at dev.open-bio.org
Tue Sep 4 22:28:14 UTC 2007


kawas
Tue Sep  4 18:28:14 EDT 2007
Update of /home/repository/moby/moby-live/Perl
In directory dev.open-bio.org:/tmp/cvs-serv13879

Modified Files:
	Makefile.PL 
Log Message:

moby-live/Perl Makefile.PL,1.29,1.30
===================================================================
RCS file: /home/repository/moby/moby-live/Perl/Makefile.PL,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- /home/repository/moby/moby-live/Perl/Makefile.PL	2007/09/04 17:40:34	1.29
+++ /home/repository/moby/moby-live/Perl/Makefile.PL	2007/09/04 22:28:14	1.30
@@ -1,427 +1,427 @@
-use ExtUtils::MakeMaker;
-use FindBin '$Bin';
-use strict;
-my $VERSION = '0.87';
-
-# need a way of relaying the information that LS cannot be found on CPAN
-eval "require LS";
-if ($@) {
-	print STDOUT <<'END_OF_TEXT';
-	
-############## IMPORTANT ##############
-Module 'LS' is not installed. This module is used
-**only** if you are wanting to host a LSID Authority!
-
-Unfortunately, this module is not available on CPAN 
-and must be manually installed. Some of the 
-dependencies are beta and as such, may not be stable.
-
-You can try searching Google using the keywords:
-
-	'perl LS lsid' 
-
-or, try downloading it from the following link:
-	
-	'http://sourceforge.net/project/showfiles.php?group_id=130827'
-
-
-END_OF_TEXT
-
-}
-
-sub MY::postamble {
-  # Now build documentation.
-  use Pod::Find qw(pod_find simplify_name);
-  use Cwd;
-  my $cur_dir = getcwd();
-  # Find the files that contain POD, starting from the top-level build directory, and do it silently.
-  my %pods = pod_find({ -verbose => 0}, 
-		      File::Spec->catfile($cur_dir, "MOBY") );
-  my @PM = sort keys %pods;
-  my @MOD_NAMES = map {$pods{$_}} @PM;
-  # Make home for all docs
-  # If we build the home from here, it will only be built when the user runs "perl Makefile.PL"
-  # It's more robust to put it directly into the Makefile, 
-  # so that it can be rebuilt with a simple "make" if needed.
-  # But that would require figuring out how to walk a tree from the shell,
-  # and I don't have time for that. Maybe some other day.
-  my $HTML_ROOT = File::Spec->catfile($cur_dir, qw(docs html));
-  mkdir File::Spec->catfile($cur_dir, "docs") 
-    unless -e File::Spec->catfile($cur_dir, "docs");
-  mkdir $HTML_ROOT unless -e $HTML_ROOT;
-  # Create a new directory tree for the documentation, that mirrors the source tree.
-  use File::Find;
-  my @make_dirs_list;
-  sub wanted { # Define nested subroutine, to inherit variable scope
-    my $src_dir = $File::Find::dir;
-    (my $doc_dir = $src_dir) =~ s/$cur_dir/$HTML_ROOT/;
-#    print STDERR "EXamining $doc_dir\n";
-    if ( !($doc_dir =~ /CVS$/) ) {
-      push @make_dirs_list, $doc_dir # Always put into list, whether exists or not, since it goes into a rule
-	unless (grep /^$doc_dir$/, @make_dirs_list); # unless seen already
-      if (!(-e $doc_dir)) {
-	my $made_dir = mkdir $doc_dir;
-	if (!$made_dir) { 
-	  print STDERR "Couldn't create directory '$doc_dir' because '$!'"; 
-	}
-      }
-    }
-  }
-  find(\&wanted, File::Spec->catfile($cur_dir, "MOBY"));
-  # Finally, start writing the rules.
-  # Let's make a big rule to build all the docs at once, call it 'html'
-  # Then other little rules to keep each PM-file's docs up to date, without having to build everything.
-  my @HTML = map {  # Edit beginning and end of PM files, to make HTML filenames
-    my $x = $_; # Don't want to change the original...
-    $x =~ s/\.p[lm]$/\.html/; 
-    $x =~ s/^$cur_dir/$HTML_ROOT/; 
-    $x} @PM;
-  my $postamble = "# Rules to keep developer docs up-to-date.\n";
-  $postamble .= "POD_TO_HTML = " . join(" \\\n", @HTML) 
-    . "\n\nhtml: \$(POD_TO_HTML)\n";
-#  $postamble .= "\n\nHTML_DIRS = " . join(" \\\n", @make_dirs_list) . "\n";
-#    . "\n\nhtml:\n"; # \$(HTML_DIRS)
-#  $postamble .= "\$(HTML_DIRS):\n\tfor file in " 
-#    . join(" \\\n", @make_dirs_list) .
-#    "\\\n; do \\\n if [! -d \$\$file ] ; then mkdir \$\$file ; fi\\\n done\n\n";
-
-  # Now, finally, we build rules for the makefile.
-  # The TAB ('\t') characters are essential,  otherwise 'make' will silently ignore the rules.
-  # Don't be tempted to remove them.
-  for (my $i = 0;  $i < @PM; $i++) {
-    $postamble .= <<RULE;
-$HTML[$i]:$PM[$i]
-	\$(NOECHO) \$(ECHO) Generating HTML for MOBY::$MOD_NAMES[$i]
-	\$(NOECHO) pod2html --htmlroot=$HTML_ROOT --outfile=$HTML[$i] $PM[$i]
-RULE
-  }
-#  print "HTML_ROOT: $HTML_ROOT\n";
-  # Auto-generate an index page, with links to the individual POD-generated pages.
-  # Make sure it works on the local filesystem.
-  # Trim HTML files down to relative paths.
-  make_index_page(\@PM ,
-		  [ map { my $x= $_; $x =~ s/^$cur_dir\///; $x} @HTML ], 
-		  \@MOD_NAMES);
-  return $postamble;
-}
-
-
-sub make_index_page {
-  # Generate an index to the auto-generated HTML docs.
-  my ($pms, $html, $mod_names) = @_;
-  open INDEX, ">index.html" or die "Couldn't open index.html ($!)";
-  print INDEX <<HEAD;
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-  <meta http-equiv="content-type"
- content="text/html; charset=ISO-8859-1">
-  <title>MOBY-S Perl Module Documentation</title>
-</head>
-<body>
-<div style="text-align: center;">
-<h1>MOBY-S Perl Modules Documentation</h1>
-</div>
-For an overview of how to do various things in Perl, see the <a href='http://biomoby.open-bio.org/index.php/for-developers/perl_tutorial'>
-Perl Tutorial</a><p>
-The documents below (including this one) are generated by pod2html from the various perl
-modules and give specific interface information for each of the Perl modules described in the tutorial.
-
-<ul>
-HEAD
-  for (my $i = 0; $i < @{$pms}; $i++) {
-    print INDEX "<li><a href=\"$html->[$i]\">MOBY::$mod_names->[$i]</a></li>\n";
-  }
-print INDEX <<FOOT;
-</ul>
-</body>
-</html>
-FOOT
-}
-
-
-# Override built-in target, by adding the 'html' dependency
-# Now HTML gets updated every time you type "make"
-sub MY::top_targets {
-  my $self = shift;
-  my $string = $self->MM::top_targets;
-  my $add = 'html';
-  $string =~ s/\s+(pure_all)/ $add $1/;
-  return $string;
-}
-
-#sub MY::install {
-#  my $self = shift;
-#  my $string = $self->MM::install;
-#  my $add = 'html';
-#  $string =~ s/(pure_install\s+)(.*)/$1 $add $2/;
-#  print "INSTALL: $string\n";
-#  return $string;
-#}
-
-WriteMakefile(
-	      NAME	      => 'MOBY-S',
-	      VERSION	      => $VERSION, 
-	      # VERSION_FROM    => Would be nicer not to have to specify the version number here, but to take it directly from the codebase....
-	      PMLIBDIRS       => ['MOBY'], #Get code from "MOBY", not "lib/MOBY"
-	      # Version numbers specified for prerequiisites are simply "desired" versions,
-	      # not minimum, or anything else.
-	      PREREQ_PM     => {
-				'SOAP::Lite'       => 0.69,
-				'SOAP::MIME'       => 0.55,
-				'XML::LibXML'      => 1.58,
-				'XML::XPath'       => 1.12,
-				'Text::Shellwords' => 1.00,
-				'HTML::Entities'   => 0.01,
-				'Test::More'       => 0.60,
-				# Database stuff required only for local registry, but notify user if missing anyway.
-				'DBI'              => 0.01,
-				'DBD::mysql'       => 0.01,
-				'WSRF::Lite'		=> '',
-                'Test::Simple' => 0.44,
-                'XML::DOM'     => '',
-                'DateTime::Format::Epoch'  => '',
-                'DateTime::Format::W3CDTF' => '',
-                'HTTP::Daemon' => '',
-                'HTTP::Daemon::SSL' => '',
-                'MIME::Base64' => '',
-                'Digest::SHA1' => '',
-                'Crypt::OpenSSL::X509' => '',
-                'Crypt::OpenSSL::RSA' => '',
-                'XML::CanonicalizeXML' => 0.02,
-                'Sys::Hostname::Long' => '',
-			   	'RDF::Core' => '.51',
-				# Sharable only used for isAlive script
-	   			'IPC::Shareable' => '0.6', #presence of this lib makes windows a no no ...
-		  	    #obtain from http://sourceforge.net/project/showfiles.php?group_id=130827
-			    #'LS' => 1.1.4,
-					 
-	    }, # e.g., Module::Name => 1.1
-	    #PM_FILTER     => "", 
-	    ($] >= 5.005 ?    ## Add these new keywords supported since 5.005
-	    (ABSTRACT      => 'Perl binding for MOBY-S, a web-services toolkit for exchanging bioinformatic data',
-		AUTHOR        => 'Mark Wilkinson [markw at illuminae.com] and the BioMOBY Core Developers') : ()),
-);
-
-#
-# Insert additional MOBY specific Makefile targets
-#
-# 
-#sub MY::postamble {
-#	return <<"MAKE_FRAG";
-#Central:
-#	echo 'Make (local) MOBY Central stub'
-#
-#Server:
-#	echo 'Make (local) MOBY Server stub'
-#
-#WWWClient:
-#	echo 'Setting up MOBY WWW Client'
-#	cp scripts/MOBY-Client.cgi \$(MOBY_CGI_BIN_PATH)
-#	chown \$(MOBY_WWW_USER):\$(MOBY_WWW_GROUP) \$(MOBY_CGI_BIN_PATH)/MOBY-Client.cgi
-# 
-#MAKE_FRAG
-#}
-
-use ExtUtils::MakeMaker;
-use FindBin '$Bin';
-use strict;
-my $VERSION = '0.87';
-
-
-sub MY::postamble {
-  # Now build documentation.
-  use Pod::Find qw(pod_find simplify_name);
-  use Cwd;
-  my $cur_dir = getcwd();
-  # Find the files that contain POD, starting from the top-level build directory, and do it silently.
-  my %pods = pod_find({ -verbose => 0}, 
-		      File::Spec->catfile($cur_dir, "MOBY") );
-  my @PM = sort keys %pods;
-  my @MOD_NAMES = map {$pods{$_}} @PM;
-  # Make home for all docs
-  # If we build the home from here, it will only be built when the user runs "perl Makefile.PL"
-  # It's more robust to put it directly into the Makefile, 
-  # so that it can be rebuilt with a simple "make" if needed.
-  # But that would require figuring out how to walk a tree from the shell,
-  # and I don't have time for that. Maybe some other day.
-  my $HTML_ROOT = File::Spec->catfile($cur_dir, qw(docs html));
-  mkdir File::Spec->catfile($cur_dir, "docs") 
-    unless -e File::Spec->catfile($cur_dir, "docs");
-  mkdir $HTML_ROOT unless -e $HTML_ROOT;
-  # Create a new directory tree for the documentation, that mirrors the source tree.
-  use File::Find;
-  my @make_dirs_list;
-  sub wanted { # Define nested subroutine, to inherit variable scope
-    my $src_dir = $File::Find::dir;
-    (my $doc_dir = $src_dir) =~ s/$cur_dir/$HTML_ROOT/;
-#    print STDERR "EXamining $doc_dir\n";
-    if ( !($doc_dir =~ /CVS$/) ) {
-      push @make_dirs_list, $doc_dir # Always put into list, whether exists or not, since it goes into a rule
-	unless (grep /^$doc_dir$/, @make_dirs_list); # unless seen already
-      if (!(-e $doc_dir)) {
-	my $made_dir = mkdir $doc_dir;
-	if (!$made_dir) { 
-	  print STDERR "Couldn't create directory '$doc_dir' because '$!'"; 
-	}
-      }
-    }
-  }
-  find(\&wanted, File::Spec->catfile($cur_dir, "MOBY"));
-  # Finally, start writing the rules.
-  # Let's make a big rule to build all the docs at once, call it 'html'
-  # Then other little rules to keep each PM-file's docs up to date, without having to build everything.
-  my @HTML = map {  # Edit beginning and end of PM files, to make HTML filenames
-    my $x = $_; # Don't want to change the original...
-    $x =~ s/\.p[lm]$/\.html/; 
-    $x =~ s/^$cur_dir/$HTML_ROOT/; 
-    $x} @PM;
-  my $postamble = "# Rules to keep developer docs up-to-date.\n";
-  $postamble .= "POD_TO_HTML = " . join(" \\\n", @HTML) 
-    . "\n\nhtml: \$(POD_TO_HTML)\n";
-#  $postamble .= "\n\nHTML_DIRS = " . join(" \\\n", @make_dirs_list) . "\n";
-#    . "\n\nhtml:\n"; # \$(HTML_DIRS)
-#  $postamble .= "\$(HTML_DIRS):\n\tfor file in " 
-#    . join(" \\\n", @make_dirs_list) .
-#    "\\\n; do \\\n if [! -d \$\$file ] ; then mkdir \$\$file ; fi\\\n done\n\n";
-
-  # Now, finally, we build rules for the makefile.
-  # The TAB ('\t') characters are essential,  otherwise 'make' will silently ignore the rules.
-  # Don't be tempted to remove them.
-  for (my $i = 0;  $i < @PM; $i++) {
-    $postamble .= <<RULE;
-$HTML[$i]:$PM[$i]
-	\$(NOECHO) \$(ECHO) Generating HTML for MOBY::$MOD_NAMES[$i]
-	\$(NOECHO) pod2html --htmlroot=$HTML_ROOT --outfile=$HTML[$i] $PM[$i]
-RULE
-  }
-#  print "HTML_ROOT: $HTML_ROOT\n";
-  # Auto-generate an index page, with links to the individual POD-generated pages.
-  # Make sure it works on the local filesystem.
-  # Trim HTML files down to relative paths.
-  make_index_page(\@PM ,
-		  [ map { my $x= $_; $x =~ s/^$cur_dir\///; $x} @HTML ], 
-		  \@MOD_NAMES);
-  return $postamble;
-}
-
-
-sub make_index_page {
-  # Generate an index to the auto-generated HTML docs.
-  my ($pms, $html, $mod_names) = @_;
-  open INDEX, ">index.html" or die "Couldn't open index.html ($!)";
-  print INDEX <<HEAD;
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-  <meta http-equiv="content-type"
- content="text/html; charset=ISO-8859-1">
-  <title>MOBY-S Perl Module Documentation</title>
-</head>
-<body>
-<div style="text-align: center;">
-<h1>MOBY-S Perl Modules Documentation</h1>
-</div>
-For an overview of how to do various things in Perl, see the <a href='http://biomoby.open-bio.org/index.php/for-developers/perl_tutorial'>
-Perl Tutorial</a><p>
-The documents below (including this one) are generated by pod2html from the various perl
-modules and give specific interface information for each of the Perl modules described in the tutorial.
-
-<ul>
-HEAD
-  for (my $i = 0; $i < @{$pms}; $i++) {
-    print INDEX "<li><a href=\"$html->[$i]\">MOBY::$mod_names->[$i]</a></li>\n";
-  }
-print INDEX <<FOOT;
-</ul>
-</body>
-</html>
-FOOT
-}
-
-
-# Override built-in target, by adding the 'html' dependency
-# Now HTML gets updated every time you type "make"
-sub MY::top_targets {
-  my $self = shift;
-  my $string = $self->MM::top_targets;
-  my $add = 'html';
-  $string =~ s/\s+(pure_all)/ $add $1/;
-  return $string;
-}
-
-#sub MY::install {
-#  my $self = shift;
-#  my $string = $self->MM::install;
-#  my $add = 'html';
-#  $string =~ s/(pure_install\s+)(.*)/$1 $add $2/;
-#  print "INSTALL: $string\n";
-#  return $string;
-#}
-
-WriteMakefile(
-	      NAME	      => 'MOBY-S',
-	      VERSION	      => $VERSION, 
-	      # VERSION_FROM    => Would be nicer not to have to specify the version number here, but to take it directly from the codebase....
-	      PMLIBDIRS       => ['MOBY'], #Get code from "MOBY", not "lib/MOBY"
-	      # Version numbers specified for prerequiisites are simply "desired" versions,
-	      # not minimum, or anything else.
-	      PREREQ_PM     => {
-				'SOAP::Lite'       => 0.69,
-				'SOAP::MIME'       => 0.55,
-				'XML::LibXML'      => 1.58,
-				'XML::XPath'       => 1.12,
-				'Text::Shellwords' => 1.00,
-				'HTML::Entities'   => 0.01,
-				'Test::More'       => 0.60,
-				# Database stuff required only for local registry, but notify user if missing anyway.
-				'DBI'              => 0.01,
-				'DBD::mysql'       => 0.01,
-				# 'WSRF::Lite'		=> '0.8.2.1', but it is not declared in the proper way there
-				'WSRF::Lite'		=> '',
-                 'Test::Simple' => 0.44,
-                 'XML::DOM'     => '',
-                 'DateTime::Format::Epoch'  => '',
-                 'DateTime::Format::W3CDTF' => '',
-                 'HTTP::Daemon' => '',
-                 'HTTP::Daemon::SSL' => '',
-                 'MIME::Base64' => '',
-                 'Digest::SHA1' => '',
-                 'Crypt::OpenSSL::X509' => '',
-                 'Crypt::OpenSSL::RSA' => '',
-                 'XML::CanonicalizeXML' => 0.02,
-                 'Sys::Hostname::Long' => '',
-		  		 'RDF::Core' => '.51',
-				 #Sharable only used for isAlive script
-	   			 'IPC::Shareable' => '0.6', #presence of this lib makes windows a no no ...
-		  	     #obtain from http://sourceforge.net/project/showfiles.php?group_id=130827
-			     #'LS' => 1.1.4,
-	      }, # e.g., Module::Name => 1.1
-	      #PM_FILTER     => "", 
-	      ($] >= 5.005 ?    ## Add these new keywords supported since 5.005
-	       (ABSTRACT      => 'Perl binding for MOBY-S, a web-services toolkit for exchanging bioinformatic data',
-		AUTHOR        => 'Mark Wilkinson [markw at illuminae.com] and the BioMOBY Core Developers') : ()),
-);
-
-#
-# Insert additional MOBY specific Makefile targets
-#
-# 
-#sub MY::postamble {
-#	return <<"MAKE_FRAG";
-#Central:
-#	echo 'Make (local) MOBY Central stub'
-#
-#Server:
-#	echo 'Make (local) MOBY Server stub'
-#
-#WWWClient:
-#	echo 'Setting up MOBY WWW Client'
-#	cp scripts/MOBY-Client.cgi \$(MOBY_CGI_BIN_PATH)
-#	chown \$(MOBY_WWW_USER):\$(MOBY_WWW_GROUP) \$(MOBY_CGI_BIN_PATH)/MOBY-Client.cgi
-# 
-#MAKE_FRAG
-#}
-
+use ExtUtils::MakeMaker;
+use FindBin '$Bin';
+use strict;
+my $VERSION = '0.87';
+
+# need a way of relaying the information that LS cannot be found on CPAN
+eval "require LS";
+if ($@) {
+	print STDOUT <<'END_OF_TEXT';
+	
+############## IMPORTANT ##############
+Module 'LS' is not installed. This module is used
+**only** if you are wanting to host a LSID Authority!
+
+Unfortunately, this module is not available on CPAN 
+and must be manually installed. Some of the 
+dependencies are beta and as such, may not be stable.
+
+You can try searching Google using the keywords:
+
+	'perl LS lsid' 
+
+or, try downloading it from the following link:
+	
+	'http://sourceforge.net/project/showfiles.php?group_id=130827'
+
+
+END_OF_TEXT
+
+}
+
+sub MY::postamble {
+  # Now build documentation.
+  use Pod::Find qw(pod_find simplify_name);
+  use Cwd;
+  my $cur_dir = getcwd();
+  # Find the files that contain POD, starting from the top-level build directory, and do it silently.
+  my %pods = pod_find({ -verbose => 0}, 
+		      File::Spec->catfile($cur_dir, "MOBY") );
+  my @PM = sort keys %pods;
+  my @MOD_NAMES = map {$pods{$_}} @PM;
+  # Make home for all docs
+  # If we build the home from here, it will only be built when the user runs "perl Makefile.PL"
+  # It's more robust to put it directly into the Makefile, 
+  # so that it can be rebuilt with a simple "make" if needed.
+  # But that would require figuring out how to walk a tree from the shell,
+  # and I don't have time for that. Maybe some other day.
+  my $HTML_ROOT = File::Spec->catfile($cur_dir, qw(docs html));
+  mkdir File::Spec->catfile($cur_dir, "docs") 
+    unless -e File::Spec->catfile($cur_dir, "docs");
+  mkdir $HTML_ROOT unless -e $HTML_ROOT;
+  # Create a new directory tree for the documentation, that mirrors the source tree.
+  use File::Find;
+  my @make_dirs_list;
+  sub wanted { # Define nested subroutine, to inherit variable scope
+    my $src_dir = $File::Find::dir;
+    (my $doc_dir = $src_dir) =~ s/$cur_dir/$HTML_ROOT/;
+#    print STDERR "EXamining $doc_dir\n";
+    if ( !($doc_dir =~ /CVS$/) ) {
+      push @make_dirs_list, $doc_dir # Always put into list, whether exists or not, since it goes into a rule
+	unless (grep /^$doc_dir$/, @make_dirs_list); # unless seen already
+      if (!(-e $doc_dir)) {
+	my $made_dir = mkdir $doc_dir;
+	if (!$made_dir) { 
+	  print STDERR "Couldn't create directory '$doc_dir' because '$!'"; 
+	}
+      }
+    }
+  }
+  find(\&wanted, File::Spec->catfile($cur_dir, "MOBY"));
+  # Finally, start writing the rules.
+  # Let's make a big rule to build all the docs at once, call it 'html'
+  # Then other little rules to keep each PM-file's docs up to date, without having to build everything.
+  my @HTML = map {  # Edit beginning and end of PM files, to make HTML filenames
+    my $x = $_; # Don't want to change the original...
+    $x =~ s/\.p[lm]$/\.html/; 
+    $x =~ s/^$cur_dir/$HTML_ROOT/; 
+    $x} @PM;
+  my $postamble = "# Rules to keep developer docs up-to-date.\n";
+  $postamble .= "POD_TO_HTML = " . join(" \\\n", @HTML) 
+    . "\n\nhtml: \$(POD_TO_HTML)\n";
+#  $postamble .= "\n\nHTML_DIRS = " . join(" \\\n", @make_dirs_list) . "\n";
+#    . "\n\nhtml:\n"; # \$(HTML_DIRS)
+#  $postamble .= "\$(HTML_DIRS):\n\tfor file in " 
+#    . join(" \\\n", @make_dirs_list) .
+#    "\\\n; do \\\n if [! -d \$\$file ] ; then mkdir \$\$file ; fi\\\n done\n\n";
+
+  # Now, finally, we build rules for the makefile.
+  # The TAB ('\t') characters are essential,  otherwise 'make' will silently ignore the rules.
+  # Don't be tempted to remove them.
+  for (my $i = 0;  $i < @PM; $i++) {
+    $postamble .= <<RULE;
+$HTML[$i]:$PM[$i]
+	\$(NOECHO) \$(ECHO) Generating HTML for MOBY::$MOD_NAMES[$i]
+	\$(NOECHO) pod2html --htmlroot=$HTML_ROOT --outfile=$HTML[$i] $PM[$i]
+RULE
+  }
+#  print "HTML_ROOT: $HTML_ROOT\n";
+  # Auto-generate an index page, with links to the individual POD-generated pages.
+  # Make sure it works on the local filesystem.
+  # Trim HTML files down to relative paths.
+  make_index_page(\@PM ,
+		  [ map { my $x= $_; $x =~ s/^$cur_dir\///; $x} @HTML ], 
+		  \@MOD_NAMES);
+  return $postamble;
+}
+
+
+sub make_index_page {
+  # Generate an index to the auto-generated HTML docs.
+  my ($pms, $html, $mod_names) = @_;
+  open INDEX, ">index.html" or die "Couldn't open index.html ($!)";
+  print INDEX <<HEAD;
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+  <title>MOBY-S Perl Module Documentation</title>
+</head>
+<body>
+<div style="text-align: center;">
+<h1>MOBY-S Perl Modules Documentation</h1>
+</div>
+For an overview of how to do various things in Perl, see the <a href='http://biomoby.open-bio.org/index.php/for-developers/perl_tutorial'>
+Perl Tutorial</a><p>
+The documents below (including this one) are generated by pod2html from the various perl
+modules and give specific interface information for each of the Perl modules described in the tutorial.
+
+<ul>
+HEAD
+  for (my $i = 0; $i < @{$pms}; $i++) {
+    print INDEX "<li><a href=\"$html->[$i]\">MOBY::$mod_names->[$i]</a></li>\n";
+  }
+print INDEX <<FOOT;
+</ul>
+</body>
+</html>
+FOOT
+}
+
+
+# Override built-in target, by adding the 'html' dependency
+# Now HTML gets updated every time you type "make"
+sub MY::top_targets {
+  my $self = shift;
+  my $string = $self->MM::top_targets;
+  my $add = 'html';
+  $string =~ s/\s+(pure_all)/ $add $1/;
+  return $string;
+}
+
+#sub MY::install {
+#  my $self = shift;
+#  my $string = $self->MM::install;
+#  my $add = 'html';
+#  $string =~ s/(pure_install\s+)(.*)/$1 $add $2/;
+#  print "INSTALL: $string\n";
+#  return $string;
+#}
+
+WriteMakefile(
+	      NAME	      => 'MOBY-S',
+	      VERSION	      => $VERSION, 
+	      # VERSION_FROM    => Would be nicer not to have to specify the version number here, but to take it directly from the codebase....
+	      PMLIBDIRS       => ['MOBY'], #Get code from "MOBY", not "lib/MOBY"
+	      # Version numbers specified for prerequiisites are simply "desired" versions,
+	      # not minimum, or anything else.
+	      PREREQ_PM     => {
+				'SOAP::Lite'       => 0.69,
+				'SOAP::MIME'       => 0.55,
+				'XML::LibXML'      => 1.58,
+				'XML::XPath'       => 1.12,
+				'Text::Shellwords' => 1.00,
+				'HTML::Entities'   => 0.01,
+				'Test::More'       => 0.60,
+				# Database stuff required only for local registry, but notify user if missing anyway.
+				'DBI'              => 0.01,
+				'DBD::mysql'       => 0.01,
+				'WSRF::Lite'		=> '',
+                'Test::Simple' => 0.44,
+                'XML::DOM'     => '',
+                'DateTime::Format::Epoch'  => '',
+                'DateTime::Format::W3CDTF' => '',
+                'HTTP::Daemon' => '',
+                'HTTP::Daemon::SSL' => '',
+                'MIME::Base64' => '',
+                'Digest::SHA1' => '',
+                'Crypt::OpenSSL::X509' => '',
+                'Crypt::OpenSSL::RSA' => '',
+                'XML::CanonicalizeXML' => 0.02,
+                'Sys::Hostname::Long' => '',
+			   	'RDF::Core' => '.51',
+				# Sharable only used for isAlive script
+	   			#'IPC::Shareable' => '0.6', #presence of this lib makes windows a no no ...
+		  	    #obtain from http://sourceforge.net/project/showfiles.php?group_id=130827
+			    #'LS' => 1.1.4,
+					 
+	    }, # e.g., Module::Name => 1.1
+	    #PM_FILTER     => "", 
+	    ($] >= 5.005 ?    ## Add these new keywords supported since 5.005
+	    (ABSTRACT      => 'Perl binding for MOBY-S, a web-services toolkit for exchanging bioinformatic data',
+		AUTHOR        => 'Mark Wilkinson [markw at illuminae.com] and the BioMOBY Core Developers') : ()),
+);
+
+#
+# Insert additional MOBY specific Makefile targets
+#
+# 
+#sub MY::postamble {
+#	return <<"MAKE_FRAG";
+#Central:
+#	echo 'Make (local) MOBY Central stub'
+#
+#Server:
+#	echo 'Make (local) MOBY Server stub'
+#
+#WWWClient:
+#	echo 'Setting up MOBY WWW Client'
+#	cp scripts/MOBY-Client.cgi \$(MOBY_CGI_BIN_PATH)
+#	chown \$(MOBY_WWW_USER):\$(MOBY_WWW_GROUP) \$(MOBY_CGI_BIN_PATH)/MOBY-Client.cgi
+# 
+#MAKE_FRAG
+#}
+
+use ExtUtils::MakeMaker;
+use FindBin '$Bin';
+use strict;
+my $VERSION = '0.87';
+
+
+sub MY::postamble {
+  # Now build documentation.
+  use Pod::Find qw(pod_find simplify_name);
+  use Cwd;
+  my $cur_dir = getcwd();
+  # Find the files that contain POD, starting from the top-level build directory, and do it silently.
+  my %pods = pod_find({ -verbose => 0}, 
+		      File::Spec->catfile($cur_dir, "MOBY") );
+  my @PM = sort keys %pods;
+  my @MOD_NAMES = map {$pods{$_}} @PM;
+  # Make home for all docs
+  # If we build the home from here, it will only be built when the user runs "perl Makefile.PL"
+  # It's more robust to put it directly into the Makefile, 
+  # so that it can be rebuilt with a simple "make" if needed.
+  # But that would require figuring out how to walk a tree from the shell,
+  # and I don't have time for that. Maybe some other day.
+  my $HTML_ROOT = File::Spec->catfile($cur_dir, qw(docs html));
+  mkdir File::Spec->catfile($cur_dir, "docs") 
+    unless -e File::Spec->catfile($cur_dir, "docs");
+  mkdir $HTML_ROOT unless -e $HTML_ROOT;
+  # Create a new directory tree for the documentation, that mirrors the source tree.
+  use File::Find;
+  my @make_dirs_list;
+  sub wanted { # Define nested subroutine, to inherit variable scope
+    my $src_dir = $File::Find::dir;
+    (my $doc_dir = $src_dir) =~ s/$cur_dir/$HTML_ROOT/;
+#    print STDERR "EXamining $doc_dir\n";
+    if ( !($doc_dir =~ /CVS$/) ) {
+      push @make_dirs_list, $doc_dir # Always put into list, whether exists or not, since it goes into a rule
+	unless (grep /^$doc_dir$/, @make_dirs_list); # unless seen already
+      if (!(-e $doc_dir)) {
+	my $made_dir = mkdir $doc_dir;
+	if (!$made_dir) { 
+	  print STDERR "Couldn't create directory '$doc_dir' because '$!'"; 
+	}
+      }
+    }
+  }
+  find(\&wanted, File::Spec->catfile($cur_dir, "MOBY"));
+  # Finally, start writing the rules.
+  # Let's make a big rule to build all the docs at once, call it 'html'
+  # Then other little rules to keep each PM-file's docs up to date, without having to build everything.
+  my @HTML = map {  # Edit beginning and end of PM files, to make HTML filenames
+    my $x = $_; # Don't want to change the original...
+    $x =~ s/\.p[lm]$/\.html/; 
+    $x =~ s/^$cur_dir/$HTML_ROOT/; 
+    $x} @PM;
+  my $postamble = "# Rules to keep developer docs up-to-date.\n";
+  $postamble .= "POD_TO_HTML = " . join(" \\\n", @HTML) 
+    . "\n\nhtml: \$(POD_TO_HTML)\n";
+#  $postamble .= "\n\nHTML_DIRS = " . join(" \\\n", @make_dirs_list) . "\n";
+#    . "\n\nhtml:\n"; # \$(HTML_DIRS)
+#  $postamble .= "\$(HTML_DIRS):\n\tfor file in " 
+#    . join(" \\\n", @make_dirs_list) .
+#    "\\\n; do \\\n if [! -d \$\$file ] ; then mkdir \$\$file ; fi\\\n done\n\n";
+
+  # Now, finally, we build rules for the makefile.
+  # The TAB ('\t') characters are essential,  otherwise 'make' will silently ignore the rules.
+  # Don't be tempted to remove them.
+  for (my $i = 0;  $i < @PM; $i++) {
+    $postamble .= <<RULE;
+$HTML[$i]:$PM[$i]
+	\$(NOECHO) \$(ECHO) Generating HTML for MOBY::$MOD_NAMES[$i]
+	\$(NOECHO) pod2html --htmlroot=$HTML_ROOT --outfile=$HTML[$i] $PM[$i]
+RULE
+  }
+#  print "HTML_ROOT: $HTML_ROOT\n";
+  # Auto-generate an index page, with links to the individual POD-generated pages.
+  # Make sure it works on the local filesystem.
+  # Trim HTML files down to relative paths.
+  make_index_page(\@PM ,
+		  [ map { my $x= $_; $x =~ s/^$cur_dir\///; $x} @HTML ], 
+		  \@MOD_NAMES);
+  return $postamble;
+}
+
+
+sub make_index_page {
+  # Generate an index to the auto-generated HTML docs.
+  my ($pms, $html, $mod_names) = @_;
+  open INDEX, ">index.html" or die "Couldn't open index.html ($!)";
+  print INDEX <<HEAD;
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+  <title>MOBY-S Perl Module Documentation</title>
+</head>
+<body>
+<div style="text-align: center;">
+<h1>MOBY-S Perl Modules Documentation</h1>
+</div>
+For an overview of how to do various things in Perl, see the <a href='http://biomoby.open-bio.org/index.php/for-developers/perl_tutorial'>
+Perl Tutorial</a><p>
+The documents below (including this one) are generated by pod2html from the various perl
+modules and give specific interface information for each of the Perl modules described in the tutorial.
+
+<ul>
+HEAD
+  for (my $i = 0; $i < @{$pms}; $i++) {
+    print INDEX "<li><a href=\"$html->[$i]\">MOBY::$mod_names->[$i]</a></li>\n";
+  }
+print INDEX <<FOOT;
+</ul>
+</body>
+</html>
+FOOT
+}
+
+
+# Override built-in target, by adding the 'html' dependency
+# Now HTML gets updated every time you type "make"
+sub MY::top_targets {
+  my $self = shift;
+  my $string = $self->MM::top_targets;
+  my $add = 'html';
+  $string =~ s/\s+(pure_all)/ $add $1/;
+  return $string;
+}
+
+#sub MY::install {
+#  my $self = shift;
+#  my $string = $self->MM::install;
+#  my $add = 'html';
+#  $string =~ s/(pure_install\s+)(.*)/$1 $add $2/;
+#  print "INSTALL: $string\n";
+#  return $string;
+#}
+
+WriteMakefile(
+	      NAME	      => 'MOBY-S',
+	      VERSION	      => $VERSION, 
+	      # VERSION_FROM    => Would be nicer not to have to specify the version number here, but to take it directly from the codebase....
+	      PMLIBDIRS       => ['MOBY'], #Get code from "MOBY", not "lib/MOBY"
+	      # Version numbers specified for prerequiisites are simply "desired" versions,
+	      # not minimum, or anything else.
+	      PREREQ_PM     => {
+				'SOAP::Lite'       => 0.69,
+				'SOAP::MIME'       => 0.55,
+				'XML::LibXML'      => 1.58,
+				'XML::XPath'       => 1.12,
+				'Text::Shellwords' => 1.00,
+				'HTML::Entities'   => 0.01,
+				'Test::More'       => 0.60,
+				# Database stuff required only for local registry, but notify user if missing anyway.
+				'DBI'              => 0.01,
+				'DBD::mysql'       => 0.01,
+				# 'WSRF::Lite'		=> '0.8.2.1', but it is not declared in the proper way there
+				'WSRF::Lite'		=> '',
+                 'Test::Simple' => 0.44,
+                 'XML::DOM'     => '',
+                 'DateTime::Format::Epoch'  => '',
+                 'DateTime::Format::W3CDTF' => '',
+                 'HTTP::Daemon' => '',
+                 'HTTP::Daemon::SSL' => '',
+                 'MIME::Base64' => '',
+                 'Digest::SHA1' => '',
+                 'Crypt::OpenSSL::X509' => '',
+                 'Crypt::OpenSSL::RSA' => '',
+                 'XML::CanonicalizeXML' => 0.02,
+                 'Sys::Hostname::Long' => '',
+		  		 'RDF::Core' => '.51',
+				 #Sharable only used for isAlive script
+	   			 #'IPC::Shareable' => '0.6', #presence of this lib makes windows a no no ...
+		  	     #obtain from http://sourceforge.net/project/showfiles.php?group_id=130827
+			     #'LS' => 1.1.4,
+	      }, # e.g., Module::Name => 1.1
+	      #PM_FILTER     => "", 
+	      ($] >= 5.005 ?    ## Add these new keywords supported since 5.005
+	       (ABSTRACT      => 'Perl binding for MOBY-S, a web-services toolkit for exchanging bioinformatic data',
+		AUTHOR        => 'Mark Wilkinson [markw at illuminae.com] and the BioMOBY Core Developers') : ()),
+);
+
+#
+# Insert additional MOBY specific Makefile targets
+#
+# 
+#sub MY::postamble {
+#	return <<"MAKE_FRAG";
+#Central:
+#	echo 'Make (local) MOBY Central stub'
+#
+#Server:
+#	echo 'Make (local) MOBY Server stub'
+#
+#WWWClient:
+#	echo 'Setting up MOBY WWW Client'
+#	cp scripts/MOBY-Client.cgi \$(MOBY_CGI_BIN_PATH)
+#	chown \$(MOBY_WWW_USER):\$(MOBY_WWW_GROUP) \$(MOBY_CGI_BIN_PATH)/MOBY-Client.cgi
+# 
+#MAKE_FRAG
+#}
+




More information about the MOBY-guts mailing list