Difference between revisions of "ConfigurationFileFormat"

(Replaced origo.ethz.ch by eiffel.com in SVN URL)
 
(15 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:Configuration]]
 
[[Category:Configuration]]
== Examples ==
+
= xml Schema =
The situation is this, that we have A configuration file for base, vision and an application that uses both base and vision.
+
The xml schema against which a configuration file has to validate can be found here:
 +
* http://www.eiffel.com/developers/xml/
  
 +
or in the svn repository
 +
*https://svn.eiffel.com/eiffelstudio/trunk/Src/framework/configuration/versioning/
  
=== XML (will be used)===
+
This includes all the various versions since the first release of ECF with EiffelStudio 5.7.
==== base ====
+
<code>[xml,n]
+
<system name="base" uuid="15ac36b5-2c65-41e9-8309-c504dd430a0b" library_target="base">
+
<target name="base">
+
<version major="2" minor="0" release="0" build="1"/>
+
<cluster name="base" location="files/base"/>
+
</target/
+
</system>
+
</code>
+
  
==== vision ====
+
= Changelog =
<code>[xml,n]
+
==1.2.0 (EiffelStudio 6.0)==
<system name="vision" uuid="9a8d3871-ef44-484c-9029-c52d17df40f0" library_target="vision">
+
*1.0.0 configurations work without any changes
<version major="3" minor="2" release="1" build="2"/>
+
=== Added Features ===
 +
*Renamed `full_type_checking' option into `full_class_checking' option
 +
*Supplier precondition assertions
 +
*Hidden/implementation clusters
 +
*UUID no longer necessary
 +
*Use application options on libraries
  
<target name="vision">
+
==1.0.0 (EiffelStudio 5.7)==
<library name="base" location="$ISE_EIFFEL/libraries/base/base.ace"/>
+
*Initial Release
 
+
<cluster name="vision" location="files/vision">
+
<cluster name="mysub" location="$/sub" recursive="true">
+
</cluster>
+
 
+
<cluster name="mswin" location="files/vision/win">
+
<if platform="windows"/>
+
</cluster>
+
 
+
<cluster name="unix" location="files/vision/gtk">
+
<ifnot platform="windows"/>
+
</cluster>
+
 
+
<external_include location="files/vision/include/test.h">
+
<if platform="windows" build="workbench"/>
+
</external_include>
+
<external_include location="files/vision/include/gtk.h">
+
<if platform="unix"/>
+
<if platform="mac"/>
+
<if platform="vxworks"/>
+
</external_include>
+
 
+
<target name="debug" extends="vision">
+
<cluster name="debug" location="files/vision/debug" recursive="true">
+
<uses>base</uses>
+
<uses>vision</uses>
+
</cluster>
+
</target>
+
</system>
+
</code>
+
 
+
==== application ====
+
<code>[xml,n]
+
<system name="application" uuid="9a8aab21-ef44-484c-9029-c52d17df40f0">
+
<version major="1" minor="1" release="1" build="1"/>
+
 
+
<target name="application">
+
<root cluster="application" class="root_class" feature="make"/>
+
 
+
<library name="base" location="$ISE_EIFFEL/libraries/base/base.ace"/>
+
 
+
<library name="vision" location="$ISE_EIFFEL/libraries/vision/vision.ace"/>
+
 
+
<cluster name="application" location="files/app/" recursive="true"/>
+
</target>
+
</system>
+
</code>
+
 
+
=== ACE ===
+
==== base ====
+
<pre>
+
system
+
"base"
+
 
+
version
+
"2.0.0.1"
+
 
+
uuid
+
"15ac36b5-2c65-41e9-8309-c504dd430a0b"
+
 
+
library_target
+
base
+
 
+
target base
+
cluster base: "files/base"
+
</pre>
+
==== vision ====
+
<pre>
+
system
+
"vision"
+
 
+
version
+
"3.2.1.2"
+
 
+
uuid
+
"9a8d3871-ef44-484c-9029-c52d17df40f0"
+
 
+
library_target
+
vision
+
 
+
target vision
+
 
+
library
+
base: "$ISE_EIFFEL/libraries/base/base.ace"
+
 
+
cluster
+
vision: "files/vision"
+
 
+
all mysub(vision): "$/sub"
+
 
+
mswin: "files/vision/win"
+
require(windows)
+
 
+
unix: "files/vision/gtk"
+
require(not_windows)
+
 
+
external
+
 
+
include_path
+
"files/vision/include/test.h"
+
require(windows,workbench)
+
"files/vision/include/gtk.h"
+
require(unix)
+
require(mac)
+
require(vxworks)
+
 
+
target debug(vision)
+
 
+
cluster
+
all debug: "location files/vision/debug"
+
uses base, vision
+
</pre>
+
==== application ====
+
<pre>
+
system
+
"application"
+
 
