Rev 2026 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#! perl######################################################################### Copyright ( C ) 2004 ERG Limited, 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 variablesmy $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 anythingconnectRM(\$RM_DB) unless ( $RM_DB );# First get details from pv_idmy $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 1getPkgDetailsByRTAG_ID(5702); # 5702 : Beijing Release 2#getPkgDetailsByRTAG_ID(2641); # 2641 : NZS Phase-1checkDepends();#DebugDumpData("GDATA", \@GDATA);exit;