Imported Upstream version 1.4.10
This commit is contained in:
		
							parent
							
								
									6dd54dd8e2
								
							
						
					
					
						commit
						cff68b4c0a
					
				
					 203 changed files with 15026 additions and 8063 deletions
				
			
		
							
								
								
									
										86
									
								
								tools/build_perl_modules
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										86
									
								
								tools/build_perl_modules
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,86 @@
 | 
			
		|||
#!/usr/bin/perl
 | 
			
		||||
# SYNTAX:
 | 
			
		||||
#	build_perl_modules -d dest_dir [-c] [-m] [-t] [-i] tarball_dir
 | 
			
		||||
#
 | 
			
		||||
# DESCRIPTION:
 | 
			
		||||
#	Installs perl modules found in tarball_dir
 | 
			
		||||
#	Expects a file called install_order, containing one line per distribution name
 | 
			
		||||
#	Will take action against each distribution in turn
 | 
			
		||||
#	-d is a necessary destination directory for the perl mods
 | 
			
		||||
#	If -c is set, will remove the module build directories and exit
 | 
			
		||||
#	If -m is set, will run perl Makefile.PL and make
 | 
			
		||||
#	If -t is set, will run make test
 | 
			
		||||
#	If -i is set, will run make install
 | 
			
		||||
#	Options are discrete. This is because an overall ./configure, make, make test, make install
 | 
			
		||||
#	are run in different invocations. Obviously, you can't run a -t without a -m, but there's no
 | 
			
		||||
#	checking here for that
 | 
			
		||||
 | 
			
		||||
# Can only use base modules
 | 
			
		||||
use warnings;
 | 
			
		||||
use strict;
 | 
			
		||||
use Config;
 | 
			
		||||
use Getopt::Std;
 | 
			
		||||
use Cwd;
 | 
			
		||||
use File::Path;
 | 
			
		||||
 | 
			
		||||
my $opts = {};
 | 
			
		||||
getopts('d:cmti', $opts) || die "Invalid options";
 | 
			
		||||
my $moddir = shift @ARGV or die "Must specify a directory where tarballs exist";
 | 
			
		||||
 | 
			
		||||
my $destdir = $opts->{d};
 | 
			
		||||
die "Must set a destination directory" unless $destdir;
 | 
			
		||||
 | 
			
		||||
chdir $moddir or die "Cannot change to $moddir";
 | 
			
		||||
open F, "install_order" or die "Cannot open install_order file";
 | 
			
		||||
my @files = grep { ! /^#/ && chop } <F>;
 | 
			
		||||
close F;
 | 
			
		||||
 | 
			
		||||
my @tarballs;
 | 
			
		||||
foreach my $f (@files) {
 | 
			
		||||
	# Needs to be better. Also, what if there are two with same name?
 | 
			
		||||
	my $tarball;
 | 
			
		||||
	eval '$tarball = <'."$f".'*.tar.gz>';
 | 
			
		||||
	die unless ($tarball);
 | 
			
		||||
	print "Got $f, with file: $tarball",$/;
 | 
			
		||||
	push @tarballs, $tarball;
 | 
			
		||||
	(my $dir = $tarball) =~ s/\.tar.gz//;
 | 
			
		||||
	# Need to do cleaning before doing each module in turn
 | 
			
		||||
	if ($opts->{c}) {
 | 
			
		||||
		print "Cleaning $dir",$/;
 | 
			
		||||
		rmtree($dir);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($opts->{c}) {
 | 
			
		||||
	print "Finished cleaning",$/;
 | 
			
		||||
	exit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
my $topdir = cwd();
 | 
			
		||||
foreach my $tarball (@tarballs) {
 | 
			
		||||
	(my $dir = $tarball) =~ s/\.tar.gz//;
 | 
			
		||||
	if ($opts->{m}) {
 | 
			
		||||
		# Don't compile if already done - this is because of invocating this
 | 
			
		||||
		# script at different stages
 | 
			
		||||
		unless (-e $dir) {
 | 
			
		||||
			system("gunzip -c $tarball | tar -xf -") == 0 or die "Cannot extract $tarball";
 | 
			
		||||
			chdir $dir or die "Can't chdir into $dir";
 | 
			
		||||
			system("perl Makefile.PL PREFIX=$destdir INSTALLDIRS=site LIB=$destdir/lib") == 0 or die "Can't run perl Makefile.PL";
 | 
			
		||||
			system("make") == 0 or die "Can't run make";
 | 
			
		||||
			chdir $topdir or die "Can't chdir to top";;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	chdir $dir or die "Can't chdir into $dir";
 | 
			
		||||
 | 
			
		||||
	# Need to add this so this module is found for subsequent ones
 | 
			
		||||
	$ENV{PERL5LIB}="$topdir/$dir/blib/lib:$ENV{PERL5LIB}";
 | 
			
		||||
 | 
			
		||||
	if ($opts->{t}) {
 | 
			
		||||
		system("make test") == 0 or die "Can't run make test failed";
 | 
			
		||||
	}
 | 
			
		||||
	if ($opts->{i}) {
 | 
			
		||||
		system("make install SITEPREFIX=$destdir") == 0 or die "Can't run make install";
 | 
			
		||||
	}
 | 
			
		||||
	chdir $topdir or die "Can't go back to $topdir";
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue