Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
392 dpurdie 1
#! perl
2
########################################################################
5710 dpurdie 3
# Copyright (c) VIX TECHNOLOGY (AUST) LTD
392 dpurdie 4
#
5
# Module name   : jats.sh
6
# Module type   : Makefile system
7
# Compiler(s)   : n/a
8
# Environment(s): jats
9
#
10
# Description   : Get package information
11
#                 for a package name and version as specified on the
12
#                 command line.
13
#
14
#                 Walks backwards and locates the previous version of the
15
#                 package. The is repeated.
16
#
17
# Usage:
18
#
19
# Version   Who      Date        Description
20
#
21
#......................................................................#
22
 
23
require 5.006_001;
24
use strict;
25
use warnings;
26
use JatsError;
27
use JatsRmApi;
28
 
29
 
30
#use Data::Dumper;
31
use Cwd;
32
use DBI;
33
use Getopt::Long;
34
use Pod::Usage;                             # required for help support
35
 
36
my $GBE_PERL     = $ENV{'GBE_PERL'};        # Essential ENV variables
37
my $GBE_CORE     = $ENV{'GBE_CORE'};
38
my $RM_DB;
39
 
40
################################################################################
41
#   Global data
42
#
43
my $VERSION = "1.0.0";
44
my %ReleasePackages;            # Packages in the release
45
my %BuildPackages;              # Packages for this build
46
my $base_name;
47
my $base_version;
48
my $last_pv_id;
49
 
50
 
51
#
52
#   Options
53
#
54
my $opt_help = 0;
55
my $opt_manual = 0;
56
my $opt_verbose = 0;
57
 
58
my $result = GetOptions (
59
                "help+"     => \$opt_help,          # flag, multiple use allowed
60
                "manual"    => \$opt_manual,        # flag
61
                "verbose+"  => \$opt_verbose,       # flag
62
                );
63
 
64
#
65
#   Process help and manual options
66
#
67
pod2usage(-verbose => 0, -message => "Version: $VERSION")  if ($opt_help == 1  || ! $result);
68
pod2usage(-verbose => 1)  if ($opt_help == 2 );
69
pod2usage(-verbose => 2)  if ($opt_manual || ($opt_help > 2));
70
 
71
#
72
#   Configure the error reporting process now that we have the user options
73
#
74
ErrorConfig( 'name'    =>'PLAY9',
75
             'verbose' => $opt_verbose );
76
 
77
unless ( $ARGV[0] && $ARGV[1] )
78
{
79
    Error( "Specify a package as 'name' 'version'" );
80
}
81
$base_name = $ARGV[0];
82
$base_version = $ARGV[1];
83
Verbose( "Base Package: $base_name, $base_version");
84
 
85
#
86
#   Body of the process
87
#
88
GetData ( $base_name, $base_version );
89
 
90
my %seen_pvid;
91
 
92
while ( ! exists ($seen_pvid{$last_pv_id } ))
93
{
94
    $seen_pvid{$last_pv_id} = 1;
95
    GetData_bypvid( $last_pv_id );
96
}
97
 
98
exit 0;
99
 
100
 
101
#-------------------------------------------------------------------------------
102
# Function        : GetData
103
#
104
# Description     :
105
#
106
# Inputs          : pkg_name
107
#                   pkg_ver
108
#
109
# Returns         :
110
#
111
sub GetData
112
{
113
    my ( $pkg_name, $pkg_ver ) = @_;
114
    my (@row);
115
    my $pv_id;
116
 
117
    #
118
    #   Establish a connection to Release Manager
119
    #
120
    connectRM(\$RM_DB) unless ( $RM_DB );
121
 
122
    #
123
    #   Extract data from Release Manager
124
    #
125
    my $m_sqlstr = "SELECT pkg.PKG_NAME, pkg.PKG_ID, pv.PKG_VERSION, pv.PV_ID, pv.SRC_PATH, pbi.BSA_ID, pv.LAST_PV_ID" .
126
                   " FROM PACKAGES pkg, PACKAGE_VERSIONS pv, PACKAGE_BUILD_INFO pbi" .
127
                   " WHERE pkg.PKG_NAME = \'$pkg_name\' AND pkg.PKG_ID = pv.PKG_ID AND pv.PKG_VERSION = \'$pkg_ver\' AND pv.PV_ID = pbi.PV_ID";
128
 
129
    my $sth = $RM_DB->prepare($m_sqlstr);
130
    if ( defined($sth) )
131
    {
132
        if ( $sth->execute( ) )
133
        {
134
            if ( $sth->rows )
135
            {
136
                while ( @row = $sth->fetchrow_array )
137
                {
138
                    Verbose( "DATA: " . join(',', @row) );
139
                    my $path = $row[4] || 'None Specified';
140
                    my $be = $row[5] || 'Unknown';
141
                    $last_pv_id = $row[6] || 'Unknown';
142
                    print "$pkg_name, $pkg_ver, $path, $be, $last_pv_id\n";
143
                    last;
144
                }
145
            }
146
            $sth->finish();
147
        }
148
    }
149
    else
150
    {
151
        Error("GetData:Prepare failure" );
152
    }
153
}
154
 
155
#-------------------------------------------------------------------------------
156
# Function        : GetData_bypvid
157
#
158
# Description     :
159
#
160
# Inputs          : pv_id
161
#
162
# Returns         :
163
#
164
sub GetData_bypvid
165
{
166
    my ( $pv_id ) = @_;
167
    my (@row);
168
 
169
    #
170
    #   Establish a connection to Release Manager
171
    #
172
    connectRM(\$RM_DB) unless ( $RM_DB );
173
 
174
    #
175
    #   Extract data from Release Manager
176
    #
177
    my $m_sqlstr = "SELECT pkg.PKG_NAME, pv.PKG_VERSION, pkg.PKG_ID, pv.PV_ID, pv.LAST_PV_ID".
178
                   " FROM PACKAGES pkg, PACKAGE_VERSIONS pv" .
179
                   " WHERE pv.PV_ID = \'$pv_id\' AND pkg.PKG_ID = pv.PKG_ID";
180
 
181
 
182
    my $sth = $RM_DB->prepare($m_sqlstr);
183
    if ( defined($sth) )
184
    {
185
        if ( $sth->execute( ) )
186
        {
187
            if ( $sth->rows )
188
            {
189
                while ( @row = $sth->fetchrow_array )
190
                {
191
                    Verbose( "DATA: " . join(',', @row) );
192
                    my $pkg_name = $row[0] || 'Unknown';
193
                    my $pkg_ver = $row[1] || 'Unknown';
194
                    $last_pv_id = $row[4] || 'Unknown';
195
                    print "$pkg_name, $pkg_ver, $last_pv_id\n";
196
                    last;
197
                }
198
            }
199
            $sth->finish();
200
        }
201
    }
202
    else
203
    {
204
        Error("GetData:Prepare failure" );
205
    }
206
}