+
version
+
"1.1.1.1"
+
 
+
uuid
+
"9a8aab21-ef44-484c-9029-c52d17df40f0"
+
 
+
target
+
application
+
 
+
root
+
ROOT_CLASS(application):make
+
 
+
library
+
base: "$ISE_EIFFEL/libraries/base/base.ace"
+
 
+
vision: "$ISE_EIFFEL/libraries/vision/vision.ace"
+
 
+
cluster
+
 
+
application: "location files/app/"
+
recursive
+
</pre>
+
 
+
 
+
=== Pseudo ===
+
==== base ====
+
<pre>
+
system base
+
version 2.0.0.1
+
uuid 15ac36b5-2c65-41e9-8309-c504dd430a0b
+
library_target base
+
 
+
target base
+
cluster base
+
location files/base
+
</pre>
+
==== vision ====
+
<pre>
+
system vision
+
version 3.2.1.2
+
uuid 9a8d3871-ef44-484c-9029-c52d17df40f0
+
library_target vision
+
 
+
target vision
+
library base
+
location "$ISE_EIFFEL/libraries/base/base.ace"
+
 
+
cluster vision
+
location "files/vision"
+
 
+
cluster mysub extends vision
+
location "$/sub"
+
recursive
+
 
+
cluster mswin [windows]
+
location "files/vision/win"
+
 
+
cluster unix [not_windows]
+
location "files/vision/gtk"
+
 
+
external_include
+
"files/vision/include/test.h" ([windows, workbench])
+
"files/vision/include/gtk.h" ([unix],[mac], [vxworks])
+
 
+
target debug extends vision
+
cluster debug
+
location "files/vision/debug"
+
recursive
+
uses base, vision
+
</pre>
+
==== application ====
+
<pre>
+
system application
+
version 1.1.1.1
+
uuid 9a8aab21-ef44-484c-9029-c52d17df40f0
+
 
+
target application
+
root application:ROOT_CLASS:make
+
 
+
library base
+
location "$ISE_EIFFEL/libraries/base/base.ace"
+
 
+
library vision
+
location "$ISE_EIFFEL/libraries/vision/vision.ace"
+
 
+
cluster application
+
location "files/app/"
+
recursive
+
</pre>
+
 
+
== Final format ==
+
This is the output produced if the configuration is safed.
+
 
+
=== Examples ===
+
 
+
==== Complex example ====
+
<code>[xml,n]
+
<?xml version="1.0" encoding="ISO-8859-1"?>
+
<system
+
        xmlns="http://www.eiffel.com/xml/configuration-1-0-0"
+
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
        xsi:schemaLocation="http://www.eiffel.com/xml/configuration-1-0-0 http://www.ise/~patrickr/Public/configuration-1-0-0.xsd"
+
        name="mysystem" uuid="f3683164-f273-4ef4-8b33-bea4702a1421" library_target="mytarget">
+
        <description>This is a simple test system.</description>
+
        <target name="mytarget" eifgen="some/relative/path/">
+
                <description>This is a first target</description>
+
                <root cluster="mycluster" class="root_class" feature="make"/>
+
                <version major="4" minor="3" release="3" build="1" company="Eiffel Software Inc." product="TestProduct" trademark="Trademarks (tm)" copyright="Copyrights (c)"/>
+
                <file_rule>
+
                        <description>This are some simple file rules that exclude and include some patterns.</description>
+
                        <exclude>\.svn</exclude>
+
                        <exclude>cvs</exclude>
+
                        <include>test</include>
+
                        <include>[abc]test</include>
+
                </file_rule>
+
                <option profile="true">
+
                        <debug name="internal" enabled="false"/>
+
                        <debug name="timescan" enabled="true"/>
+
                        <warning name="obsolete" enabled="true"/>
+
                </option>
+
                <external_include location="/files/test.h">
+
                        <description>some external</description>
+
                        <if platform="windows" build="workbench"/>
+
                        <if platform="windows" build="all"/>
+
                        <ifnot platform="unix" build="all"/>
+
                </external_include>
+
                <pre_compile_action command="/usr/bin/build_parser.sh">
+
                        <description>Build the parser.</description>
+
                </pre_compile_action>
+
                <post_compile_action command="test">
+
                        <description>Test something</description>
+
                        <ifnot platform="all" build="finalize"/>
+
                </post_compile_action>
+
                <variable name="myvariable" value="some/value"/>
+
                <variable name="myother" value="another value"/>
+
                <library name="base" location="libs/base/base.xml" readonly="true" prefix="lib_">
+
                        <description>This is the normal base library.</description>
+
                        <option>
+
                                <assertions precondition="false" postcondition="false" check="false" invariant="false" loop="true"/>
+
                        </option>
