Difference between revisions of "OldConfigurationMigration"
 (Updated to ecf)  | 
				|||
| Line 1: | Line 1: | ||
[[Category:Configuration]]  | [[Category:Configuration]]  | ||
| + | {{cleanup}}  | ||
= Startup =  | = Startup =  | ||
== Old configuration ==  | == Old configuration ==  | ||
Revision as of 08:52, 6 September 2006
This information is not up to date and needs some cleanup.
Contents
Startup
Old configuration
Ace (-ace Ace.ace)
- load the ace file
 - convert it into the new configuration file
 - add a warning
 - restart with the new configuration file
 
Epr (-project Project.epr)
- load the epr file
 - get the ace file
 - convert it into the new configuration file
 - add a warning
 - restart with the new configuration file and use old project path as new path
 
New configuration (-config config.ecf -target mytarget)
- load configuration file
 - if project_path setting
- write/update .user file with new project_path
 
 - else
- try to get project path from .user file or use default
 
 - if project file found
- if project file up to date
- load project file
 
 - else
- create project
 
 
 - if project file up to date
 - else
- create project
 
 
Directory layout
config.ecf EIFGENS/target/COMP EIFGENS/target/W_code EIFGENS/target/F_code EIFGENS/other_target/COMP EIFGENS/other_target/W_code EIFGENS/other_target/F_code
Compiler changes
CLASS_I and CLASS_C
Old
CLASS_I
- represents an uncompiled class.
 - compiled class returns corresponding CLASS_C (if any)
 - invariant: compiled_class.lace_class = Current
 - cluster returns associated cluster
 
EXTERNAL_CLASS_I
- inherits from CLASS_I and CONF_CLASS_ASSEMBLY
 - represents an uncompiled external class.
 - assembly returns associated assembly
 
CLASS_C
- represents a compiled class.
 - lace_class returns corresponding CLASS_I
 - invariant: lace_class.compiled_class = Current
 
EXTERNAL_CLASS_C
- inherits from CLASS_C
 - represents a compiled external class.
 
New
CONF_CLASS
- represents an uncompiled class as seen from the configuration system
 
CONF_CLASS_ASSEMBLY
- inherits from CONF_CLASS
 - represents an external class
 
CONF_CLASS_PARTIAL
- inherits from CONF_CLASS
 - represents a normal eiffel class that was generated out of multiple partial classes
 - has a list of files from which it was generated
 
CLASS_I
- abstract
 - represents an uncompiled class
 - compiled class returns corresponding CLASS_C (if any)
 - invariant: compiled_class.original_class = Current
 - config_class returns CONFIG_CLASS
 - group returns associated CONF_GROUP
 
EIFFEL_CLASS_I
- inherits from CLASS_I and CONF_CLASS
 - represents a normal uncompiled eiffel class
 - cluster returns associated CLUSTER_I
 
EXTERNAL_CLASS_I
- inherits from CLASS_I and CONF_CLASS_ASSEMBLY
 - represents an external uncompiled class
 - assembly returns associated ASSEMBLY_I
 
PARTIAL_EIFFEL_CLASS_I
- inherits from EIFFEL_CLASS_I and CONF_CLASS_PARTIAL
 - represents a normal eiffel class that was automatically generated out of multiple partial classes
 
CLASS_C
- abstract
 - represents a compiled class
 - original_class returns CLASS_I for the original version of this class
 - lace_class returns CLASS_I for the possible overriden version of this class that it was compiled from
 - invariant: original_class.compiled_class = Current (compiled information is stored in original, not overriden class)
 - is_eiffel_class_c is true if it's a normal eiffel class
 - eiffel_class_c returns Current as EIFFEL_CLASS_C
 - is_external_class is true if it's an external class
 - external_class_c returns Current as EXTERNAL_CLASS_C
 
EIFFEL_CLASS_C
- inherits from CLASS_C
 - represents a compiled normal eiffel class
 
EXTERNAL_CLASS_C
- inherits from CLASS_C
 - represents a compiled external class
 
clusters vs. groups
Old
CLUSER_I
- container for CLASS_I
 
ASSEMBLY_I
- inherits from CLUSTER_I
 - represents an assembly
 - container for EXTERNAL_CLASS_I
 
Recursive clusters
- For each subdirectory a CLUSTER_I was generated and the path was encoded into the name of the cluster
 
New
CONF_GROUP
- abstract container for CONF_CLASS
 - class_by_name checks first in current group, then if a_dependencies is true also in dependencies that are enabled for a_platform and a_build
 
CONF_CLUSTER
- inherits from CONF_GROUP
 - cluster
 - can have a parent cluster
 - can have multiple child clusters
 
CONF_OVERRIDE
- inherits from CONF_CLUSTER
 - override cluster
 
CONF_LIBRARY
- inherits from CONF_GROUP
 - library, has a library_target which can have CONF_CLUSTER, CONF_OVERRIDE, CONF_LIBRARY, CONF_PRECOMPILE, CONF_ASSEMBLY
 
CONF_PRECOMPILE
- inherits from CONF_LIBRARY
 - represents a precompile
 
CONF_ASSEMBLY
- inherits from CONF_GROUP
 - represents an assembly
 
Recursive clusters
- a recursive cluster is a normal cluster
 - CONF_CLASS has path attribute that gives the path inside the cluster separated by /
 
General
In most cases the use of CLUSTER_I can be replased by CONF_GROUP. For recursive clusters there is only one cluster and the information is in the classes in the path. The world is now a tree instead of a flat representation as before, for example we can have a library which can have clusters and another library ... For lots of things the easiest way to go through the information is to create a visitor. CONF_VISITOR visits every node, CONF_CONDITIONED_VISITOR only visits node that are enabled for the current build/platform.
Universe
The universe has now the complete configuration in conf_system, platform and build (only correctly set during compilation), the current target in target and the groups that are specified in the current target in groups.
Now there is a is_read_only query on a class.

