sysmodelgen bugfix when drawing collections next to nested packages. Major revision to validation script checklinks.pl (it's now reliable). joinsysdef.pl now reports errors on duplicate IDs.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SystemDefinition [
<!ELEMENT SystemDefinition ( systemModel )>
<!ATTLIST SystemDefinition
name CDATA #REQUIRED
schema CDATA #REQUIRED
>
<!-- all paths are relative to the environment variable specified by the root attribute, or SOURCEROOT if not. -->
<!-- System Model Section of DTD -->
<!ELEMENT systemModel (layer+)>
<!ELEMENT layer (block* | collection*)*>
<!-- Kernel Services, Base Services, OS Services, Etc -->
<!ATTLIST layer
name CDATA #REQUIRED
long-name CDATA #IMPLIED
levels NMTOKENS #IMPLIED
span CDATA #IMPLIED
>
<!ELEMENT block (subblock* | collection*)*>
<!-- Generic OS services, Comms Services, etc -->
<!ATTLIST block
levels NMTOKENS #IMPLIED
span CDATA #IMPLIED
level NMTOKEN #IMPLIED
name CDATA #REQUIRED
long-name CDATA #IMPLIED
>
<!ELEMENT subblock (collection)*>
<!-- Cellular Baseband Services, Networking Services, etc -->
<!ATTLIST subblock
name CDATA #REQUIRED
long-name CDATA #IMPLIED
>
<!ELEMENT collection (component)*>
<!-- Screen Driver, Content Handling, etc -->
<!ATTLIST collection
name CDATA #REQUIRED
long-name CDATA #IMPLIED
level NMTOKEN #IMPLIED
>
<!ELEMENT component (unit)*>
<!-- contains units or is a package or prebuilt -->
<!ATTLIST component
name CDATA #REQUIRED
long-name CDATA #IMPLIED
deprecated CDATA #IMPLIED
introduced CDATA #IMPLIED
contract CDATA #IMPLIED
plugin (Y|N) "N"
filter CDATA #IMPLIED
class NMTOKENS #IMPLIED
supports CDATA #IMPLIED
purpose ( optional | mandatory | development ) "optional"
>
<!ELEMENT unit EMPTY >
<!-- must be buildable (bld.inf) -->
<!-- bldFile may someday be removed in favour of mrp -->
<!ATTLIST unit
mrp CDATA #IMPLIED
filter CDATA #IMPLIED
bldFile CDATA #IMPLIED
root CDATA #IMPLIED
version NMTOKEN #IMPLIED
prebuilt NMTOKEN #IMPLIED
late (Y|N) #IMPLIED
priority CDATA #IMPLIED
>
]>
<SystemDefinition name="Symbian^3" schema="2.0.1">
<systemModel>
<layer name="app" long-name="Applications" levels="services apps">
<block name="rndtools" level="services" long-name="R&D tools" levels="support generic test util">
<collection name="creator" long-name="Creator" level="support">
<!-- collection is really a component. Should move down a directory -->
<component name="creator_build" filter="s60" long-name="Creator Tool" purpose="development" class="tool">
<unit bldFile="/sf/app/rndtools/creator/group"/>
</component>
</collection>
<collection name="filebrowser" long-name="File Browser" level="util">
<!-- consider collapsing into a single component -->
<component name="fileopserver" filter="s60" long-name="File Operations Server" purpose="development" class="tool">
<!-- uncomment the unit when configuration is in place, it's currently #included from filebrowser_build -->
<!-- <unit bldFile="filebrowser/fileopserver/group"/>-->
</component>
<component name="fileopclient" filter="s60" long-name="File Operations Client" purpose="development" class="tool">
<!-- uncomment the unit when configuration is in place, it's currently #included from filebrowser_build -->
<!--<unit bldFile="filebrowser/fileopclient/group"/>-->
</component>
<component name="filebrowser_build" filter="s60" long-name="File Browser Application" purpose="development" class="tool">
<!-- Need to make this a self-contained component by removing #includes. Can only do when configuration is in place-->
<unit bldFile="/sf/app/rndtools/filebrowser/group"/>
</component>
</collection>
<collection name="launcher" long-name="Launcher" level="util">
<!-- collection is really a component. Should move down a directory -->
<component name="launcher_build" filter="s60" long-name="Launcher Utility" purpose="development" class="tool">
<unit bldFile="/sf/app/rndtools/launcher/group"/>
</component>
</collection>
<collection name="loadgen" long-name="Load Generator" level="test">
<!-- collection is really a component. Should move down a directory -->
<component name="loadgen_build" filter="s60" long-name="Load Generator Application" purpose="development" class="tool">
<unit bldFile="/sf/app/rndtools/loadgen/group"/>
</component>
</collection>
<collection name="perfmon" long-name="Performance Monitor" level="test">
<!-- collection is really a component. Should move down a directory -->
<component name="perfmon_build" filter="s60" long-name="Performance Monitor Tool" purpose="development" class="tool">
<unit bldFile="/sf/app/rndtools/perfmon/group"/>
</component>
</collection>
<collection name="screengrabber" long-name="Screen Grabber" level="util">
<!-- collection is really a component. Should move down a directory -->
<component name="screengrabber_build" filter="s60" long-name="ScreenGrabber" purpose="development" class="tool">
<unit bldFile="/sf/app/rndtools/screengrabber/group"/>
</component>
</collection>
<collection name="stifui" long-name="STIF UI" level="generic">
<component name="stifui_avkon" filter="s60" long-name="STIF UI for Avkon" purpose="development">
<unit bldFile="/sf/app/rndtools/stifui/avkon/group"/>
</component>
<component name="stifui_qt" filter="s60,test" long-name="STIF UI for Qt" purpose="development" introduced="^4">
<unit bldFile="/sf/app/rndtools/stifui/qt"/>
<!-- marked as test until we know what to do with it -->
</component>
</collection>
<collection name="memspyui" long-name="Memspy UI" level="generic">
<!-- collection is really a component. Should move down a directory -->
<component name="memspyui_build" filter="s60" long-name="Memspy UI Application" purpose="development" class="tool">
<unit bldFile="/sf/app/rndtools/memspyui/group"/>
</component>
</collection>
<collection name="htiui" long-name="Harmonized Test Interface UI" level="generic">
<component name="HtiCommPlugins" filter="s60" long-name="HTI Comm Plugins" purpose="development" plugin="Y">
<unit bldFile="/sf/app/rndtools/htiui/HtiCommPlugins/HtiBtCommPlugin/group"/>
</component>
<component name="HtiServicePlugins" filter="s60" long-name="HTI Service Plugins" purpose="development" plugin="Y">
<!-- can only have a single unit. Should #include from a common bld.inf file -->
<unit bldFile="/sf/app/rndtools/htiui/HtiServicePlugins/HtiAppServicePlugin/group"/>
<unit bldFile="/sf/app/rndtools/htiui/HtiServicePlugins/HtiAudioServicePlugin/group"/>
<unit bldFile="/sf/app/rndtools/htiui/HtiServicePlugins/HtiKeyEventServicePlugin/group"/>
<unit bldFile="/sf/app/rndtools/htiui/HtiServicePlugins/HtiMessagesServicePlugin/group"/>
<unit bldFile="/sf/app/rndtools/htiui/HtiServicePlugins/HtiPIMServicePlugin/group"/>
<unit bldFile="/sf/app/rndtools/htiui/HtiServicePlugins/HtiScreenshotServicePlugin/group"/>
<unit bldFile="/sf/app/rndtools/htiui/HtiServicePlugins/HtiSysInfoServicePlugin/group"/>
<unit bldFile="/sf/app/rndtools/htiui/HtiServicePlugins/HtiFtpBackupFake/group"/>
</component>
<component name="htidevicereboot" filter="s60" long-name="HTI Device Reboot" purpose="development">
<unit bldFile="/sf/app/rndtools/htiui/htidevicereboot/group"/>
</component>
<component name="htistartupwait" filter="s60" long-name="HTI Startup Wait" purpose="development">
<unit bldFile="/sf/app/rndtools/htiui/htistartupwait/group"/>
</component>
<component name="htiadmin" filter="s60" long-name="HTI Admin" purpose="development">
<unit bldFile="/sf/app/rndtools/htiui/htiadmin/group"/>
</component>
<component name="htiui_build" filter="s60" long-name="HTI UI Build" purpose="development">
<!-- can this be split up into the other components or made a ROM component? -->
<unit bldFile="/sf/app/rndtools/htiui/group"/>
</component>
</collection>
</block>
</layer>
</systemModel>
</SystemDefinition>