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   : Display the currently released version of ALL packages
11
#                 that are a part of a given release
12
#
13
#                 Determine all the dependancies and display a list of
14
#                 missing packages
15
#
16
#                 Currently hard coded to Beijing Release-2
17
#
18
# Usage:
19
#
20
# Version   Who      Date        Description
21
#
22
#......................................................................#
23
 
24
require 5.006_001;
25
use strict;
26
use warnings;
27
use JatsError;
28
use JatsVersionUtils;
29
use JatsRmApi;
30
 
31
#use Data::Dumper;
32
use DBI;
33
use Cwd;
34
 
35
my $GBE_PERL     = $ENV{'GBE_PERL'};        # Essential ENV variables
36
my $GBE_CORE     = $ENV{'GBE_CORE'};
37
my $opt_verbose = 1;
38
my $RM_DB;
39
my @GDATA;
40
my %BuildPackages;
41
my %ReleasePackages;
42
 
43
sub getPkgDetailsByRTAG_ID
44
{
45
    my ($RTAG_ID) = @_;
46
    my $foundDetails = 0;
47
    my (@row);
48
 
49
    # if we are not or cannot connect then return 0 as we have not found anything
50
    connectRM(\$RM_DB) unless ( $RM_DB );
51
 
52
    # First get details from pv_id
53
 
54
    my $m_sqlstr = "SELECT pv.PV_ID, pkg.PKG_NAME, pv.PKG_VERSION, pv.PKG_LABEL, pv.SRC_PATH, pv.BUILD_TYPE" .
55
                    " FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv, PACKAGES pkg" .
56
                    " WHERE rc.RTAG_ID = $RTAG_ID AND rc.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID";
57
    my $sth = $RM_DB->prepare($m_sqlstr);
58
    if ( defined($sth) )
59
    {
60
        if ( $sth->execute( ) )
61
        {
62
            if ( $sth->rows )
63
            {
64
                while ( @row = $sth->fetchrow_array )
65
                {
66
                    my %DATA;
67
                    my $pv_id = $DATA{pv_id}                = $row[0];
68
                    my $name = $DATA{name}      = $row[1];
69
                    my $ver = $DATA{version}    = $row[2];
70
                    my $label                   = $row[3] || '';
71
                    my $path                    = $row[4] || '';
72
 
73
                    my ( $xname, $rel, $suf ) = SplitPackage( $name, $ver );
74
                    $DATA{rel} = $rel;
75
                    $DATA{suf} = $suf;
76
 
77
                    my ( $pn, $pv, $pp ) = SplitPackage( $name, $ver );
78
                    $ReleasePackages{$pn}{$pp}{$pv} = $pv_id;
79
 
80
 
81
#                    next if ( $ver =~ /cr$/i );
82
#                    next if ( $ver =~ /mas$/i );
83
#                    next unless ( $ver =~ /cots$/i );
84
 
85
                    $path =~ tr~\\/~/~s;
86
#                    next if ( $path =~ m~^/~  );
87
print "$row[5] --";
88
printf ( "%40s %15s %50s %s\n",  $name, $ver, $label, $path);
89
#printf ( "copy e:\\%s\\%s .\n",  $name, $ver, $label, $path);
90
 
91
                    push @GDATA, (\%DATA);
92
 
93
                    #
94
                    #   Now get the dependancies
95
                    #
96
                    GetDepends ( $pv_id ,$name, $ver );
97
                }
98
            }
99
            $sth->finish();
100
        }
101
    }
102
    else
103
    {
104
        Error("Prepare failure" );
105
    }
106
 
107
    disconnectDB();
108
}
109
 
110
#-------------------------------------------------------------------------------
111
# Function        : GetDepends
112
#
113
# Description     :
114
#
115
# Inputs          : $pvid
116
#
117
# Returns         :
118
#
119
sub GetDepends
120
{
121
    my ($pv_id, $name, $ver ) = @_;
122
 
123
    #
124
    #   Now extract the package dependacies
125
    #
126
    my $m_sqlstr = "SELECT pkg.PKG_NAME, pv.PKG_VERSION FROM PACKAGE_DEPENDENCIES pd, PACKAGE_VERSIONS pv, PACKAGES pkg WHERE pd.PV_ID = \'$pv_id\' AND pd.DPV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID";
127
    my $sth = $RM_DB->prepare($m_sqlstr);
128
    if ( defined($sth) )
129
    {
130
        if ( $sth->execute( ) )
131
        {
132
            if ( $sth->rows )
133
            {
134
                while ( my @row = $sth->fetchrow_array )
135
                {
136
                    print "$name ===== @row\n";
137
                    my ( $pn, $pv, $pp ) = SplitPackage( $row[0], $row[1] );
138
                    $BuildPackages{$pn}{$pp} = $pv;
139
 
140
#                    print  ' ' x 4, "$pn $pv $pp";
141
#                    if ( $rp ne $pv )
142
#                    {
143
#                        print "  ----- Package not in release. Needs $rp";
144
#                    }
145
#                    print "\n";
146
                }
147
            }
148
            $sth->finish();
149
        }
150
    }
151
    else
152
    {
153
        Error("GetDepends:Prepare failure" );
154
    }
155
}
156
 
157
#-------------------------------------------------------------------------------
158
# Function        : checkDepends
159
#
160
# Description     :
161
#
162
# Inputs          :
163
#
164
# Returns         :
165
#
166
sub checkDepends
167
{
168
    foreach my $pn ( sort keys %BuildPackages )
169
    {
170
        foreach my $pp ( sort keys %{$BuildPackages{$pn}}  )
171
        {
172
            if ( exists($ReleasePackages{$pn}{$pp}) )
173
            {
174
            }
175
            elsif ( exists($ReleasePackages{$pn}{'bei'}) )
176
            {
177
 
178
                print "DEPENDANCY NOT FOUND: $pn, $pp - But a BEI one does exist\n";
179
            }
180
            elsif ( exists($ReleasePackages{$pn}{'syd'}) )
181
            {
182
 
183
                print "DEPENDANCY NOT FOUND: $pn, $pp - But a SYD one does exist\n";
184
            }
185
            else
186
            {
187
                print "DEPENDANCY NOT FOUND: $pn, $pp\n";
188
            }
189
        }
190
    }
191
}
192
 
193
#-------------------------------------------------------------------------------
194
# Function        : Main
195
#
196
# Description     :
197
#
198
# Inputs          :
199
#
200
# Returns         :
201
#
202
 
203
ErrorConfig( 'name'    =>'PLAY7' );
204
 
205
 
206
#getPkgDetailsByRTAG_ID(2301);           # 2301 : Seattle I7
207
#etPkgDetailsByRTAG_ID(2362);           # 2362 : Syd Release 1
208
#getPkgDetailsByRTAG_ID(1861);           # 1861 : Syd Release Legacy
209
#getPkgDetailsByRTAG_ID(3462);           # 3462 : Beijing Release 1
210
getPkgDetailsByRTAG_ID(5702);           # 5702 : Beijing Release 2
211
#getPkgDetailsByRTAG_ID(2641);           # 2641 : NZS Phase-1
212
 
213
 
214
checkDepends();
215
#DebugDumpData("GDATA", \@GDATA);
216
exit;
217
 
218