Subversion Repositories DevTools

Rev

Rev 5710 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#! perl
########################################################################
# COPYRIGHT - VIX IP PTY LTD ("VIX"). ALL RIGHTS RESERVED.
#
# Module name   : jats.sh
# Module type   : Makefile system
# Compiler(s)   : n/a
# Environment(s): jats
#
# Description   : Display the currently released version of ALL packages
#                 that are a part of a given release
#
#                 Determine all the dependancies and display a list of
#                 missing packages
#
#                 Currently hard coded to Beijing Release-2
#
# Usage:
#
# Version   Who      Date        Description
#
#......................................................................#

require 5.006_001;
use strict;
use warnings;
use JatsError;
use JatsVersionUtils;
use JatsRmApi;

#use Data::Dumper;
use DBI;
use Cwd;

my $GBE_PERL     = $ENV{'GBE_PERL'};        # Essential ENV variables
my $GBE_CORE     = $ENV{'GBE_CORE'};
my $opt_verbose = 1;
my $RM_DB;
my @GDATA;
my %BuildPackages;
my %ReleasePackages;

sub getPkgDetailsByRTAG_ID
{
    my ($RTAG_ID) = @_;
    my $foundDetails = 0;
    my (@row);

    # if we are not or cannot connect then return 0 as we have not found anything
    connectRM(\$RM_DB) unless ( $RM_DB );

    # First get details from pv_id

    my $m_sqlstr = "SELECT pv.PV_ID, pkg.PKG_NAME, pv.PKG_VERSION, pv.PKG_LABEL, pv.SRC_PATH, pv.BUILD_TYPE" .
                    " FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv, PACKAGES pkg" .
                    " WHERE rc.RTAG_ID = $RTAG_ID AND rc.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID";
    my $sth = $RM_DB->prepare($m_sqlstr);
    if ( defined($sth) )
    {
        if ( $sth->execute( ) )
        {
            if ( $sth->rows )
            {
                while ( @row = $sth->fetchrow_array )
                {
                    my %DATA;
                    my $pv_id = $DATA{pv_id}                = $row[0];
                    my $name = $DATA{name}      = $row[1];
                    my $ver = $DATA{version}    = $row[2];
                    my $label                   = $row[3] || '';
                    my $path                    = $row[4] || '';

                    my ( $xname, $rel, $suf ) = SplitPackage( $name, $ver );
                    $DATA{rel} = $rel;
                    $DATA{suf} = $suf;

                    my ( $pn, $pv, $pp ) = SplitPackage( $name, $ver );
                    $ReleasePackages{$pn}{$pp}{$pv} = $pv_id;
                    

#                    next if ( $ver =~ /cr$/i );
#                    next if ( $ver =~ /mas$/i );
#                    next unless ( $ver =~ /cots$/i );

                    $path =~ tr~\\/~/~s;
#                    next if ( $path =~ m~^/~  );
print "$row[5] --";
printf ( "%40s %15s %50s %s\n",  $name, $ver, $label, $path);
#printf ( "copy e:\\%s\\%s .\n",  $name, $ver, $label, $path);

                    push @GDATA, (\%DATA);

                    #
                    #   Now get the dependancies
                    #
                    GetDepends ( $pv_id ,$name, $ver );
                }
            }
            $sth->finish();
        }
    }
    else
    {
        Error("Prepare failure" );
    }

    disconnectDB();
}

#-------------------------------------------------------------------------------
# Function        : GetDepends
#
# Description     :
#
# Inputs          : $pvid
#
# Returns         :
#
sub GetDepends
{
    my ($pv_id, $name, $ver ) = @_;

    #
    #   Now extract the package dependacies
    #
    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";
    my $sth = $RM_DB->prepare($m_sqlstr);
    if ( defined($sth) )
    {
        if ( $sth->execute( ) )
        {
            if ( $sth->rows )
            {
                while ( my @row = $sth->fetchrow_array )
                {
                    print "$name ===== @row\n";
                    my ( $pn, $pv, $pp ) = SplitPackage( $row[0], $row[1] );
                    $BuildPackages{$pn}{$pp} = $pv;

#                    print  ' ' x 4, "$pn $pv $pp";
#                    if ( $rp ne $pv )
#                    {
#                        print "  ----- Package not in release. Needs $rp";
#                    }
#                    print "\n";
                }
            }
            $sth->finish();
        }
    }
    else
    {
        Error("GetDepends:Prepare failure" );
    }
}

#-------------------------------------------------------------------------------
# Function        : checkDepends
#
# Description     :
#
# Inputs          :
#
# Returns         :
#
sub checkDepends
{
    foreach my $pn ( sort keys %BuildPackages )
    {
        foreach my $pp ( sort keys %{$BuildPackages{$pn}}  )
        {
            if ( exists($ReleasePackages{$pn}{$pp}) )
            {
            }
            elsif ( exists($ReleasePackages{$pn}{'bei'}) )
            {

                print "DEPENDANCY NOT FOUND: $pn, $pp - But a BEI one does exist\n";
            }
            elsif ( exists($ReleasePackages{$pn}{'syd'}) )
            {

                print "DEPENDANCY NOT FOUND: $pn, $pp - But a SYD one does exist\n";
            }
            else
            {
                print "DEPENDANCY NOT FOUND: $pn, $pp\n";
            }
        }
    }
}

#-------------------------------------------------------------------------------
# Function        : Main
#
# Description     :
#
# Inputs          :
#
# Returns         :
#

ErrorConfig( 'name'    =>'PLAY7' );


#getPkgDetailsByRTAG_ID(2301);           # 2301 : Seattle I7
#etPkgDetailsByRTAG_ID(2362);           # 2362 : Syd Release 1
#getPkgDetailsByRTAG_ID(1861);           # 1861 : Syd Release Legacy
#getPkgDetailsByRTAG_ID(3462);           # 3462 : Beijing Release 1
getPkgDetailsByRTAG_ID(5702);           # 5702 : Beijing Release 2
#getPkgDetailsByRTAG_ID(2641);           # 2641 : NZS Phase-1


checkDepends();
#DebugDumpData("GDATA", \@GDATA);
exit;