Subversion Repositories DevTools

Rev

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