Subversion Repositories DevTools

Rev

Rev 277 | Rev 363 | 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;
361 dpurdie 40
my $opt_interface;
229 dpurdie 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,
361 dpurdie 55
                "InterfaceDir=s"    => \$opt_interface,
229 dpurdie 56
                "Verbose:s"         => \$opt_vargs,
57
 
227 dpurdie 58
                );
59
 
229 dpurdie 60
#
61
#   Process help and manual options
62
#
63
pod2usage(-verbose => 0, -message => "Version: $VERSION")  if ($opt_help == 1  || ! $result);
64
pod2usage(-verbose => 1)  if ($opt_help == 2 );
65
pod2usage(-verbose => 2)  if ($opt_manual || $opt_help > 2);
227 dpurdie 66
 
67
#
229 dpurdie 68
#   Init the error and message subsystem
227 dpurdie 69
#
229 dpurdie 70
$opt_verbose += 2 unless ( $opt_vargs eq '@' );
71
ErrorConfig( 'name'    => 'RELEASE_JATS',
72
             'verbose' => $opt_verbose );
227 dpurdie 73
 
229 dpurdie 74
SystemConfig ('ExitOnError' => 1 );
361 dpurdie 75
InitFileUtils();
227 dpurdie 76
 
77
#
229 dpurdie 78
#   Sanity Test arguments
227 dpurdie 79
#
229 dpurdie 80
Error ("Not expecting any command line arguments" )
81
    if ( $#ARGV >= 0);
227 dpurdie 82
 
229 dpurdie 83
#
275 dpurdie 84
#   Diagnostics
85
#
86
Verbose ( "BuildName: ", $opt_buildname );
87
Verbose ( "BuildVersion: ", $opt_buildversion );
88
Verbose ( "PackageDir: ", $opt_package );
89
Verbose ( "BuildRoot: ", $opt_root );
361 dpurdie 90
Verbose ( "Interface: ", $opt_interface );
275 dpurdie 91
 
361 dpurdie 92
 
275 dpurdie 93
#
229 dpurdie 94
#   Ensure we have all required parameters
95
#
96
Error ("No build name provided" ) unless ( $opt_buildname );
97
Error ("No build version provided" ) unless ( $opt_buildversion );
98
Error ("No package directory provided" ) unless ( $opt_package );
99
Error ("No build root provided" ) unless ( $opt_root );
100
Error ("Build root is not a directory " ) unless ( -d $opt_root );
361 dpurdie 101
Error ("No interface directory provided" ) unless ( $opt_interface );
102
Error ("Interface directory is not a directory" ) unless ( -d $opt_interface );
227 dpurdie 103
 
104
#
229 dpurdie 105
#   Import Environment Variables
227 dpurdie 106
#
229 dpurdie 107
my $GBE_PERL = $ENV{GBE_PERL} || Error ("Environment variable GBE_PERL not set");
108
my $GBE_CORE = $ENV{GBE_CORE} || Error ("Environment variable GBE_CORE not set");
227 dpurdie 109
 
229 dpurdie 110
#
275 dpurdie 111
#   Setup logging options for the copy functions
112
#
113
SetCopyDirDefaults ('Log' => 0 );
114
 
115
#
229 dpurdie 116
#   Remove any existing package directory
117
#
227 dpurdie 118
 
229 dpurdie 119
Message "Create package image: $opt_package";
275 dpurdie 120
CreateDir ($opt_package, 'DeleteFirst' => 1 );
227 dpurdie 121
 
122
 
277 dpurdie 123
Message "Copy in: BIN dirs";
124
CopyDir ( $opt_root, $opt_package, 'MatchDirs' => ['BIN.*'], 'SkipTLF' => 1 );
125
 
361 dpurdie 126
for my $dir qw(CFG TEMPLATES TOOLS HTML)
227 dpurdie 127
{
229 dpurdie 128
    Message "Copy in: $dir";
275 dpurdie 129
    CopyDir ( "$opt_root/$dir", $opt_package,
361 dpurdie 130
                'IgnoreDirs' => ['LOCAL', 'JatsDocTools'],
275 dpurdie 131
                'KeepSrcTail' => 1);
227 dpurdie 132
}
133
 
243 dpurdie 134
for my $file qw(Readme.txt ChangeLog.txt)
227 dpurdie 135
{
229 dpurdie 136
    Message "Copy in: $file";
275 dpurdie 137
    CopyFile ( "$opt_root/$file", $opt_package );
227 dpurdie 138
}
139
 
243 dpurdie 140
for my $file qw(PostInstall.sh)
141
{
142
    Message "Copy in: $file";
275 dpurdie 143
    CopyFile ( $file, $opt_package );
243 dpurdie 144
}
145
 
227 dpurdie 146
#
147
#   Update version info in some files
148
#
229 dpurdie 149
foreach my $file qw( TOOLS/jats.sh TOOLS/jats.bat TOOLS/jats.pl )
227 dpurdie 150
{
229 dpurdie 151
    Message "Insert version into: $file";
152
    my @opts;
153
    push @opts, ( $file =~ m~\.bat$~ ? '-dos' : '-unix' );
154
    unlink "$opt_package/$file";
275 dpurdie 155
    JatsTool ("jats_transform_file.pl",
156
                 "-infile=$opt_root/$file",
157
                 "-outfile=$opt_package/$file",
158
                 "-tag=VERSION_TAG,$opt_buildversion",
159
                 "-tag=PACKAGE_TAG,$opt_buildname",
160
                 "-tag=RELEASE_TAG,",
161
                 @opts
162
                );
227 dpurdie 163
}
164
 
165
#
229 dpurdie 166
#   Ensure that the jats.pl file has the correct version information
167
#   inserted into it, by this tool
227 dpurdie 168
#
229 dpurdie 169
Message ("Validate version embedded into jats.pl" );
170
my $file = "$opt_package/TOOLS/jats.pl";
171
my $jversion;
172
open ( FH, '<', $file ) || Error ("Cannot open: $file", "Reason: $!");
173
while ( <FH> )
227 dpurdie 174
{
229 dpurdie 175
    next unless ( m~\s*my\s+\$GBE_VERSION\s+=\s+['"](.*)['"]~ );
176
    $jversion = $1;
177
    last;
227 dpurdie 178
 
179
}
229 dpurdie 180
close FH;
227 dpurdie 181
 
361 dpurdie 182
 
183
#
184
#   Generate the HTML documenation from the POD
185
#   Generate the HTML TOc
186
#
187
Message ("Generate HTML documentation" );
188
use JatsDocTools::JatsDocTools;
189
JatsDocTools::UpdateHTML( 'force' => 0,
190
                          'verbose' => $opt_verbose,
191
                          'htmldir' => FullPath("$opt_package/HTML"),
192
                          'prefix' => FullPath($opt_package),
193
                          'cacheDir' => FullPath($opt_interface),
194
                          'ChangeLog' => FullPath("$opt_root/ChangeLog.txt"),
195
                          'index' => 1,
196
                          );
197
 
198
Error ("Cannot locate GBE_VERSION in jats.pl" ) unless ( $jversion );
229 dpurdie 199
Error ("GBE_VERSION definition in jats.pl Does not match released version.",
200
        "Expecting: $opt_buildversion",
201
        "Got      : $jversion") unless( $jversion eq $opt_buildversion );
202
 
203
 
204
 
205
exit 0;
206
 
227 dpurdie 207
#-------------------------------------------------------------------------------
229 dpurdie 208
#   Documentation
227 dpurdie 209
#
210
 
229 dpurdie 211
=pod
227 dpurdie 212
 
229 dpurdie 213
=head1 NAME
227 dpurdie 214
 
229 dpurdie 215
MakePackage - Release Jats
227 dpurdie 216
 
229 dpurdie 217
=head1 SYNOPSIS
227 dpurdie 218
 
229 dpurdie 219
 MakePackage [options]
227 dpurdie 220
 
229 dpurdie 221
 Options:
222
    -help               - Brief help message
223
    -help -help         - Detailed help message
224
    -man                - Full documentation
225
    -BuildName=text     - Name of the package being built
226
    -BuildVersion=text  - Version of the package being built
227
    -PackageDir=path    - Path to the packaging target directory
228
    -BuildRoot=path     - Path to the root of the build
229
    -Verbose=text       - Verbosity control
230
 
227 dpurdie 231
 
229 dpurdie 232
=head1 OPTIONS
227 dpurdie 233
 
229 dpurdie 234
=over 8
235
 
236
=item B<-help>
237
 
238
Print a brief help message and exits.
239
 
240
=item B<-help -help>
241
 
242
Print a detailed help message with an explanation for each option.
243
 
244
=item B<-man>
245
 
246
Prints the manual page and exits.
247
 
248
=head1 DESCRIPTION
249
 
250
No user servicable parts in this script.
251
 
252
=cut
253
 
254