Subversion Repositories DevTools

Rev

Rev 7299 | Details | Compare with Previous | Last modification | View Log | RSS feed

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