Subversion Repositories DevTools

Rev

Rev 243 | Rev 275 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
227 dpurdie 1
#! perl
2
########################################################################
229 dpurdie 3
# Copyright (C) 2007 ERG Limited, All rights reserved
227 dpurdie 4
#
229 dpurdie 5
# Module name   : MakePackage.pl
227 dpurdie 6
# Module type   : Makefile system
7
# Compiler(s)   : n/a
8
# Environment(s): jats
9
#
229 dpurdie 10
# Description   : This script is invoked by the builder to:
11
#                   1) Perform sanity tests
12
#                   2) Package up jats
13
#                 This script is really used to 'release' JATS.
227 dpurdie 14
#
229 dpurdie 15
#                 This script must be executed within a JATS environment
16
#                 JATS required JATS to build itself.
17
#
227 dpurdie 18
# Usage:
19
#
20
#......................................................................#
21
 
22
use strict;
23
use warnings;
24
use Cwd;
25
use Getopt::Long;
229 dpurdie 26
use Pod::Usage;
27
use File::Basename;
28
use File::Find;
29
use File::Path;
30
use File::Copy;
31
use JatsError;
32
use JatsSystem;
227 dpurdie 33
 
229 dpurdie 34
my $VERSION = "1.0.0";
35
my $opt_help = 0;
36
my $opt_manual = 0;
37
my $opt_buildname;
38
my $opt_buildversion;
39
my $opt_package;
40
my $opt_root;
41
my $opt_verbose = $ENV{'GBE_VERBOSE'};
42
my $opt_vargs;
227 dpurdie 43
 
44
#
45
#   Parse the user options
46
#
47
my $result = GetOptions (
229 dpurdie 48
                "help+"             => \$opt_help,
49
                "manual"            => \$opt_manual,
50
 
51
                "BuildName=s"       => \$opt_buildname,
52
                "BuildVersion=s"    => \$opt_buildversion,
53
                "PackageDir=s"      => \$opt_package,
54
                "BuildRoot=s"       => \$opt_root,
55
                "Verbose:s"         => \$opt_vargs,
56
 
227 dpurdie 57
                );
58
 
229 dpurdie 59
#
60
#   Process help and manual options
61
#
62
pod2usage(-verbose => 0, -message => "Version: $VERSION")  if ($opt_help == 1  || ! $result);
63
pod2usage(-verbose => 1)  if ($opt_help == 2 );
64
pod2usage(-verbose => 2)  if ($opt_manual || $opt_help > 2);
227 dpurdie 65
 
66
#
229 dpurdie 67
#   Init the error and message subsystem
227 dpurdie 68
#
229 dpurdie 69
$opt_verbose += 2 unless ( $opt_vargs eq '@' );
70
ErrorConfig( 'name'    => 'RELEASE_JATS',
71
             'verbose' => $opt_verbose );
227 dpurdie 72
 
229 dpurdie 73
SystemConfig ('ExitOnError' => 1 );
227 dpurdie 74
 
