X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/874e0bce624e4545cb4c49b707796a6704c24ad8..14dbe48f4f9623cf72fc207b7c2041b9f611972a:/tools/simgrid_update_xml.pl diff --git a/tools/simgrid_update_xml.pl b/tools/simgrid_update_xml.pl index 5b7b5a1df2..da3df3f190 100755 --- a/tools/simgrid_update_xml.pl +++ b/tools/simgrid_update_xml.pl @@ -1,104 +1,243 @@ -#! /usr/bin/perl +#! /usr/bin/env perl +eval 'exec perl -S $0 ${1+"$@"}' + if $running_under_some_shell; # This script updates the simgrid XML file passed as argument (modification in place) -# It is built to do the conversion incrementally (even if for now, only 2 versions are defined) +# It is built to do the conversion incrementally. -# Copyright (C) 2006-2007. The SimGrid team. All rights reserved. +# Copyright (c) 2006-2014. The SimGrid Team. +# All rights reserved. # -# This file is part of the SimGrid project. This is free software: -# You can redistribute and/or modify it under the terms of the -# GNU LGPL (v2.1) licence. +# This program is free software; you can redistribute it and/or modify it +# under the terms of the license (GNU LGPL) which comes with this package. + +=encoding UTF-8 + +=head1 NAME + +simgrid_update_xml - updates simgrid XML files to latest version + +=head1 SYNOPSIS + +B I + +=head1 DESCRIPTION + +simgrid_update_xml updates the simgrid XML file passed as argument. The file +is modified in place, without any kind of backup. You may want to save a copy +before running the script. + +In SimGrid XML files, the standard version is indicated in the version +attribute of the platform tag. Current version is 4. Here is a list of major +changes in each version. + +=over 4 + +=item B Used before SimGrid 3.3 + +=item B Introduced in SimGrid 3.3 + +=over 4 + +=item + +The version attribute of platform were added to allow file versionning. + +=item + +The link bandwidth changed from Mb/s to b/s; and the CPU power were changed +from MFlop/s to Flop/s + +=back + +=item B Introduced in SimGrid 3.4 + +=over + +=item + +Several tags were renamed: + + CPU -> HOST + NETWORK_LINK -> LINK + ROUTE_ELEMENT -> LINK_CTN + PLATFORM_DESCRIPTION -> PLATFORM + +=back + +=item B Introduced in SimGrid 3.5 + +=over 4 + +=item + +The AS tag were introduced. Every plaform should now contain an englobing AS +tag. + +=item + +Routes are now symmetric by default. + +=item + +Several tags were renamed (for sake of XML sanity): + + LINK:CTN -> LINK_CTN + TRACE:CONNECT -> TRACE_CONNECT + +=back + +=item B Introduced in SimGrid 3.13 (this is the current version) + +=over 4 + +=item + +Rename the attributes describing the amount of flop that a host / peer / cluster / cabinet can deliver per second. + + -> + +=item + +In , attribute kind="POWER" is now kind="SPEED". + +=item + +The DOCTYPE points to the right URL: http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd + +=item + +Units are now mandatory in attributes. USE THE SCRIPT sg_xml_unit_converter.py TO CONVERT THIS + + - speed. Old default: 'f' or 'flops'. Also defined: + 'Yf', 'Zf', 'Ef', 'Pf', 'Tf', 'Gf', 'Mf', 'kf' + 'yottaflops', 'zettaflops', 'exaflops', 'petaflops', 'teraflops', 'gigaflops', 'megaflops', 'kiloflops' + + - bandwidth. Old default: 'Bps' bytes per second (or 'bps' but 1 Bps = 8 bps) + Also defined in bytes: 'TiBps', 'GiBps', 'MiBps', 'KiBps', 'TBps', 'GBps', 'MBps', 'kBps', 'Bps' + And the same in bits: 'Tibps', 'Gibps', 'Mibps', 'Kibps', 'Tbps', 'Gbps', 'Mbps', 'kbps', 'bps' + + - latency. Old default: 's' second. Also defined: + 'w' week, 'd' day, 'h' hour, 'm' minute, 'ms' millisecond, 'us' microsecond, 'ns' nanosecond, 'ps' picosecond + + +=back + +=back + +=head1 AUTHORS + + The SimGrid team (simgrid-devel@lists.gforge.inria.fr) + +=head1 COPYRIGHT AND LICENSE + +Copyright (c) 2006-2016. The SimGrid Team. All rights reserved. + +This program is free software; you may redistribute it and/or modify it +under the terms of GNU LGPL (v2.1) license. + +=cut + use strict; my $fromversion=-1; -my $toversion=3; +my $toversion=4; my($output_string); -$ARGV[0] or die "simgrid_update_xml.pl \n"; -open INPUT, "$ARGV[0]" or die "Cannot open input file $ARGV[0]: $!\n"; +my $filename = $ARGV[0] or die "simgrid_update_xml.pl \n"; +open INPUT, "$filename" or die "Cannot open input file $filename: $!\n"; + +$output_string = "\n". + "\n". + "\n"; + -$output_string .= "\n"; -$output_string .= "\n"; -$output_string .= "\n"; -$output_string .= " \n"; +my($AS_opened)=0; my $line; -while (defined($line = )) -{ +while (defined($line = )) { chomp $line; # eat the header, whatever form it has next if ($line =~ s/<\?xml[^>]*>// && ! $line =~ /\S/); # just in case several tags are on the same line next if ($line =~ s/]*>// && ! $line =~ /\S/); - if ($line =~ s///) - { - $fromversion = 0; - print "version 0\n"; - next if !$line =~ /\S/; - } - elsif ($line =~ s///) - { - $fromversion = $1; - print "version $fromversion\n"; - if ($fromversion == $toversion) - { - die "Input platform file version is already $fromversion. This should be a no-op.\n"; - } - if ($fromversion > $toversion) - { - die "Input platform file version is more recent than this script (file version: $fromversion; script version: $toversion)\n"; - } - next if !$line =~ /\S/; + if ($line =~ s///) { + $fromversion = 0; + print "$filename was using version 0\n"; + next if !$line =~ /\S/; + } elsif ($line =~ s///) { + $fromversion = $1; + if ($fromversion == $toversion) { + die "Input platform file $filename is already conformant to version $fromversion. This should be a no-op.\n"; + } + if ($fromversion > $toversion) { + die "Input platform file $filename is more recent than this script (file version: $fromversion; script version: $toversion)\n"; + } + next if !$line =~ /\S/; + print "$filename was using version $fromversion\n"; } - if ($fromversion == 0) - { - while ($line =~ m|^(.*?)(.*)$/) - { - $output_string .= " <\/AS>\n<\/platform>"; + if ($fromversion < 3) { + $line =~ s/\blink:ctn\b/link_ctn/g; + $line =~ s/\btrace:connect\b/trace_connect/g; + + if($AS_opened && (($line=~ /<\/platform>/) || ($line=~ /\n"; + $AS_opened=1; } + + if($line=~/ $ARGV[0]"; +open OUTPUT, "> $filename"; print OUTPUT $output_string; close OUTPUT;