+
                        <renaming old_name="oldname" new_name="newname"/>
+
                        <class_option class="myclass" trace="true" profile="true" namespace="somenamespace">
+
                                <description>Some class options for myclass</description>
+
                        </class_option>
+
                </library>
+
                <library name="vision" location="libs/vision/vision.xml"/>
+
                <assembly name="someassembly" location="some/path" assembly_name="a_name" assembly_version="a_version" assembly_culture="a_cult" assembly_key="a_key"/>
+
                <cluster name="a_cluster" location="some/path" recursive="true">
+
                        <file_rule>
+
                                <description>This are some simple file rules that exclude and include some patterns.</description>
+
                                <exclude>\.svn</exclude>
+
                                <exclude>cvs</exclude>
+
                                <include>test</include>
+
                                <include>[abc]test</include>
+
                        </file_rule>
+
                        <uses group="vision"/>
+
                        <visible class="all_class"/>
+
                        <visible class="feature_class" feature="a_feature"/>
+
                        <visible class="feature_class" feature="another_feat"/>
+
                        <cluster name="subcluster" location="$/path"/>
+
                </cluster>
+
                <override name="an_override" location="some/path">
+
                        <override group="a_cluster"/>
+
                </override>
+
        </target>
+
        <target name="debug" extends="mytarget">
+
                <description>A debug target.</description>
+
        </target>
+
</system>
+
</code>
+
 
+
==== Simple example ====
+
<code>[xml,n]
+
<?xml version="1.0" encoding="ISO-8859-1"?>
+
<system
+
        xmlns="http://www.eiffel.com/xml/configuration-1-0-0"
+
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
        xsi:schemaLocation="http://www.eiffel.com/xml/configuration-1-0-0 http://www.ise/~patrickr/Public/configuration-1-0-0.xsd"
+
        name="mysystem" uuid="6eb88eca-6d9b-4ff8-aaa2-e8d9aa65e064">
+
        <target name="mytarget" eifgen="some/relative/path/">
+
                <root cluster="mycluster" class="root_class" feature="make"/>
+
                <version major="4" minor="3" release="3" build="1"/>
+
                <option profile="true">
+
                        <debug name="internal" enabled="false"/>
+
                        <debug name="timescan" enabled="true"/>
+
                        <warning name="obsolete" enabled="true"/>
+
                </option>
+
                <external_include location="/files/test.h">
+
                        <description>some external</description>
+
                        <if platform="windows" build="workbench"/>
+
                        <if platform="windows" build="all"/>
+
                        <ifnot platform="unix" build="all"/>
+
                </external_include>
+
                <library name="base" location="libs/base/base.xml" readonly="true"/>
+
                <cluster name="a_cluster" location="some/path" recursive="true">
+
                        <uses group="base"/>
+
                </cluster>
+
        </target>
+
</system>
+
</code>
+
 
+
==== Default example ====
+
An example that is similar to the default ace file.
+
<code>[xml,n]
+
<?xml version="1.0" encoding="ISO-8859-1"?>
+
<system
+
        xmlns="http://www.eiffel.com/xml/configuration-1-0-0"
+
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
        xsi:schemaLocation="http://www.eiffel.com/xml/configuration-1-0-0 http://www.ise/~patrickr/Public/configuration-1-0-0.xsd"
+
        name="mysystem" uuid="b0fda5d2-09a9-46ac-84b4-3ed98055b82e">
+
        <target name="mytarget" eifgen="some/relative/path/">
+
                <root cluster="mycluster" class="root_class" feature="make"/>
+
                <version major="1" minor="0" release="0" build="0"/>
+
                <option profile="true">
+
                        <debug name="internal" enabled="false"/>
+
                        <debug name="timescan" enabled="true"/>
+
                </option>
+
                <library name="base" location="libs/base/base.xml" readonly="true"/>
+
                <cluster name="a_cluster" location="some/path" recursive="true">
+
                        <uses group="base"/>
+
                </cluster>
+
        </target>
+
</system>
+
</code>
+
 
+
=== xml Schema ===
+
 
+
The xml schema against which a configuration file has to validate can be found here: http://www.ise/~patrickr/Public/configuration-1-0-0.xsd
+

Latest revision as of 12:18, 4 June 2012

xml Schema

The xml schema against which a configuration file has to validate can be found here:

or in the svn repository

This includes all the various versions since the first release of ECF with EiffelStudio 5.7.

Changelog

1.2.0 (EiffelStudio 6.0)

  • 1.0.0 configurations work without any changes

Added Features

  • Renamed `full_type_checking' option into `full_class_checking' option
  • Supplier precondition assertions
  • Hidden/implementation clusters
  • UUID no longer necessary
  • Use application options on libraries

1.0.0 (EiffelStudio 5.7)

  • Initial Release