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 : Uses a "raw_data.txt file to extract data to draw pretty# pictures. Not used any more## Usage:## Version Who Date Description##......................................................................#require 5.006_001;use strict;use warnings;use Data::Dumper;use Cwd;#-------------------------------------------------------------------------------# Globals#my %packages;my %required_packages;my %needed_by;#-------------------------------------------------------------------------------# Read in the build.xml file#open FH, '<raw_data.txt' or die "Can't open build.xml";while ( <FH> ){chomp;# print "$_\n";AddPackage( $_ );}close FH;## Display results#DebugDumpData ('Packages', \%packages );DebugDumpData ('Inverse', \%needed_by );## Extract package information# Given a package 'xxx' determine the packages that are needed to build it##AddToPackages( 'daf_br.syd' , 'daf_services.syd' );# , 'AVMApplicationEngine.syd', 'AVMComponentLayer.syd', 'gate_ferry.syd', 'gate_monorail.syd', 'gate_rail.syd', 'hcp5000.syd', 'IDC.syd', 'IDCDB.syd', 'ocp5000.syd', 'PDTD.syd', 'safpd.syd', 'ssu5000.syd', 'StaAvmMainIo.syd', 'tp5000.syd', 'vcp5000.syd');AddToPackages( 'safpd.syd' );DebugDumpData ('Needed Packages', \%required_packages );## Display details of the required packages#print "Required Packages and versions\n";foreach my $alias ( sort keys %required_packages ){my $name = $packages{$alias}{'name'};my $ext = $packages{$alias}{'ext'};my $version = $packages{$alias}{'version'};my $label = $packages{$alias}{'label'};my $path = $packages{$alias}{'path'};print STDERR "ERROR: No name for: $alias\n" unless $name;print STDERR "ERROR: No version for: $alias\n" unless $version;my $pname = $name . '_' . $version;$pname .= $ext if ( $ext );printf( "%-40s, %-50s, %s\n", $pname, $label, $path);}exit 0;#-------------------------------------------------------------------------------# Function : AddPackage## Description : Extract package information## Inputs :## Returns :#sub AddPackage{my %data;my ( $line ) = @_;my ( $alias, $name, $ext, $version, $planned, $label, $path, @depends )= split ',', $line;# print "Name: $data{name}\n";# print "Value:$data{value}\n";$label = '' if ( !$label || $label =~ m~^n/?a$~i || $label =~ m~^none$~i);$path = '' if ( !$path || $path =~ m~^n/?a$~i || $path =~ m~^none$~i || $path =~ m~^not applicable$~i);unless ( $path =~ m~^/\w~ ){printf ("WARNING: Bad path: %-40s : %s\n", $alias, $path );}$packages{$alias}{'name'} = $name;$packages{$alias}{'ext'} = $ext;$packages{$alias}{'version'} = $version;$packages{$alias}{'plannel'} = $planned if $planned;$packages{$alias}{'label'} = $label;$packages{$alias}{'path'} = $path;my @clean_depends;foreach ( @depends ){s~\${~~;s~}~~;push @clean_depends, $_;push @{$needed_by{$_}}, $alias;}$packages{$alias}{'depends'} = \@clean_depends;}#-------------------------------------------------------------------------------# Function : AddToPackages## Description : Add packages to the list of required packages## Inputs :## Returns :#sub AddToPackages{foreach my $pkg ( @_ ){next if ( exists $required_packages{$pkg} );if ( exists $packages{$pkg} ){AddToPackages( @{$packages{$pkg}{'depends'}})}else{print "ERROR: Package not found: $pkg\n";}$required_packages{$pkg} = 1;}}#-------------------------------------------------------------------------------# Function : DebugDumpData## Description : Display data structures## Inputs :## Returns :#sub DebugDumpData{my ($name, @refp) = @_;my $ii = 0;foreach ( @refp ){print Data::Dumper->Dump ( [$_], ["[Arg:$ii] $name" ]);$ii++}}