# This script updates the simgrid XML file passed as argument (modification in place)
# It is built to do the conversion incrementally.
-# Copyright (c) 2006-2016. The SimGrid Team.
+# Copyright (c) 2006-2023. The SimGrid Team.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
=head1 NAME
simgrid_update_xml - updates simgrid XML files to latest version
-
+
=head1 SYNOPSIS
B<simgrid_update_xml> I<xml_file>
-
+
=head1 DESCRIPTION
simgrid_update_xml updates the simgrid XML file passed as argument. The file
=over 4
-=item
+=item
The version attribute of platform were added to allow file versioning.
=item B<Version 2:> Introduced in SimGrid 3.4
-=over
+=over
-=item
+=item
-Several tags were renamed:
+Several tags were renamed:
- CPU -> HOST
+ CPU -> HOST
NETWORK_LINK -> LINK
ROUTE_ELEMENT -> LINK_CTN
PLATFORM_DESCRIPTION -> PLATFORM
The AS tag were introduced. Every platform should now contain an englobing AS
tag.
-=item
+=item
Routes are now symmetric by default.
=item
-The DOCTYPE points to the right URL: http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd
+The DOCTYPE points to the right URL.
=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'
+ - 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'
-
+ 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
+ 'w' week, 'd' day, 'h' hour, 'm' minute, 'ms' millisecond, 'us' microsecond, 'ns' nanosecond, 'ps' picosecond
=back
-=item B<Version 4.1:> Introduced in SimGrid 3.16 (this is the current version)
+=item B<Version 4.1:> Introduced in SimGrid 3.16 (this is the current version).
=over 4
=item
Rename the FULLDUPLEX sharing into SPLITDUPLEX.
-
+
+=item
+
+In <host> and <peer>, rename the 'availability_file' attribute into 'speed_file'.
+
=back
=back
=head1 AUTHORS
- The SimGrid team (simgrid-devel@lists.gforge.inria.fr)
-
+ The SimGrid team
+
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2006-2018. The SimGrid Team. All rights reserved.
-
+Copyright (c) 2006-2023. 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
open INPUT, "$filename" or die "Cannot open input file $filename: $!\n";
my $output_string = "<?xml version='1.0'?>\n".
- "<!DOCTYPE platform SYSTEM \"http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd\">\n".
+ "<!DOCTYPE platform SYSTEM \"https://simgrid.org/simgrid.dtd\">\n".
"<platform version=\"$toversion\">\n";
my($AS_opened)=0;
# 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/<!DOCTYPE[^>]*>// && ! $line =~ /\S/);
-
+
if ($line =~ s/<platform(_description)? *>//) {
$fromversion = 0;
print "$filename was using version 0\n";
next if !$line =~ /\S/;
print "$filename was using version $fromversion\n";
}
-
+
if ($fromversion == 0) {
while ($line =~ m|^(.*?)<cpu(.*?)power="([^"]*)"(.*)$|) {
$line = "$1TOTOTUTUTATA${2}TOTOTUTUTATA".($3*1000000)."TOTOTUTUTATA${4}";
$line =~ s/\bnetwork_link\b/link/g;
$line =~ s/\broute_element\b/link:ctn/g;
}
-
+
if ($fromversion < 3) {
$line =~ s/\blink:ctn\b/link_ctn/g;
$line =~ s/\btrace:connect\b/trace_connect/g;
$output_string .= " <AS id=\"AS0\" routing=\"Full\">\n";
$AS_opened=1;
}
-
+
if($line=~/<route /){$line =~ s/\<route/\<route symmetrical=\"NO\"/g;}
}
if ($fromversion < 4) {
- $line =~ s/\bpower\b/speed/g;
+ $line =~ s/\bpower\b/speed/g;
$line =~ s/\bkind="POWER"/kind="SPEED"/g;
}
if ($fromversion < 4.1) {
$line =~ s/\bprocess\b/actor/g;
}
$line =~ s/\bFULLDUPLEX\b/SPLITDUPLEX/g;
-
+ $line =~ s/\bavailability_file\b/speed_file/g;
+
$output_string .= "$line\n";
}