Subversion Repositories DevTools

Rev

Rev 275 | Rev 361 | 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;
275 dpurdie 27
 
229 dpurdie 28
use JatsError;
29
use JatsSystem;
275 dpurdie 30
use FileUtils;
31
use JatsCopy;
227 dpurdie 32
 
229 dpurdie 33
my $VERSION = "1.0.0";
34
my $opt_help = 0;
35
my $opt_manual = 0;
36
my $opt_buildname;
37
my $opt_buildversion;
38
my $opt_package;
39
my $opt_root;
40
my $opt_verbose = $ENV{'GBE_VERBOSE'};
41
my $opt_vargs;
227 dpurdie 42
 
43
#
44
#   Parse the user options
45
#
46
my $result = GetOptions (
229 dpurdie 47
                "help+"             => \$opt_help,
48
                "manual"            => \$opt_manual,
49
 
50
                "BuildName=s"       => \$opt_buildname,
51
                "BuildVersion=s"    => \$opt_buildversion,
52
                "PackageDir=s"      => \$opt_package,
53
                "BuildRoot=s"       => \$opt_root,
54
                "Verbose:s"         => \$opt_vargs,
55
 
227 dpurdie 56
                );
57
 
229 dpurdie 58
#
59
#   Process help and manual options
60
#
61
pod2usage(-verbose => 0, -message => "Version: $VERSION")  if ($opt_help == 1  || ! $result);
62
pod2usage(-verbose => 1)  if ($opt_help == 2 );
63
pod2usage(-verbose => 2)  if ($opt_manual || $opt_help > 2);
227 dpurdie 64
 
65
#
229 dpurdie 66
#   Init the error and message subsystem
227 dpurdie 67
#
229 dpurdie 68
$opt_verbose += 2 unless ( $opt_vargs eq '@' );
69
ErrorConfig( 'name'    => 'RELEASE_JATS',
70
             'verbose' => $opt_verbose );
227 dpurdie 71
 
229 dpurdie 72
SystemConfig ('ExitOnError' => 1 );
227 dpurdie 73
 
74
#
229 dpurdie 75
#   Sanity Test arguments
227 dpurdie 76
#
229 dpurdie 77
Error ("Not expecting any command line arguments" )
78
    if ( $#ARGV >= 0);
227 dpurdie 79
 
229 dpurdie 80
#
275 dpurdie 81
#   Diagnostics
82
#
83
Verbose ( "BuildName: ", $opt_buildname );
84
Verbose ( "BuildVersion: ", $opt_buildversion );
85
Verbose ( "PackageDir: ", $opt_package );
86
Verbose ( "BuildRoot: ", $opt_root );
87
 
88
#
229 dpurdie 89
#   Ensure we have all required parameters
90
#
91
Error ("No build name provided" ) unless ( $opt_buildname );
92
Error ("No build version provided" ) unless ( $opt_buildversion );
93
Error ("No package directory provided" ) unless ( $opt_package );
94
Error ("No build root provided" ) unless ( $opt_root );
95
Error ("Build root is not a directory " ) unless ( -d $opt_root );
227 dpurdie 96
 
97
#
229 dpurdie 98
#   Import Environment Variables
227 dpurdie 99
#
229 dpurdie 100
my $GBE_PERL = $ENV{GBE_PERL} || Error ("Environment variable GBE_PERL not set");
101
my $GBE_CORE = $ENV{GBE_CORE} || Error ("Environment variable GBE_CORE not set");
227 dpurdie 102
 
229 dpurdie 103
#
275 dpurdie 104
#   Setup logging options for the copy functions
105
#
106
SetCopyDirDefaults ('Log' => 0 );
107
 
108
#
229 dpurdie 109
#   Remove any existing package directory
110
#
227 dpurdie 111
 
229 dpurdie 112
Message "Create package image: $opt_package";
275 dpurdie 113
CreateDir ($opt_package, 'DeleteFirst' => 1 );
227 dpurdie 114
 
115
 
277 dpurdie 116
Message "Copy in: BIN dirs";
117
CopyDir ( $opt_root, $opt_package, 'MatchDirs' => ['BIN.*'], 'SkipTLF' => 1 );
118
 
227 dpurdie 119
for my $dir qw(CFG TEMPLATES TOOLS)
120
{
229 dpurdie 121
    Message "Copy in: $dir";
275 dpurdie 122
    CopyDir ( "$opt_root/$dir", $opt_package,
123
                'IgnoreDirs' => ['LOCAL'],
124
                'KeepSrcTail' => 1);
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";
275 dpurdie 130
    CopyFile ( "$opt_root/$file", $opt_package );
227 dpurdie 131
}
132
 
243 dpurdie 133
for my $file qw(PostInstall.sh)
134
{
135
    Message "Copy in: $file";
275 dpurdie 136
    CopyFile ( $file, $opt_package );
243 dpurdie 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";
275 dpurdie 148
    JatsTool ("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