diff -r 15428d415dba -r 20205e7ab525 split_sysdef.pl --- a/split_sysdef.pl Wed May 26 12:52:49 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -# Copyright (c) 2009 Symbian Foundation Ltd -# This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Symbian Foundation Ltd - initial contribution. -# -# Contributors: -# -# Description: -# Split a system model file into many package model files (one per package) - -use strict; -use Getopt::Long; -use XML::DOM; - -my $DEFAULT_OUTDIR = "models"; - -my $sysdef = ''; -my $outdir = $DEFAULT_OUTDIR; -my $help = 0; -GetOptions(( - 'sysdef=s' => \$sysdef, - 'outdir:s' => \$outdir, - 'help!' => \$help -)); - -$help = 1 if (!$sysdef); - -if ($help) -{ - print "Split a system model file into many package model files (one per package)\n"; - print "Usage: perl split_sysdef.pl --sysdef=FILE [OPTIONS]\n"; - print "where:\n"; - print "\tFILE is the input file to split\n"; - print "and OPTIONS are:\n"; - print "\t--outdir=DIR Generate package model files under DIR (default: $DEFAULT_OUTDIR)\n"; - exit(0); -} - -mkdir("$outdir") if (!-d$outdir); - -my $parser = new XML::DOM::Parser; -my $doc = $parser->parsefile ($sysdef); - -# fix bldFile and mrp paths -for my $unit ( $doc->getElementsByTagName("unit") ) -{ - my $bldfile = $unit->getAttribute("bldFile"); - if ($bldfile) - { - $bldfile =~ s,\\,/,g; - $bldfile = "/$bldfile" if ( $bldfile !~ m,^/, ); - $bldfile = "/sf$bldfile" if ( $bldfile !~ m,^/sf, ); - if ($bldfile =~ m,^/sf/(os|mw|app|tools|ostools|adaptation)/,) - { - $unit->setAttribute("bldFile", $bldfile); - } - else - { - print "WARNING: unexpected path in bldFile: $bldfile. Keeping as is\n"; - } - } - - my $mrp = $unit->getAttribute("mrp"); - if ($mrp) - { - $mrp =~ s,\\,/,g; - $mrp = "/$mrp" if ( $mrp !~ m,^/, ); - $mrp = "/sf$mrp" if ( $mrp !~ m,^/sf, ); - if ($mrp =~ m,^/sf/(os|mw|app|tools|ostools|adaptation)/,) - { - $unit->setAttribute("mrp", $mrp); - } - else - { - print "WARNING: unexpected path in mrp: $mrp. Keeping as is\n" ; - } - } -} - -my $packagedef_header = ''; -my $packagedef_trailer = ''; - -my $systemdefinition = $doc->getElementsByTagName("SystemDefinition")->item(0); -my $systemdefinition_attributes = $systemdefinition->getAttributes(); -my $systemdefinition_attributes_tostring = ''; -for ($systemdefinition_attributes->getValues) {$systemdefinition_attributes_tostring .= " ".$_->getName."=\"".$_->getValue."\"";} -$packagedef_header .= "\n"; -$packagedef_trailer = "\n".$packagedef_trailer; - -my $systemmodel = $systemdefinition->getElementsByTagName("systemModel")->item(0); -my $systemmodel_attributes = $systemmodel->getAttributes(); -my $systemmodel_attributes_tostring = ''; -for ($systemmodel_attributes->getValues) {$systemmodel_attributes_tostring .= " ".$_->getName."=\"".$_->getValue."\"";} -$packagedef_header .= "\n"; -$packagedef_trailer = "\n".$packagedef_trailer; - -for my $layer ( $systemmodel->getElementsByTagName("layer") ) -{ - my $layer_name = $layer->getAttribute("name"); - - my $layer_attributes = $layer->getAttributes(); - my $layer_attributes_tostring = ''; - for ($layer_attributes->getValues) {$layer_attributes_tostring .= " ".$_->getName."=\"".$_->getValue."\"";} - my $layer_header = "\n"; - my $layer_trailer = "\n"; - - for my $block ( $layer->getElementsByTagName("block") ) - { - my $block_name = $block->getAttribute("name"); - - mkdir("$outdir/$layer_name") if (!-d "$outdir/$layer_name"); - mkdir("$outdir/$layer_name/$block_name") if (!-d "$outdir/$layer_name/$block_name"); - - # what source code doesn't belong to this package ? - for my $unit ( $block->getElementsByTagName("unit") ) - { - my $bldinf = $unit->getAttribute("bldFile"); - if ($bldinf and $bldinf !~ m,^/sf/$layer_name/$block_name,) - { - print "WARNING: $bldinf is in package: $layer_name/$block_name\n"; - } - } - - open(FILE, ">$outdir/$layer_name/$block_name/package_definition.xml"); - print FILE $doc->getXMLDecl->toString."\n" if ($doc->getXMLDecl); - print FILE $doc->getDoctype->toString."\n" if ($doc->getDoctype); - print FILE $packagedef_header; - print FILE $layer_header; - print FILE $block->toString; - print FILE $layer_trailer; - print FILE $packagedef_trailer; - close(FILE); - } -} - -$doc->dispose; -