[Bio] / FigRelEngTools / install-code Repository:
ViewVC logotype

Annotation of /FigRelEngTools/install-code

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download)

1 : olson 1.1 #!/usr/bin/perl
2 :    
3 :     use strict;
4 :    
5 :     use File::Copy;
6 :     use File::Basename;
7 :    
8 :     #
9 :     # Assemble a new FIGdisk from a code distribution. This script is assumed
10 :     # to be found in the same directory as the three tarfiles that make up a distribution:
11 :     #
12 :     # env-XX.tgz Compiled-code environment
13 :     # code-YY.tgz Lightweight code
14 :     # BLASTMAT.tgz Blast inputs
15 :     #
16 :     # Each of these is a tarfile. env-file extracts to a directory called "env".
17 :     # code-file is named code-<version>.tgz. It extracts to a directory <version>.
18 :     # blastmat-file extracts to a directory BLASTMAT.
19 :     #
20 :     # This script takes a single argument: the name of a directory that does not yet
21 :     # exist that will hold the new installation.
22 :     #
23 :    
24 :     if (@ARGV != 1)
25 :     {
26 :     die "Usage: $0 destination-dir\n";
27 :     }
28 :    
29 :     my($dest_dir) = @ARGV;
30 :    
31 :     #
32 :     # Lstat in case the destination is a symlink that points nowhere.
33 :     #
34 :     if (my @s = lstat($dest_dir))
35 :     {
36 :     die "Error: Destination directory $dest_dir already exists\n";
37 :     }
38 :    
39 :     my($env_file, $code_file, $blastmat_file);
40 :    
41 :     $env_file = find_by_pattern("env-*.tgz");
42 :     $code_file = find_by_pattern("code-*.tgz");
43 :     $blastmat_file = File::Spec->rel2abs("BLASTMAT.tgz");
44 :    
45 :     if (! -f $env_file)
46 :     {
47 :     die "Environment file $env_file not found\n";
48 :     }
49 :     if (! -f $code_file)
50 :     {
51 :     die "Code file $code_file not found\n";
52 :     }
53 :     if (! -f $blastmat_file)
54 :     {
55 :     die "Blastmat file $blastmat_file not found\n";
56 :     }
57 :    
58 :     #
59 :     # Determine the code release name.
60 :     #
61 :    
62 :     my $code_version;
63 :     {
64 :     my $base = basename($code_file);
65 :     if ($base =~ /code-(.*).tgz/)
66 :     {
67 :     $code_version = $1;
68 :     }
69 :     else
70 :     {
71 :     die "Invalid code release filename $code_file\n";
72 :     }
73 :     }
74 :    
75 :     #
76 :     # We're okay. Create and chdir to the destination, and unpack.
77 :     #
78 :    
79 :     mkdir($dest_dir) or die "Error: cannot mkdir $dest_dir: $!\n";
80 :    
81 :     chdir($dest_dir) or die "Error: cannot chdir $dest_dir: $!\n";
82 :    
83 :    
84 :     print "Unpacking environment from $env_file\n";
85 :     (system("tar zxf $env_file") == 0) or die "Extract of environment from $env_file failed: $!\n";
86 :    
87 :     print "Unpacking BLASTMAT from $blastmat_file\n";
88 :     (system("tar zxf $blastmat_file") == 0) or die "Extract of BLASTMAT from $blastmat_file failed: $!\n";
89 :    
90 :     open(F, ">DEFAULT_RELEASE");
91 :     print F "$code_version\n";
92 :     close(F);
93 :    
94 :     mkdir("FIG");
95 :     mkdir("FIG/Tmp");
96 :     chmod(0777, "FIG/Tmp");
97 :    
98 :     mkdir("dist");
99 :     mkdir("dist/releases");
100 :    
101 :     print "Unpacking code release $code_version\n";
102 :    
103 :     (system("cd dist/releases; tar zxf $code_file") == 0) or die "Extract of code from $code_file failed: $!\n";
104 :    
105 :     copy("dist/releases/$code_version/FigCommon/configure", "configure");
106 :     chmod(0755, "configure");
107 :    
108 :     copy("dist/releases/$code_version/ReleaseTools/Makefile.top", "dist/releases/$code_version/Makefile");
109 :    
110 :     #
111 :     # Find a file matching this pattern, and ensure that both it exists, and that
112 :     # it is unique.
113 :     #
114 :     sub find_by_pattern
115 :     {
116 :     my($pat) = @_;
117 :    
118 :     my @r = glob($pat);
119 :    
120 :     if (@r == 1)
121 :     {
122 :     return File::Spec->rel2abs($r[0]);
123 :     }
124 :     elsif (@r == 0)
125 :     {
126 :     die "File matching pattern $pat not found.\n";
127 :     }
128 :     else
129 :     {
130 :     die "Multiple files found matching pattern $pat.\n";
131 :     }
132 :    
133 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3