75
#
229 dpurdie 76
#   Sanity Test arguments
227 dpurdie 77
#
229 dpurdie 78
Error ("Not expecting any command line arguments" )
79
    if ( $#ARGV >= 0);
227 dpurdie 80
 
229 dpurdie 81
#
82
#   Ensure we have all required parameters
83
#
84
Error ("No build name provided" ) unless ( $opt_buildname );
85
Error ("No build version provided" ) unless ( $opt_buildversion );
86
Error ("No package directory provided" ) unless ( $opt_package );
87
Error ("No build root provided" ) unless ( $opt_root );
88
Error ("Build root is not a directory " ) unless ( -d $opt_root );
227 dpurdie 89
 
90
#
229 dpurdie 91
#   Import Environment Variables
227 dpurdie 92
#
229 dpurdie 93
my $GBE_PERL = $ENV{GBE_PERL} || Error ("Environment variable GBE_PERL not set");
94
my $GBE_CORE = $ENV{GBE_CORE} || Error ("Environment variable GBE_CORE not set");
227 dpurdie 95
 
229 dpurdie 96
#
97
#   Remove any existing package directory
98
#
99
if ( -d $opt_package )
100
{
101
    Message ("Removing existing package image");
102
    rmtree( $opt_package);
103
}
227 dpurdie 104
 
229 dpurdie 105
Message "Create package image: $opt_package";
106
mkpath($opt_package, 0, 0775);
227 dpurdie 107
 
108
 
229 dpurdie 109
for my $dir (glob ("$opt_root/BIN.*" ))
227 dpurdie 110
{
229 dpurdie 111
    Message "Copy in: $dir";
112
    System ("cp -r $dir $opt_package")
227 dpurdie 113
}
114
 
115
for my $dir qw(CFG TEMPLATES TOOLS)
116
{
229 dpurdie 117
    Message "Copy in: $dir";
118
    System ("cp -r $opt_root/$dir $opt_package")
227 dpurdie 119
}
120
 
121
for my $dir qw(TOOLS/LOCAL)
122
{
229 dpurdie 123
    Message "Remove: $dir";
124
    rmtree( "$opt_package/$dir" );
227 dpurdie 125
}
126
 
243 dpurdie 127
for my $file qw(Readme.txt ChangeLog.txt)
227 dpurdie 128
{
229 dpurdie 129
    Message "Copy in: $file";
130
    System ("cp -r $opt_root/$file $opt_package")
227 dpurdie 131
}
132
 
243 dpurdie 133
for my $file qw(PostInstall.sh)
134
{
135
    Message "Copy in: $file";
136
    System ("cp -r $file $opt_package")
137
}
138
 
227 dpurdie 139
#
140
#   Update version info in some files
141
#
229 dpurdie 142
foreach my $file qw( TOOLS/jats.sh TOOLS/jats.bat TOOLS/jats.pl )
227 dpurdie 143
{
229 dpurdie 144
    Message "Insert version into: $file";
145
    my @opts;
146
    push @opts, ( $file =~ m~\.bat$~ ? '-dos' : '-unix' );
147
    unlink "$opt_package/$file";
148
    System ( "$GBE_PERL", "$GBE_CORE/TOOLS/jats_transform_file.pl",
149
             "-infile=$opt_root/$file",
150
             "-outfile=$opt_package/$file",
151
             "-tag=VERSION_TAG,$opt_buildversion",
152
             "-tag=PACKAGE_TAG,$opt_buildname",
153
             "-tag=RELEASE_TAG,",
154
             @opts
155
            );
227 dpurdie 156
}
157
 
158
#
229 dpurdie 159
#   Ensure that the jats.pl file has the correct version information
160
#   inserted into it, by this tool
227 dpurdie 161
#
229 dpurdie 162
Message ("Validate version embedded into jats.pl" );
163
my $file = "$opt_package/TOOLS/jats.pl";
164
my $jversion;
165
open ( FH, '<', $file ) || Error ("Cannot open: $file", "Reason: $!");
166
while ( <FH> )
227 dpurdie 167
{
229 dpurdie 168
    next unless ( m~\s*my\s+\$GBE_VERSION\s+=\s+['"](.*)['"]~ );
169
    $jversion = $1;
170
    last;
227 dpurdie 171
 
172
}
229 dpurdie 173
close FH;
227 dpurdie 174
 
229 dpurdie 175
Error ("Cannot locate GBE_VERSION in jats.p" ) unless ( $jversion );
176
Error ("GBE_VERSION definition in jats.pl Does not match released version.",
177
        "Expecting: $opt_buildversion",
178
        "Got      : $jversion") unless( $jversion eq $opt_buildversion );
179
 
180
 
181
 
182
exit 0;
183
 
227 dpurdie 184
#-------------------------------------------------------------------------------
229 dpurdie 185
#   Documentation
227 dpurdie 186
#
187
 
229 dpurdie 188
=pod
227 dpurdie 189
 
229 dpurdie 190
=head1 NAME
227 dpurdie 191
 
229 dpurdie 192
MakePackage - Release Jats
227 dpurdie 193
 
229 dpurdie 194
=head1 SYNOPSIS
227 dpurdie 195
 
229 dpurdie 196
 MakePackage [options]
227 dpurdie 197
 
229 dpurdie 198
 Options:
199
    -help               - Brief help message
200
    -help -help         - Detailed help message
201
    -man                - Full documentation
202
    -BuildName=text     - Name of the package being built
203
    -BuildVersion=text  - Version of the package being built
204
    -PackageDir=path    - Path to the packaging target directory
205
    -BuildRoot=path     - Path to the root of the build
206
    -Verbose=text       - Verbosity control
207
 
227 dpurdie 208
 
229 dpurdie 209
=head1 OPTIONS
227 dpurdie 210
 
229 dpurdie 211
=over 8
212
 
213
=item B<-help>
214
 
215
Print a brief help message and exits.
216
 
217
=item B<-help -help>
218
 
219
Print a detailed help message with an explanation for each option.
220
 
221
=item B<-man>
222
 
223
Prints the manual page and exits.
224
 
225
=head1 DESCRIPTION
226
 
227
No user servicable parts in this script.
228
 
229
=cut
230
 
231