Salome HOME
mise à jour de la doc, release notes 5.8
[tools/sat.git] / doc / src / release_notes / release_notes_5.5.0.rst
1 *****************
2 SAT version 5.5.0
3 *****************
4
5 Release Notes, November 2019
6 ============================
7
8
9 New features and improvements
10 -----------------------------
11
12
13
14 **pip mode for python modules**
15
16 This new mode was introduced in order to simplify the management of the python products (which number is constantly raising years after years...).
17 It is triggered by two properties within the application configuration file::
18
19     pip : 'yes'
20     pip_install_dir : 'python'
21
22 The first property activates the use of pip for all the products which have themselves the pip property activated (it concerns twenty products).
23 The second property specifies that the products should be installed directly in python directory, and not in their own specific directory.
24 This second property is useful on windows platform to reduce the length of python path.
25
26 After several tests and iterations, the following management was adopted:
27  - sat prepare <application> does nothing for pip products (because at prepare time we don't have python compiled, and the use of native pip may not be compatible).
28  - sat compile <application> use the pip module installed in python to get pip archives (wheels), store them in local archive directory, and install them either in python directory, or in the product directory (in accordance to pip_install_dir property).
29
30
31 **single directory mode**
32
33 This new mode was introduced in order to get shorter path on windows platform. It is triggered by the property **single_install_dir**  within the application configuration file::
34
35         single_install_dir : "yes"
36
37 When activated, all the products which have themselves the property **single_install_dir** are installed in a common directory, called PRODUCTS.
38
39 **Generalization of sat launcher command**
40
41 sat launcher command was extended to generate launchers based on an executable given as argument with **-e** option::
42
43     sat launcher <application> -n salome.sh -e INSTALL/SALOME/bin/salome.py 
44
45 The command generates a launcher called salome.sh, which sets the environment, and launches the INSTALL/SALOME/bin/salome.py.
46
47
48 **optimization of sat compile**
49
50 For a complete compilation of salome, sat compile command was spending more than three minutes 
51 to calculate the dependencies and the order in which the products should be compiled.
52 The algorithm used was clumsy, and confused.
53 It was therefore completely rewritten using a topological sorting. 
54 The products order calculation takes now less than one second.
55
56 **new management of sections in product configuration files**
57
58 The sections defined in products are used to specify the variations in the way products are built.
59 Depending upon the tag or version of the product, sat chooses one of these sections and sets the product definition according to it.
60 With time, the number of sections increased a lot. And it is not easy to visualise the differences between these sections, as they often
61 are identical, except few variations.
62 With the windows version, new sections are introduced to manage windows specifics.
63
64 Therefore the need of a new mode for managing sections arises, that would be simpler, more concise, and help the comprehension. 
65 This new mode is called **incremental**, and is triggered by the property **incremental** within the default section of the product::
66
67     default:
68     {
69         ....
70         properties:
71         {
72             incremental : "yes"
73         }
74         ...
75     }
76
77 When this mode is defined, the definition of the product is defined incrementally, by taking into account the reference (the default section) and applying to it corrections defined in the other incremental sections. Depending upon the case, several sections may be taken into account, in a predefined order:
78
79 * the default section, which contains the reference definition
80 * on windows platform, the default_win section if it exists
81 * the section corresponding to the tag. the algorithm to determine this section remains unchanged (what changes is that in incremental mode the section only define deltas, not the complete definition)
82 * on windows platform, if it exists the same section postfixed with "_win".
83
84 Here is as an example the incremental definition used for boost products. For version 1.49 of boost, we extend the definition because we need to apply a patch::
85
86     default :
87     {
88         name : "boost"
89         build_source : "script"
90         compil_script :  $name + $VARS.scriptExtension
91         get_source : "archive"
92         environ :
93         {
94            env_script : $name + ".py"
95         }
96         depend : ['Python' ]
97         opt_depend : ['openmpi' ]
98         patches : [ ]
99         source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
100         build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
101         install_dir : 'base'
102         properties :
103         {
104             single_install_dir : "yes"
105             incremental : "yes"
106         }
107     }
108
109     version_1_49_0:
110     {
111         patches : [ "boost-1.49.0.patch" ]
112     }
113
114 **Suppression of the global "no_base" flag in application configuration**
115
116 **no_base : "no"** is not interpreted anymore in application pyconf.
117 One has to use the **base** flag.
118 The possible values are:
119
120 * **yes** : all the products go into the base
121 * **no** : no product goes into the base
122
123 The complete usage rule of bases is explained in the documentation.
124
125
126 Change log
127 ----------
128
129 This chapter does not provide the complete set of changes included, only the
130 most significant changes are listed.
131
132
133 +-------------+-----------------------------------------------------------------------------------+
134 | Artifact    | Description                                                                       |
135 +=============+===================================================================================+
136 | spns #8544  | The documentation has been improved!                                              |
137 +-------------+-----------------------------------------------------------------------------------+
138 | spns #16894 | clean the temp directory at the end of sat package                                |
139 +-------------+-----------------------------------------------------------------------------------+
140 | sat #12965  | optimisation of sat compile : better, simpler and faster algo for dependencies!   |
141 +-------------+-----------------------------------------------------------------------------------+
142 | sat #17206  | Use pip to manage python modules                                                  |
143 +-------------+-----------------------------------------------------------------------------------+
144 | sat #17137  | check_install functionality improvement : uses linux expending shell rules and    |
145 |             | interprets environment variables                                                  |
146 +-------------+-----------------------------------------------------------------------------------+
147 | sat #8544   | Update and improvement of documentation                                           |
148 +-------------+-----------------------------------------------------------------------------------+
149 | sat # 8547  | Generalisation of sat launcher command (new option --exe to specify which exe     |
150 |             | should be launched after setting the environment                                  |
151 +-------------+-----------------------------------------------------------------------------------+
152 | sat #17357  | New field "rm_products" to blacklist products in overwrite section of appli pyconf|
153 +-------------+-----------------------------------------------------------------------------------+
154 | sat #17194  | Parametrisation of the value of INSTALL and BINARIES directories                  |
155 |             | (in src/internal_config/salomeTools.pyconf)                                       |
156 +-------------+-----------------------------------------------------------------------------------+
157 | sat #17639  | Warning when sat is launcher with python3                                         |
158 +-------------+-----------------------------------------------------------------------------------+
159 | sat #17359  | New incremental mode for the definition of products                               |
160 +-------------+-----------------------------------------------------------------------------------+
161 | sat #17766  | The environment of products is now  loaded in the order of product dependencies.  |
162 | sat #17848  | To treat correctly dependencies in the environment                                |
163 +-------------+-----------------------------------------------------------------------------------+
164 | sat #17955  | No unit tests for native products                                                 |
165 +-------------+-----------------------------------------------------------------------------------+
166 |             | SAT_DEBUG and SAT_VERBOSE environment variables are now available in the          |
167 |             | compilation, which can now forward the information and do the job!                |
168 +-------------+-----------------------------------------------------------------------------------+
169 | sat #18392  | Bug, binaries archives do not work when products are in base                      |
170 +-------------+-----------------------------------------------------------------------------------+