#!/usr/local/bin/perl # (C) Hans Wolfgang Loidl, July 1995 ############################################################################# # Time-stamp: # # Usage: SPLIT [options] # # Generate a set of granularity graphs out of the GrAnSim profile . # The granularity graphs are put into subdirs of the structure: # - # # Options: # -s ... a perl list of spark names; the given is scanned # for each given name in turn and granularity graphs are # generated for each of these sparks # -O ... use gr2RTS and RTS2gran instead of gran-extr; # this generates fewer output files (only granularity graphs) # but should be faster and far less memory consuming # -d ... use as basename for the sub-directories # -o ... use as basename for the generated latex files; # the overall result is in .ps # -t ... use as gran-extr type template file # ('.' for local template, ',' for global template) # -A ... surpress generation of granularity profiles for overall .gr # -h ... help; print this text. # -v ... verbose mode. # ############################################################################# require "getopts.pl"; &Getopts('hvOAd:o:s:t:'); do process_options(); if ( $opt_v ) { do print_verbose_message(); } # --------------------------------------------------------------------------- # Init # --------------------------------------------------------------------------- $latex = "/usr/local/tex/bin/latex2e"; # or "/usr/local/tex/bin/latex2e" do all() if !$opt_A; foreach $s (@sparks) { if ( -f $tmp_file ) { system "rm -f $tmp_file"; } system "tf -H -s $s $gr_file > $tmp_file" || die "Can't open pipe: tf -s $s $gr_file > $tmp_file\n"; if ( $opt_d ) { $dir = $opt_d; } else { $dir = $gr_file; } $dir =~ s/\.gr//g; $dir .= "-$s"; if ( ! -d $dir ) { mkdir($dir,"755"); # system "mkdir $dir"; system "chmod u+rwx $dir"; } system "mv $tmp_file $dir/$gr_file"; chdir $dir; do print_template(); do print_va("Title",$s); if ( -f $va_ps_file ) { local ($old) = $va_ps_file; $old =~ s/\.ps/-o.ps/g; system "mv $va_ps_file $old"; } if ( $opt_O ) { system "gr2RTS -o $rts_file $gr_file; " . "RTS2gran -t $template_file $rts_file; " . "$latex $va_file; dvips $va_dvi_file > $va_ps_file"; } else { system "gran-extr -t $template_file $gr_file; " . "$latex $va_file; dvips $va_dvi_file > $va_ps_file"; } chdir ".."; # system "cd .."; } exit 0; # ----------------------------------------------------------------------------- sub all { $dir = $gr_file; $dir =~ s/\.gr//g; $dir .= "-all"; if ( ! -d $dir ) { mkdir($dir,"755"); # system "mkdir $dir"; system "chmod u+rwx $dir"; } system "cp $gr_file $dir/$gr_file"; chdir $dir; do print_template(); do print_va("All","all"); if ( -f $va_ps_file ) { local ($old) = $va_ps_file; $old =~ s/\.ps/-o.ps/g; system "mv $va_ps_file $old"; } if ( $opt_O ) { system "gr2RTS -o $rts_file $gr_file; " . "RTS2gran -t $template_file $rts_file; " . "$latex $va_file; dvips $va_dvi_file > $va_ps_file"; } else { system "gran-extr -t $template_file $gr_file; " . "$latex $va_file; dvips $va_dvi_file > $va_ps_file"; } chdir ".."; # system "cd .."; } # --------------------------------------------------------------------------- sub print_template { open (TEMPL,">$template_file") || die "Can't open $template_file\n"; print TEMPL <$va_file") || die "Can't open $va_file\n"; if ( $opt_O ) { print VA <) { last if $_ =~ /^$/; print $_; $n++; } close(ME); exit ; } if ( $opt_s ) { $opt_s =~ s/[\(\)\[\]]//g; @sparks = split(/[,;. ]+/, $opt_s); } else { @sparks = ( 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15); } if ( $#ARGV != 0 ) { print "Usage: $0 [options] \n;"; print "Use -h option to get details\n"; exit 1; } $gr_file = $ARGV[0]; ($basename = $gr_file) =~ s/\.gr//; $rts_file = $basename . ".rts"; # "RTS"; $gran_file = "g.ps"; # $basename . ".ps"; #$rts_file = $gr_file; #$rts_file =~ s/\.gr/.rts/g; if ( $opt_o ) { $va_file = $opt_o; $va_dvi_file = $va_file; $va_dvi_file =~ s/\.tex/.dvi/g; $va_ps_file = $va_file; $va_ps_file =~ s/\.tex/.ps/g; } else { $va_file = "va.tex"; $va_dvi_file = "va.dvi"; $va_ps_file = "va.ps"; } if ( $opt_t ) { $template_file = $opt_t; } else { $template_file = "TEMPL"; } $tmp_file = ",t"; } # ----------------------------------------------------------------------------- sub print_verbose_message { print "Sparks: (" . join(',',@sparks) . ")\n"; print "Files: .gr " . $gr_file . " template " . $template_file . " va " . $va_file . "\n"; } # -----------------------------------------------------------------------------