Salome HOME
add doc/build for EZ direct html or pdf
[tools/sat.git] / doc / build / html / _modules / src / environment.html
1
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5
6 <html xmlns="http://www.w3.org/1999/xhtml">
7   <head>
8     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9     
10     <title>src.environment &mdash; salomeTools 5.0.0dev documentation</title>
11     
12     <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
13     <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
14     <link rel="stylesheet" href="/volatile/wambeke/SAT5/SAT5_S840_MATIX24/SAT/doc/src/custom.css" type="text/css" />
15     
16     <script type="text/javascript">
17       var DOCUMENTATION_OPTIONS = {
18         URL_ROOT:    '../../',
19         VERSION:     '5.0.0dev',
20         COLLAPSE_INDEX: false,
21         FILE_SUFFIX: '.html',
22         HAS_SOURCE:  true
23       };
24     </script>
25     <script type="text/javascript" src="../../_static/jquery.js"></script>
26     <script type="text/javascript" src="../../_static/underscore.js"></script>
27     <script type="text/javascript" src="../../_static/doctools.js"></script>
28     <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
29     <link rel="top" title="salomeTools 5.0.0dev documentation" href="../../index.html" />
30     <link rel="up" title="Module code" href="../index.html" />
31    
32   <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
33   
34   
35   <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
36
37   </head>
38   <body>
39   
40
41     <div class="document">
42       <div class="documentwrapper">
43         <div class="bodywrapper">
44           <div class="body" role="main">
45             
46   <h1>Source code for src.environment</h1><div class="highlight"><pre>
47 <span class="c">#!/usr/bin/env python</span>
48 <span class="c">#-*- coding:utf-8 -*-</span>
49 <span class="c">#  Copyright (C) 2010-2013  CEA/DEN</span>
50 <span class="c">#</span>
51 <span class="c">#  This library is free software; you can redistribute it and/or</span>
52 <span class="c">#  modify it under the terms of the GNU Lesser General Public</span>
53 <span class="c">#  License as published by the Free Software Foundation; either</span>
54 <span class="c">#  version 2.1 of the License.</span>
55 <span class="c">#</span>
56 <span class="c">#  This library is distributed in the hope that it will be useful,</span>
57 <span class="c">#  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
58 <span class="c">#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
59 <span class="c">#  Lesser General Public License for more details.</span>
60 <span class="c">#</span>
61 <span class="c">#  You should have received a copy of the GNU Lesser General Public</span>
62 <span class="c">#  License along with this library; if not, write to the Free Software</span>
63 <span class="c">#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA</span>
64
65 <span class="kn">import</span> <span class="nn">os</span>
66 <span class="kn">import</span> <span class="nn">subprocess</span>
67 <span class="kn">import</span> <span class="nn">string</span>
68 <span class="kn">import</span> <span class="nn">sys</span>
69
70 <span class="kn">import</span> <span class="nn">src</span>
71 <span class="kn">import</span> <span class="nn">src.debug</span> <span class="kn">as</span> <span class="nn">DBG</span>
72 <span class="kn">import</span> <span class="nn">pprint</span> <span class="kn">as</span> <span class="nn">PP</span>
73
74 <div class="viewcode-block" id="Environ"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ">[docs]</a><span class="k">class</span> <span class="nc">Environ</span><span class="p">:</span>
75     <span class="sd">&quot;&quot;&quot;\</span>
76 <span class="sd">    Class to manage the environment context</span>
77 <span class="sd">    &quot;&quot;&quot;</span>
78     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">environ</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
79         <span class="sd">&quot;&quot;&quot;Initialization. If the environ argument is passed, the environment</span>
80 <span class="sd">           will be add to it, else it is the external environment.</span>
81 <span class="sd">           </span>
82 <span class="sd">        :param environ dict:  </span>
83 <span class="sd">        &quot;&quot;&quot;</span>
84         <span class="k">if</span> <span class="n">environ</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
85             <span class="bp">self</span><span class="o">.</span><span class="n">environ</span> <span class="o">=</span> <span class="n">environ</span>
86         <span class="k">else</span><span class="p">:</span>
87             <span class="bp">self</span><span class="o">.</span><span class="n">environ</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span>
88
89     <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
90         <span class="sd">&quot;&quot;&quot;easy non exhaustive quick resume for debug print&quot;&quot;&quot;</span>
91         <span class="k">return</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">(</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">PP</span><span class="o">.</span><span class="n">pformat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">))</span>
92
93     <span class="k">def</span> <span class="nf">_expandvars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
94         <span class="sd">&quot;&quot;&quot;\</span>
95 <span class="sd">        replace some $VARIABLE into its actual value in the environment</span>
96 <span class="sd">        </span>
97 <span class="sd">        :param value str: the string to be replaced</span>
98 <span class="sd">        :return: the replaced variable</span>
99 <span class="sd">        :rtype: str</span>
100 <span class="sd">        &quot;&quot;&quot;</span>
101         <span class="k">if</span> <span class="s">&quot;$&quot;</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
102             <span class="c"># The string.Template class is a string class </span>
103             <span class="c"># for supporting $-substitutions</span>
104             <span class="n">zt</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">Template</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
105             <span class="k">try</span><span class="p">:</span>
106                 <span class="n">value</span> <span class="o">=</span> <span class="n">zt</span><span class="o">.</span><span class="n">substitute</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">)</span>
107             <span class="k">except</span> <span class="ne">KeyError</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
108                 <span class="k">raise</span> <span class="n">src</span><span class="o">.</span><span class="n">SatException</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Missing definition &quot;</span>
109                                          <span class="s">&quot;in environment: </span><span class="si">%s</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">))</span>
110         <span class="k">return</span> <span class="n">value</span>
111
112 <div class="viewcode-block" id="Environ.append_value"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ.append_value">[docs]</a>    <span class="k">def</span> <span class="nf">append_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">):</span>
113         <span class="sd">&quot;&quot;&quot;\</span>
114 <span class="sd">        append value to key using sep</span>
115 <span class="sd">        </span>
116 <span class="sd">        :param key str: the environment variable to append</span>
117 <span class="sd">        :param value str: the value to append to key</span>
118 <span class="sd">        :param sep str: the separator string</span>
119 <span class="sd">        &quot;&quot;&quot;</span>
120         <span class="c"># check if the key is already in the environment</span>
121         <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
122             <span class="n">value_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span>
123             <span class="c"># Check if the value is already in the key value or not</span>
124             <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">value_list</span><span class="p">:</span>
125                 <span class="n">value_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
126             <span class="k">else</span><span class="p">:</span>
127                 <span class="n">value_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value_list</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">value_list</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span>
128             <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">value_list</span><span class="p">))</span>
129         <span class="k">else</span><span class="p">:</span>
130             <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
131 </div>
132 <div class="viewcode-block" id="Environ.append"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ.append">[docs]</a>    <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">):</span>
133         <span class="sd">&quot;&quot;&quot;\</span>
134 <span class="sd">        Same as append_value but the value argument can be a list</span>
135 <span class="sd">        </span>
136 <span class="sd">        :param key str: the environment variable to append</span>
137 <span class="sd">        :param value str or list: the value(s) to append to key</span>
138 <span class="sd">        :param sep str: the separator string</span>
139 <span class="sd">        &quot;&quot;&quot;</span>
140         <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
141             <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
142                 <span class="bp">self</span><span class="o">.</span><span class="n">append_value</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
143         <span class="k">else</span><span class="p">:</span>
144             <span class="bp">self</span><span class="o">.</span><span class="n">append_value</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
145 </div>
146 <div class="viewcode-block" id="Environ.prepend_value"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ.prepend_value">[docs]</a>    <span class="k">def</span> <span class="nf">prepend_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">):</span>
147         <span class="sd">&quot;&quot;&quot;\</span>
148 <span class="sd">        prepend value to key using sep</span>
149 <span class="sd">        </span>
150 <span class="sd">        :param key str: the environment variable to prepend</span>
151 <span class="sd">        :param value str: the value to prepend to key</span>
152 <span class="sd">        :param sep str: the separator string</span>
153 <span class="sd">        &quot;&quot;&quot;</span>
154         <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
155             <span class="n">value_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span>
156             <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">value_list</span><span class="p">:</span>
157                 <span class="n">value_list</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
158             <span class="k">else</span><span class="p">:</span>
159                 <span class="n">value_list</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">value_list</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">value_list</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span>
160             <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">value_list</span><span class="p">))</span>
161         <span class="k">else</span><span class="p">:</span>
162             <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
163 </div>
164 <div class="viewcode-block" id="Environ.prepend"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ.prepend">[docs]</a>    <span class="k">def</span> <span class="nf">prepend</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">):</span>
165         <span class="sd">&quot;&quot;&quot;\</span>
166 <span class="sd">        Same as prepend_value but the value argument can be a list</span>
167 <span class="sd">        </span>
168 <span class="sd">        :param key str: the environment variable to prepend</span>
169 <span class="sd">        :param value str or list: the value(s) to prepend to key</span>
170 <span class="sd">        :param sep str: the separator string</span>
171 <span class="sd">        &quot;&quot;&quot;</span>
172         <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
173             <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
174                 <span class="bp">self</span><span class="o">.</span><span class="n">prepend_value</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
175         <span class="k">else</span><span class="p">:</span>
176             <span class="bp">self</span><span class="o">.</span><span class="n">prepend_value</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
177 </div>
178 <div class="viewcode-block" id="Environ.is_defined"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ.is_defined">[docs]</a>    <span class="k">def</span> <span class="nf">is_defined</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
179         <span class="sd">&quot;&quot;&quot;\</span>
180 <span class="sd">        Check if the key exists in the environment</span>
181 <span class="sd">        </span>
182 <span class="sd">        :param key str: the environment variable to check</span>
183 <span class="sd">        &quot;&quot;&quot;</span>
184         <span class="k">return</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
185 </div>
186 <div class="viewcode-block" id="Environ.set"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ.set">[docs]</a>    <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
187         <span class="sd">&quot;&quot;&quot;\</span>
188 <span class="sd">        Set the environment variable &quot;key&quot; to value &quot;value&quot;</span>
189 <span class="sd">        </span>
190 <span class="sd">        :param key str: the environment variable to set</span>
191 <span class="sd">        :param value str: the value</span>
192 <span class="sd">        &quot;&quot;&quot;</span>
193         <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_expandvars</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
194 </div>
195 <div class="viewcode-block" id="Environ.get"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ.get">[docs]</a>    <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
196         <span class="sd">&quot;&quot;&quot;\</span>
197 <span class="sd">        Get the value of the environment variable &quot;key&quot;</span>
198 <span class="sd">        </span>
199 <span class="sd">        :param key str: the environment variable</span>
200 <span class="sd">        &quot;&quot;&quot;</span>
201         <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
202             <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
203         <span class="k">else</span><span class="p">:</span>
204             <span class="k">return</span> <span class="s">&quot;&quot;</span>
205 </div>
206 <div class="viewcode-block" id="Environ.command_value"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Environ.command_value">[docs]</a>    <span class="k">def</span> <span class="nf">command_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">command</span><span class="p">):</span>
207         <span class="sd">&quot;&quot;&quot;\</span>
208 <span class="sd">        Get the value given by the system command &quot;command&quot; </span>
209 <span class="sd">        and put it in the environment variable key</span>
210 <span class="sd">        </span>
211 <span class="sd">        :param key str: the environment variable</span>
212 <span class="sd">        :param command str: the command to execute</span>
213 <span class="sd">        &quot;&quot;&quot;</span>
214         <span class="n">value</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">command</span><span class="p">,</span>
215                                  <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
216                                  <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
217                                  <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">)</span><span class="o">.</span><span class="n">communicate</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
218         <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
219
220 </div></div>
221 <div class="viewcode-block" id="SalomeEnviron"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron">[docs]</a><span class="k">class</span> <span class="nc">SalomeEnviron</span><span class="p">:</span>
222     <span class="sd">&quot;&quot;&quot;\</span>
223 <span class="sd">    Class to manage the environment of SALOME.</span>
224 <span class="sd">    &quot;&quot;&quot;</span>
225     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
226                  <span class="n">cfg</span><span class="p">,</span>
227                  <span class="n">environ</span><span class="p">,</span>
228                  <span class="n">forBuild</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
229                  <span class="n">for_package</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
230                  <span class="n">enable_simple_env_script</span> <span class="o">=</span> <span class="bp">True</span><span class="p">):</span>
231         <span class="sd">&quot;&quot;&quot;\</span>
232 <span class="sd">        Initialization.</span>
233
234 <span class="sd">        :param cfg Config: the global config</span>
235 <span class="sd">        :param environ Environ: the Environ instance where </span>
236 <span class="sd">                                to store the environment variables</span>
237 <span class="sd">        :param forBuild bool: If true, it is a launch environment, </span>
238 <span class="sd">                              else a build one</span>
239 <span class="sd">        :param for_package str: If not None, produce a relative environment </span>
240 <span class="sd">                                designed for a package. </span>
241 <span class="sd">        &quot;&quot;&quot;</span>
242         <span class="bp">self</span><span class="o">.</span><span class="n">environ</span> <span class="o">=</span> <span class="n">environ</span>
243         <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span> <span class="o">=</span> <span class="n">cfg</span>
244         <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span> <span class="o">=</span> <span class="n">forBuild</span>
245         <span class="bp">self</span><span class="o">.</span><span class="n">for_package</span> <span class="o">=</span> <span class="n">for_package</span>
246         <span class="bp">self</span><span class="o">.</span><span class="n">enable_simple_env_script</span> <span class="o">=</span> <span class="n">enable_simple_env_script</span>
247         <span class="bp">self</span><span class="o">.</span><span class="n">silent</span> <span class="o">=</span> <span class="bp">False</span>
248
249     <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
250         <span class="sd">&quot;&quot;&quot;easy almost exhaustive quick resume for debug print&quot;&quot;&quot;</span>
251         <span class="n">res</span> <span class="o">=</span> <span class="p">{</span>
252           <span class="s">&quot;environ&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
253           <span class="s">&quot;forBuild&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span><span class="p">,</span>
254           <span class="s">&quot;for_package&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">for_package</span><span class="p">,</span>
255         <span class="p">}</span>
256         <span class="k">return</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">(</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">PP</span><span class="o">.</span><span class="n">pformat</span><span class="p">(</span><span class="n">res</span><span class="p">))</span>
257
258 <div class="viewcode-block" id="SalomeEnviron.append"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.append">[docs]</a>    <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">):</span>
259         <span class="sd">&quot;&quot;&quot;\</span>
260 <span class="sd">        append value to key using sep</span>
261 <span class="sd">        </span>
262 <span class="sd">        :param key str: the environment variable to append</span>
263 <span class="sd">        :param value str: the value to append to key</span>
264 <span class="sd">        :param sep str: the separator string</span>
265 <span class="sd">        &quot;&quot;&quot;</span>
266         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
267 </div>
268 <div class="viewcode-block" id="SalomeEnviron.prepend"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.prepend">[docs]</a>    <span class="k">def</span> <span class="nf">prepend</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">):</span>
269         <span class="sd">&quot;&quot;&quot;\</span>
270 <span class="sd">        prepend value to key using sep</span>
271 <span class="sd">        </span>
272 <span class="sd">        :param key str: the environment variable to prepend</span>
273 <span class="sd">        :param value str: the value to prepend to key</span>
274 <span class="sd">        :param sep str: the separator string</span>
275 <span class="sd">        &quot;&quot;&quot;</span>
276         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
277 </div>
278 <div class="viewcode-block" id="SalomeEnviron.is_defined"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.is_defined">[docs]</a>    <span class="k">def</span> <span class="nf">is_defined</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
279         <span class="sd">&quot;&quot;&quot;\</span>
280 <span class="sd">        Check if the key exists in the environment</span>
281 <span class="sd">        </span>
282 <span class="sd">        :param key str: the environment variable to check</span>
283 <span class="sd">        &quot;&quot;&quot;</span>
284         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">is_defined</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
285 </div>
286 <div class="viewcode-block" id="SalomeEnviron.get"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.get">[docs]</a>    <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
287         <span class="sd">&quot;&quot;&quot;\</span>
288 <span class="sd">        Get the value of the environment variable &quot;key&quot;</span>
289 <span class="sd">        </span>
290 <span class="sd">        :param key str: the environment variable</span>
291 <span class="sd">        &quot;&quot;&quot;</span>
292         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
293 </div>
294 <div class="viewcode-block" id="SalomeEnviron.set"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set">[docs]</a>    <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
295         <span class="sd">&quot;&quot;&quot;\</span>
296 <span class="sd">        Set the environment variable &quot;key&quot; to value &quot;value&quot;</span>
297 <span class="sd">        </span>
298 <span class="sd">        :param key str: the environment variable to set</span>
299 <span class="sd">        :param value str: the value</span>
300 <span class="sd">        &quot;&quot;&quot;</span>
301         <span class="c"># check if value needs to be evaluated</span>
302         <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">value</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&quot;`&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">value</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">&quot;`&quot;</span><span class="p">):</span>
303             <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="s">&quot;echo </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">value</span><span class="p">,</span>
304                                    <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
305                                    <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
306             <span class="n">value</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
307
308         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
309 </div>
310 <div class="viewcode-block" id="SalomeEnviron.dump"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.dump">[docs]</a>    <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">out</span><span class="p">):</span>
311         <span class="sd">&quot;&quot;&quot;\</span>
312 <span class="sd">        Write the environment to out</span>
313 <span class="sd">        </span>
314 <span class="sd">        :param out file: the stream where to write the environment</span>
315 <span class="sd">        &quot;&quot;&quot;</span>
316         <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
317             <span class="k">try</span><span class="p">:</span>
318                 <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
319             <span class="k">except</span><span class="p">:</span>
320                 <span class="n">value</span> <span class="o">=</span> <span class="s">&quot;?&quot;</span>
321             <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">=</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
322 </div>
323 <div class="viewcode-block" id="SalomeEnviron.add_line"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.add_line">[docs]</a>    <span class="k">def</span> <span class="nf">add_line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nb_line</span><span class="p">):</span>
324         <span class="sd">&quot;&quot;&quot;\</span>
325 <span class="sd">        Add empty lines to the out stream (in case of file generation)</span>
326 <span class="sd">        </span>
327 <span class="sd">        :param nb_line int: the number of empty lines to add</span>
328 <span class="sd">        &quot;&quot;&quot;</span>
329         <span class="k">if</span> <span class="s">&#39;add_line&#39;</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">):</span>
330             <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">add_line</span><span class="p">(</span><span class="n">nb_line</span><span class="p">)</span>
331 </div>
332 <div class="viewcode-block" id="SalomeEnviron.add_comment"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.add_comment">[docs]</a>    <span class="k">def</span> <span class="nf">add_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment</span><span class="p">):</span>
333         <span class="sd">&quot;&quot;&quot;\</span>
334 <span class="sd">        Add a commentary to the out stream (in case of file generation)</span>
335 <span class="sd">        </span>
336 <span class="sd">        :param comment str: the commentary to add</span>
337 <span class="sd">        &quot;&quot;&quot;</span>
338         <span class="k">if</span> <span class="s">&#39;add_comment&#39;</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">):</span>
339             <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">add_comment</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span>
340 </div>
341 <div class="viewcode-block" id="SalomeEnviron.add_warning"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.add_warning">[docs]</a>    <span class="k">def</span> <span class="nf">add_warning</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">warning</span><span class="p">):</span>
342         <span class="sd">&quot;&quot;&quot;\</span>
343 <span class="sd">        Add a warning to the out stream (in case of file generation)</span>
344 <span class="sd">        </span>
345 <span class="sd">        :param warning str: the warning to add</span>
346 <span class="sd">        &quot;&quot;&quot;</span>
347         <span class="k">if</span> <span class="s">&#39;add_warning&#39;</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">):</span>
348             <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">add_warning</span><span class="p">(</span><span class="n">warning</span><span class="p">)</span>
349 </div>
350 <div class="viewcode-block" id="SalomeEnviron.finish"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.finish">[docs]</a>    <span class="k">def</span> <span class="nf">finish</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">required</span><span class="p">):</span>
351         <span class="sd">&quot;&quot;&quot;\</span>
352 <span class="sd">        Add a final instruction in the out file (in case of file generation)</span>
353 <span class="sd">        </span>
354 <span class="sd">        :param required bool: Do nothing if required is False</span>
355 <span class="sd">        &quot;&quot;&quot;</span>
356         <span class="k">if</span> <span class="s">&#39;finish&#39;</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="p">):</span>
357             <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">add_line</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
358             <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">add_comment</span><span class="p">(</span><span class="s">&quot;clean all the path&quot;</span><span class="p">)</span>
359             <span class="bp">self</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">finish</span><span class="p">(</span><span class="n">required</span><span class="p">)</span>
360 </div>
361 <div class="viewcode-block" id="SalomeEnviron.set_python_libdirs"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set_python_libdirs">[docs]</a>    <span class="k">def</span> <span class="nf">set_python_libdirs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
362         <span class="sd">&quot;&quot;&quot;Set some generic variables for python library paths&quot;&quot;&quot;</span>
363         <span class="n">ver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;PYTHON_VERSION&#39;</span><span class="p">)</span>
364         <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&#39;PYTHON_LIBDIR0&#39;</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s">&#39;lib&#39;</span><span class="p">,</span>
365                                                 <span class="s">&#39;python&#39;</span> <span class="o">+</span> <span class="n">ver</span><span class="p">,</span>
366                                                 <span class="s">&#39;site-packages&#39;</span><span class="p">))</span>
367         <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&#39;PYTHON_LIBDIR1&#39;</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s">&#39;lib64&#39;</span><span class="p">,</span>
368                                                 <span class="s">&#39;python&#39;</span> <span class="o">+</span> <span class="n">ver</span><span class="p">,</span>
369                                                 <span class="s">&#39;site-packages&#39;</span><span class="p">))</span>
370           
371         <span class="bp">self</span><span class="o">.</span><span class="n">python_lib0</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;PYTHON_LIBDIR0&#39;</span><span class="p">)</span>
372         <span class="bp">self</span><span class="o">.</span><span class="n">python_lib1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;PYTHON_LIBDIR1&#39;</span><span class="p">)</span>
373 </div>
374 <div class="viewcode-block" id="SalomeEnviron.get_names"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.get_names">[docs]</a>    <span class="k">def</span> <span class="nf">get_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lProducts</span><span class="p">):</span>
375         <span class="sd">&quot;&quot;&quot;\</span>
376 <span class="sd">        Get the products name to add in SALOME_MODULES environment variable</span>
377 <span class="sd">        It is the name of the product, except in the case where the is a </span>
378 <span class="sd">        component name. And it has to be in SALOME_MODULES variable only </span>
379 <span class="sd">        if the product has the property has_salome_hui = &quot;yes&quot;</span>
380 <span class="sd">        </span>
381 <span class="sd">        :param lProducts list: List of products to potentially add</span>
382 <span class="sd">        &quot;&quot;&quot;</span>
383         <span class="n">lProdHasGui</span> <span class="o">=</span> <span class="p">[</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">lProducts</span> <span class="k">if</span> <span class="s">&#39;properties&#39;</span> <span class="ow">in</span> 
384             <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">get_product_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="p">,</span> <span class="n">p</span><span class="p">)</span> <span class="ow">and</span>
385             <span class="s">&#39;has_salome_gui&#39;</span> <span class="ow">in</span> 
386             <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">get_product_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="p">,</span> <span class="n">p</span><span class="p">)</span><span class="o">.</span><span class="n">properties</span> <span class="ow">and</span>
387             <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">get_product_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="p">,</span>
388                                            <span class="n">p</span><span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="o">.</span><span class="n">has_salome_gui</span><span class="o">==</span><span class="s">&#39;yes&#39;</span><span class="p">]</span>
389         <span class="n">lProdName</span> <span class="o">=</span> <span class="p">[]</span>
390         <span class="k">for</span> <span class="n">ProdName</span> <span class="ow">in</span> <span class="n">lProdHasGui</span><span class="p">:</span>
391             <span class="n">pi</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">get_product_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="p">,</span> <span class="n">ProdName</span><span class="p">)</span>
392             <span class="k">if</span> <span class="s">&#39;component_name&#39;</span> <span class="ow">in</span> <span class="n">pi</span><span class="p">:</span>
393                 <span class="n">lProdName</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pi</span><span class="o">.</span><span class="n">component_name</span><span class="p">)</span>
394             <span class="k">else</span><span class="p">:</span>
395                 <span class="n">lProdName</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ProdName</span><span class="p">)</span>
396         <span class="k">return</span> <span class="n">lProdName</span>
397 </div>
398 <div class="viewcode-block" id="SalomeEnviron.set_application_env"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set_application_env">[docs]</a>    <span class="k">def</span> <span class="nf">set_application_env</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">logger</span><span class="p">):</span>
399         <span class="sd">&quot;&quot;&quot;\</span>
400 <span class="sd">        Sets the environment defined in the APPLICATION file.</span>
401 <span class="sd">        </span>
402 <span class="sd">        :param logger Logger: The logger instance to display messages</span>
403 <span class="sd">        &quot;&quot;&quot;</span>
404         
405         <span class="c"># add variable PRODUCT_ROOT_DIR as $workdir in APPLICATION.environ section if not present</span>
406         <span class="k">try</span><span class="p">:</span> 
407           <span class="n">tmp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">PRODUCT_ROOT_DIR</span>
408         <span class="k">except</span><span class="p">:</span>
409           <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">PRODUCT_ROOT_DIR</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">pyconf</span><span class="o">.</span><span class="n">Reference</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="p">,</span> <span class="n">src</span><span class="o">.</span><span class="n">pyconf</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">,</span> <span class="s">&quot;workdir&quot;</span><span class="p">)</span>
410           <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;set_application_env add default Config.APPLICATION.environ.PRODUCT_ROOT_DIR&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ</span><span class="p">)</span>
411           
412         <span class="c"># Set the variables defined in the &quot;environ&quot; section</span>
413         <span class="k">if</span> <span class="s">&#39;environ&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="p">:</span>
414             <span class="c"># we write PRODUCT environment it in order to conform to </span>
415             <span class="c"># parseConfigFile.py</span>
416             <span class="bp">self</span><span class="o">.</span><span class="n">add_comment</span><span class="p">(</span><span class="s">&quot;PRODUCT environment&quot;</span><span class="p">)</span> 
417             <span class="bp">self</span><span class="o">.</span><span class="n">load_cfg_environment</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ</span><span class="p">)</span>
418             <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span> <span class="ow">and</span> <span class="s">&quot;build&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
419                 <span class="bp">self</span><span class="o">.</span><span class="n">load_cfg_environment</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">build</span><span class="p">)</span>
420             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span> <span class="ow">and</span> <span class="s">&quot;launch&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
421                 <span class="bp">self</span><span class="o">.</span><span class="n">load_cfg_environment</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">launch</span><span class="p">)</span>
422             <span class="bp">self</span><span class="o">.</span><span class="n">add_line</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
423
424         <span class="c"># If there is an &quot;environ_script&quot; section, load the scripts</span>
425         <span class="k">if</span> <span class="s">&#39;environ_script&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="p">:</span>
426             <span class="k">for</span> <span class="n">pscript</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ_script</span><span class="p">:</span>
427                 <span class="bp">self</span><span class="o">.</span><span class="n">add_comment</span><span class="p">(</span><span class="s">&quot;script </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">pscript</span><span class="p">)</span>
428                 <span class="n">sname</span> <span class="o">=</span> <span class="n">pscript</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot; &quot;</span><span class="p">,</span> <span class="s">&quot;_&quot;</span><span class="p">)</span>
429                 <span class="bp">self</span><span class="o">.</span><span class="n">run_env_script</span><span class="p">(</span><span class="s">&quot;APPLICATION_</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">sname</span><span class="p">,</span>
430                                 <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">environ_script</span><span class="p">[</span><span class="n">pscript</span><span class="p">],</span>
431                                 <span class="n">logger</span><span class="p">)</span>
432                 <span class="bp">self</span><span class="o">.</span><span class="n">add_line</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>       
433 </div>
434 <div class="viewcode-block" id="SalomeEnviron.set_salome_minimal_product_env"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set_salome_minimal_product_env">[docs]</a>    <span class="k">def</span> <span class="nf">set_salome_minimal_product_env</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">product_info</span><span class="p">,</span> <span class="n">logger</span><span class="p">):</span>
435         <span class="sd">&quot;&quot;&quot;\</span>
436 <span class="sd">        Sets the minimal environment for a SALOME product.</span>
437 <span class="sd">        xxx_ROOT_DIR and xxx_SRC_DIR</span>
438 <span class="sd">        </span>
439 <span class="sd">        :param product_info Config: The product description</span>
440 <span class="sd">        :param logger Logger: The logger instance to display messages        </span>
441 <span class="sd">        &quot;&quot;&quot;</span>
442         <span class="c"># set root dir</span>
443         <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;set_salome_minimal_product_env&quot;</span><span class="p">,</span> <span class="n">product_info</span><span class="p">)</span>
444         <span class="n">root_dir</span> <span class="o">=</span> <span class="n">product_info</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s">&quot;_ROOT_DIR&quot;</span>
445         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_defined</span><span class="p">(</span><span class="n">root_dir</span><span class="p">):</span>
446             <span class="k">if</span> <span class="s">&#39;install_dir&#39;</span> <span class="ow">in</span> <span class="n">product_info</span> <span class="ow">and</span> <span class="n">product_info</span><span class="o">.</span><span class="n">install_dir</span><span class="p">:</span>
447                 <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">root_dir</span><span class="p">,</span> <span class="n">product_info</span><span class="o">.</span><span class="n">install_dir</span><span class="p">)</span>
448             <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">silent</span><span class="p">:</span>
449                 <span class="n">logger</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;  &quot;</span> <span class="o">+</span> <span class="n">_</span><span class="p">(</span><span class="s">&quot;No install_dir for product </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span>
450                               <span class="n">product_info</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
451         
452         <span class="n">source_in_package</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">get_property_in_product_cfg</span><span class="p">(</span><span class="n">product_info</span><span class="p">,</span>
453                                                            <span class="s">&quot;sources_in_package&quot;</span><span class="p">)</span>
454         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">for_package</span> <span class="ow">or</span> <span class="n">source_in_package</span> <span class="o">==</span> <span class="s">&quot;yes&quot;</span><span class="p">:</span>
455             <span class="c"># set source dir, unless no source dir</span>
456             <span class="k">if</span> <span class="ow">not</span> <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">product_is_fixed</span><span class="p">(</span><span class="n">product_info</span><span class="p">):</span>
457                 <span class="n">src_dir</span> <span class="o">=</span> <span class="n">product_info</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s">&quot;_SRC_DIR&quot;</span>
458                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_defined</span><span class="p">(</span><span class="n">src_dir</span><span class="p">):</span>
459                     <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">for_package</span><span class="p">:</span>
460                         <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">src_dir</span><span class="p">,</span> <span class="n">product_info</span><span class="o">.</span><span class="n">source_dir</span><span class="p">)</span>
461                     <span class="k">else</span><span class="p">:</span>
462                         <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">src_dir</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s">&quot;out_dir_Path&quot;</span><span class="p">,</span>
463                                                        <span class="s">&quot;SOURCES&quot;</span><span class="p">,</span>
464                                                        <span class="n">product_info</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
465 </div>
466 <div class="viewcode-block" id="SalomeEnviron.set_salome_generic_product_env"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set_salome_generic_product_env">[docs]</a>    <span class="k">def</span> <span class="nf">set_salome_generic_product_env</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pi</span><span class="p">):</span>
467         <span class="sd">&quot;&quot;&quot;\</span>
468 <span class="sd">        Sets the generic environment for a SALOME product.</span>
469 <span class="sd">        </span>
470 <span class="sd">        :param pi Config: The product description</span>
471 <span class="sd">        &quot;&quot;&quot;</span>
472         <span class="c"># Construct XXX_ROOT_DIR</span>
473         <span class="n">env_root_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pi</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s">&quot;_ROOT_DIR&quot;</span><span class="p">)</span>
474         <span class="n">l_binpath_libpath</span> <span class="o">=</span> <span class="p">[]</span>
475
476         <span class="c"># create additional ROOT_DIR for CPP components</span>
477         <span class="k">if</span> <span class="s">&#39;component_name&#39;</span> <span class="ow">in</span> <span class="n">pi</span><span class="p">:</span>
478             <span class="n">compo_name</span> <span class="o">=</span> <span class="n">pi</span><span class="o">.</span><span class="n">component_name</span>
479             <span class="k">if</span> <span class="n">compo_name</span> <span class="o">+</span> <span class="s">&quot;CPP&quot;</span> <span class="o">==</span> <span class="n">pi</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
480                 <span class="n">compo_root_dir</span> <span class="o">=</span> <span class="n">compo_name</span> <span class="o">+</span> <span class="s">&quot;_ROOT_DIR&quot;</span>
481                 <span class="n">envcompo_root_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
482                             <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">TOOLS</span><span class="o">.</span><span class="n">common</span><span class="o">.</span><span class="n">install_root</span><span class="p">,</span> <span class="n">compo_name</span> <span class="p">)</span>
483                 <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">compo_root_dir</span> <span class="p">,</span>  <span class="n">envcompo_root_dir</span><span class="p">)</span>
484                 <span class="n">bin_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">envcompo_root_dir</span><span class="p">,</span> <span class="s">&#39;bin&#39;</span><span class="p">,</span> <span class="s">&#39;salome&#39;</span><span class="p">)</span>
485                 <span class="n">lib_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">envcompo_root_dir</span><span class="p">,</span> <span class="s">&#39;lib&#39;</span><span class="p">,</span> <span class="s">&#39;salome&#39;</span><span class="p">)</span>
486                 <span class="n">l_binpath_libpath</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="p">(</span><span class="n">bin_path</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">)</span> <span class="p">)</span>
487
488         <span class="k">if</span> <span class="n">src</span><span class="o">.</span><span class="n">get_property_in_product_cfg</span><span class="p">(</span><span class="n">pi</span><span class="p">,</span> <span class="s">&quot;fhs&quot;</span><span class="p">):</span>
489             <span class="n">lib_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="s">&#39;lib&#39;</span><span class="p">)</span>
490             <span class="n">pylib1_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">python_lib0</span><span class="p">)</span>
491             <span class="n">pylib2_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">python_lib1</span><span class="p">)</span>
492             <span class="n">bin_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="s">&#39;bin&#39;</span><span class="p">)</span>
493         <span class="k">else</span><span class="p">:</span>
494             <span class="n">lib_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="s">&#39;lib&#39;</span><span class="p">,</span> <span class="s">&#39;salome&#39;</span><span class="p">)</span>
495             <span class="n">pylib1_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">python_lib0</span><span class="p">,</span> <span class="s">&#39;salome&#39;</span><span class="p">)</span>
496             <span class="n">pylib2_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">python_lib1</span><span class="p">,</span> <span class="s">&#39;salome&#39;</span><span class="p">)</span>
497             <span class="n">bin_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="s">&#39;bin&#39;</span><span class="p">,</span> <span class="s">&#39;salome&#39;</span><span class="p">)</span>
498
499         <span class="c"># Construct the paths to prepend to PATH and LD_LIBRARY_PATH and </span>
500         <span class="c"># PYTHONPATH</span>
501         <span class="n">l_binpath_libpath</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="p">(</span><span class="n">bin_path</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">)</span> <span class="p">)</span>
502
503         <span class="k">for</span> <span class="n">bin_path</span><span class="p">,</span> <span class="n">lib_path</span> <span class="ow">in</span> <span class="n">l_binpath_libpath</span><span class="p">:</span>
504             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span><span class="p">:</span>
505                 <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">,</span> <span class="n">bin_path</span><span class="p">)</span>
506                 <span class="k">if</span> <span class="n">src</span><span class="o">.</span><span class="n">architecture</span><span class="o">.</span><span class="n">is_windows</span><span class="p">():</span>
507                     <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">)</span>
508                 <span class="k">else</span> <span class="p">:</span>
509                     <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="s">&#39;LD_LIBRARY_PATH&#39;</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">)</span>
510
511             <span class="n">l</span> <span class="o">=</span> <span class="p">[</span> <span class="n">bin_path</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">,</span> <span class="n">pylib1_path</span><span class="p">,</span> <span class="n">pylib2_path</span> <span class="p">]</span>
512             <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="s">&#39;PYTHONPATH&#39;</span><span class="p">,</span> <span class="n">l</span><span class="p">)</span>
513 </div>
514 <div class="viewcode-block" id="SalomeEnviron.set_cpp_env"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set_cpp_env">[docs]</a>    <span class="k">def</span> <span class="nf">set_cpp_env</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">product_info</span><span class="p">):</span>
515         <span class="sd">&quot;&quot;&quot;\</span>
516 <span class="sd">        Sets the generic environment for a SALOME cpp product.</span>
517 <span class="sd">        </span>
518 <span class="sd">        :param product_info Config: The product description</span>
519 <span class="sd">        &quot;&quot;&quot;</span>
520         <span class="c"># Construct XXX_ROOT_DIR</span>
521         <span class="n">env_root_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">product_info</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s">&quot;_ROOT_DIR&quot;</span><span class="p">)</span>
522         <span class="n">l_binpath_libpath</span> <span class="o">=</span> <span class="p">[]</span>
523
524         <span class="c"># Construct the paths to prepend to PATH and LD_LIBRARY_PATH and </span>
525         <span class="c"># PYTHONPATH</span>
526         <span class="n">bin_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="s">&#39;bin&#39;</span><span class="p">)</span>
527         <span class="n">lib_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="s">&#39;lib&#39;</span><span class="p">)</span>
528         <span class="n">l_binpath_libpath</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="p">(</span><span class="n">bin_path</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">)</span> <span class="p">)</span>
529
530         <span class="k">for</span> <span class="n">bin_path</span><span class="p">,</span> <span class="n">lib_path</span> <span class="ow">in</span> <span class="n">l_binpath_libpath</span><span class="p">:</span>
531             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span><span class="p">:</span>
532                 <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">,</span> <span class="n">bin_path</span><span class="p">)</span>
533                 <span class="k">if</span> <span class="n">src</span><span class="o">.</span><span class="n">architecture</span><span class="o">.</span><span class="n">is_windows</span><span class="p">():</span>
534                     <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">)</span>
535                 <span class="k">else</span> <span class="p">:</span>
536                     <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="s">&#39;LD_LIBRARY_PATH&#39;</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">)</span>
537
538             <span class="n">l</span> <span class="o">=</span> <span class="p">[</span> <span class="n">bin_path</span><span class="p">,</span> <span class="n">lib_path</span><span class="p">,</span>
539                   <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">python_lib0</span><span class="p">),</span>
540                   <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">env_root_dir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">python_lib1</span><span class="p">)</span>
541                 <span class="p">]</span>
542             <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="s">&#39;PYTHONPATH&#39;</span><span class="p">,</span> <span class="n">l</span><span class="p">)</span>
543 </div>
544 <div class="viewcode-block" id="SalomeEnviron.load_cfg_environment"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.load_cfg_environment">[docs]</a>    <span class="k">def</span> <span class="nf">load_cfg_environment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cfg_env</span><span class="p">):</span>
545         <span class="sd">&quot;&quot;&quot;\</span>
546 <span class="sd">        Loads environment defined in cfg_env </span>
547 <span class="sd">        </span>
548 <span class="sd">        :param cfg_env Config: A config containing an environment    </span>
549 <span class="sd">        &quot;&quot;&quot;</span>
550         <span class="c"># Loop on cfg_env values</span>
551         <span class="k">for</span> <span class="n">env_def</span> <span class="ow">in</span> <span class="n">cfg_env</span><span class="p">:</span>
552             <span class="n">val</span> <span class="o">=</span> <span class="n">cfg_env</span><span class="p">[</span><span class="n">env_def</span><span class="p">]</span>
553             
554             <span class="c"># if it is env_script, do not do anything (reserved keyword)</span>
555             <span class="k">if</span> <span class="n">env_def</span> <span class="o">==</span> <span class="s">&quot;env_script&quot;</span><span class="p">:</span>
556                 <span class="k">continue</span>
557             
558             <span class="c"># if it is a dict, do not do anything</span>
559             <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">src</span><span class="o">.</span><span class="n">pyconf</span><span class="o">.</span><span class="n">Mapping</span><span class="p">):</span>
560                 <span class="k">continue</span>
561
562             <span class="c"># if it is a list, loop on its values</span>
563             <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">src</span><span class="o">.</span><span class="n">pyconf</span><span class="o">.</span><span class="n">Sequence</span><span class="p">):</span>
564                 <span class="c"># transform into list of strings</span>
565                 <span class="n">l_val</span> <span class="o">=</span> <span class="p">[]</span>
566                 <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">val</span><span class="p">:</span>
567                     <span class="n">l_val</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
568                 <span class="n">val</span> <span class="o">=</span> <span class="n">l_val</span>
569
570             <span class="c"># &quot;_&quot; means that the value must be prepended</span>
571             <span class="k">if</span> <span class="n">env_def</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&quot;_&quot;</span><span class="p">):</span>
572                 <span class="c"># separator exception for PV_PLUGIN_PATH</span>
573                 <span class="k">if</span> <span class="n">env_def</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">==</span> <span class="s">&#39;PV_PLUGIN_PATH&#39;</span><span class="p">:</span>
574                     <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">env_def</span><span class="p">[</span><span class="mi">1</span><span class="p">:],</span> <span class="n">val</span><span class="p">,</span> <span class="s">&#39;;&#39;</span><span class="p">)</span>
575                 <span class="k">else</span><span class="p">:</span>
576                     <span class="bp">self</span><span class="o">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">env_def</span><span class="p">[</span><span class="mi">1</span><span class="p">:],</span> <span class="n">val</span><span class="p">)</span>
577             <span class="k">elif</span> <span class="n">env_def</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">&quot;_&quot;</span><span class="p">):</span>
578                 <span class="c"># separator exception for PV_PLUGIN_PATH</span>
579                 <span class="k">if</span> <span class="n">env_def</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;PV_PLUGIN_PATH&#39;</span><span class="p">:</span>
580                     <span class="bp">self</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">env_def</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">val</span><span class="p">,</span> <span class="s">&#39;;&#39;</span><span class="p">)</span>
581                 <span class="k">else</span><span class="p">:</span>
582                     <span class="bp">self</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">env_def</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">val</span><span class="p">)</span>
583             <span class="k">else</span><span class="p">:</span>
584                 <span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">env_def</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span>
585 </div>
586 <div class="viewcode-block" id="SalomeEnviron.set_a_product"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set_a_product">[docs]</a>    <span class="k">def</span> <span class="nf">set_a_product</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">product</span><span class="p">,</span> <span class="n">logger</span><span class="p">):</span>
587         <span class="sd">&quot;&quot;&quot;\</span>
588 <span class="sd">        Sets the environment of a product. </span>
589 <span class="sd">        </span>
590 <span class="sd">        :param product str: The product name</span>
591 <span class="sd">        :param logger Logger: The logger instance to display messages</span>
592 <span class="sd">        &quot;&quot;&quot;</span>
593
594         <span class="c"># Get the informations corresponding to the product</span>
595         <span class="n">pi</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">get_product_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="p">,</span> <span class="n">product</span><span class="p">)</span>
596
597         <span class="c"># skip mesa products (if any) at run time, </span>
598         <span class="c"># unless use_mesa property was activated</span>
599         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span><span class="p">:</span>
600             <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="s">&quot;APPLICATION&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span>  <span class="ow">and</span>
601                     <span class="s">&quot;properties&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span>  <span class="ow">and</span>
602                     <span class="s">&quot;use_mesa&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">properties</span>  <span class="ow">and</span>
603                     <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">properties</span><span class="o">.</span><span class="n">use_mesa</span> <span class="o">==</span> <span class="s">&quot;yes&quot;</span><span class="p">)</span> <span class="p">:</span>
604                 <span class="k">if</span> <span class="p">(</span><span class="s">&quot;properties&quot;</span> <span class="ow">in</span> <span class="n">pi</span> <span class="ow">and</span>
605                     <span class="s">&quot;is_mesa&quot;</span> <span class="ow">in</span> <span class="n">pi</span><span class="o">.</span><span class="n">properties</span>  <span class="ow">and</span>
606                     <span class="n">pi</span><span class="o">.</span><span class="n">properties</span><span class="o">.</span><span class="n">is_mesa</span> <span class="o">==</span> <span class="s">&quot;yes&quot;</span><span class="p">)</span> <span class="p">:</span>
607                     <span class="n">logger</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Skip mesa product </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span> <span class="n">pi</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
608                     <span class="k">return</span>
609                
610         
611         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">for_package</span><span class="p">:</span>
612             <span class="n">pi</span><span class="o">.</span><span class="n">install_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s">&quot;out_dir_Path&quot;</span><span class="p">,</span>
613                                           <span class="bp">self</span><span class="o">.</span><span class="n">for_package</span><span class="p">,</span>
614                                           <span class="n">pi</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
615
616         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">silent</span><span class="p">:</span>
617             <span class="n">logger</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Setting environment for </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span> <span class="n">product</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
618
619         <span class="bp">self</span><span class="o">.</span><span class="n">add_line</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
620         <span class="bp">self</span><span class="o">.</span><span class="n">add_comment</span><span class="p">(</span><span class="s">&#39;setting environ for &#39;</span> <span class="o">+</span> <span class="n">product</span><span class="p">)</span>
621             
622         <span class="c"># Do not define environment if the product is native</span>
623         <span class="k">if</span> <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">product_is_native</span><span class="p">(</span><span class="n">pi</span><span class="p">):</span>
624             <span class="k">if</span> <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">product_has_env_script</span><span class="p">(</span><span class="n">pi</span><span class="p">):</span>
625                 <span class="bp">self</span><span class="o">.</span><span class="n">run_env_script</span><span class="p">(</span><span class="n">pi</span><span class="p">,</span> <span class="n">native</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
626             <span class="k">return</span>
627                
628         <span class="c"># Set an additional environment for SALOME products</span>
629         <span class="k">if</span> <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">product_is_salome</span><span class="p">(</span><span class="n">pi</span><span class="p">):</span>
630             <span class="c"># set environment using definition of the product</span>
631             <span class="bp">self</span><span class="o">.</span><span class="n">set_salome_minimal_product_env</span><span class="p">(</span><span class="n">pi</span><span class="p">,</span> <span class="n">logger</span><span class="p">)</span>
632             <span class="bp">self</span><span class="o">.</span><span class="n">set_salome_generic_product_env</span><span class="p">(</span><span class="n">pi</span><span class="p">)</span>
633         
634         <span class="k">if</span> <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">product_is_cpp</span><span class="p">(</span><span class="n">pi</span><span class="p">):</span>
635             <span class="c"># set a specific environment for cpp modules</span>
636             <span class="bp">self</span><span class="o">.</span><span class="n">set_salome_minimal_product_env</span><span class="p">(</span><span class="n">pi</span><span class="p">,</span> <span class="n">logger</span><span class="p">)</span>
637             <span class="bp">self</span><span class="o">.</span><span class="n">set_cpp_env</span><span class="p">(</span><span class="n">pi</span><span class="p">)</span>
638             
639             <span class="k">if</span> <span class="n">src</span><span class="o">.</span><span class="n">product</span><span class="o">.</span><span class="n">product_is_generated</span><span class="p">(</span><span class="n">pi</span><span class="p">):</span>
640                 <span class="k">if</span> <span class="s">&quot;component_name&quot;</span> <span class="ow">in</span> <span class="n">pi</span><span class="p">:</span>
641                     <span class="c"># hack the source and install directories in order to point  </span>
642                     <span class="c"># on the generated product source install directories</span>
643                     <span class="n">install_dir_save</span> <span class="o">=</span> <span class="n">pi</span><span class="o">.</span><span class="n">install_dir</span>
644                     <span class="n">source_dir_save</span> <span class="o">=</span> <span class="n">pi</span><span class="o">.</span><span class="n">source_dir</span>
645                     <span class="n">name_save</span> <span class="o">=</span> <span class="n">pi</span><span class="o">.</span><span class="n">name</span>
646                     <span class="n">pi</span><span class="o">.</span><span class="n">install_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">workdir</span><span class="p">,</span>
647                                                   <span class="s">&quot;INSTALL&quot;</span><span class="p">,</span>
648                                                   <span class="n">pi</span><span class="o">.</span><span class="n">component_name</span><span class="p">)</span>
649                     <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">for_package</span><span class="p">:</span>
650                         <span class="n">pi</span><span class="o">.</span><span class="n">install_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s">&quot;out_dir_Path&quot;</span><span class="p">,</span>
651                                                       <span class="bp">self</span><span class="o">.</span><span class="n">for_package</span><span class="p">,</span>
652                                                       <span class="n">pi</span><span class="o">.</span><span class="n">component_name</span><span class="p">)</span>
653                     <span class="n">pi</span><span class="o">.</span><span class="n">source_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">workdir</span><span class="p">,</span>
654                                                   <span class="s">&quot;GENERATED&quot;</span><span class="p">,</span>
655                                                   <span class="n">pi</span><span class="o">.</span><span class="n">component_name</span><span class="p">)</span>
656                     <span class="n">pi</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">pi</span><span class="o">.</span><span class="n">component_name</span>
657                     <span class="bp">self</span><span class="o">.</span><span class="n">set_salome_minimal_product_env</span><span class="p">(</span><span class="n">pi</span><span class="p">,</span> <span class="n">logger</span><span class="p">)</span>
658                     <span class="bp">self</span><span class="o">.</span><span class="n">set_salome_generic_product_env</span><span class="p">(</span><span class="n">pi</span><span class="p">)</span>
659                     
660                     <span class="c"># Put original values</span>
661                     <span class="n">pi</span><span class="o">.</span><span class="n">install_dir</span> <span class="o">=</span> <span class="n">install_dir_save</span>
662                     <span class="n">pi</span><span class="o">.</span><span class="n">source_dir</span> <span class="o">=</span> <span class="n">source_dir_save</span>
663                     <span class="n">pi</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name_save</span>
664         
665         <span class="c"># Put the environment define in the configuration of the product</span>
666         <span class="k">if</span> <span class="s">&quot;environ&quot;</span> <span class="ow">in</span> <span class="n">pi</span><span class="p">:</span>
667             <span class="bp">self</span><span class="o">.</span><span class="n">load_cfg_environment</span><span class="p">(</span><span class="n">pi</span><span class="o">.</span><span class="n">environ</span><span class="p">)</span>
668             <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span> <span class="ow">and</span> <span class="s">&quot;build&quot;</span> <span class="ow">in</span> <span class="n">pi</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
669                 <span class="bp">self</span><span class="o">.</span><span class="n">load_cfg_environment</span><span class="p">(</span><span class="n">pi</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">build</span><span class="p">)</span>
670             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">forBuild</span> <span class="ow">and</span> <span class="s">&quot;launch&quot;</span> <span class="ow">in</span> <span class="n">pi</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
671                 <span class="bp">self</span><span class="o">.</span><span class="n">load_cfg_environment</span><span class="p">(</span><span class="n">pi</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">launch</span><span class="p">)</span>
672             <span class="c"># if product_info defines a env_scripts, load it</span>
673             <span class="k">if</span> <span class="s">&#39;env_script&#39;</span> <span class="ow">in</span> <span class="n">pi</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
674                 <span class="bp">self</span><span class="o">.</span><span class="n">run_env_script</span><span class="p">(</span><span class="n">pi</span><span class="p">,</span> <span class="n">logger</span><span class="p">)</span>
675
676         
677             
678 </div>
679 <div class="viewcode-block" id="SalomeEnviron.run_env_script"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.run_env_script">[docs]</a>    <span class="k">def</span> <span class="nf">run_env_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">product_info</span><span class="p">,</span> <span class="n">logger</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">native</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
680         <span class="sd">&quot;&quot;&quot;\</span>
681 <span class="sd">        Runs an environment script. </span>
682 <span class="sd">        </span>
683 <span class="sd">        :param product_info Config: The product description</span>
684 <span class="sd">        :param logger Logger: The logger instance to display messages</span>
685 <span class="sd">        :param native Boolean: if True load set_native_env instead of set_env</span>
686 <span class="sd">        &quot;&quot;&quot;</span>
687         <span class="n">env_script</span> <span class="o">=</span> <span class="n">product_info</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">env_script</span>
688         <span class="c"># Check that the script exists</span>
689         <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">env_script</span><span class="p">):</span>
690             <span class="k">raise</span> <span class="n">src</span><span class="o">.</span><span class="n">SatException</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Environment script not found: </span><span class="si">%s</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span> 
691                                    <span class="n">env_script</span><span class="p">)</span>
692
693         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">silent</span> <span class="ow">and</span> <span class="n">logger</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
694             <span class="n">logger</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;  ** load </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">env_script</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
695
696         <span class="c"># import the script and run the set_env function</span>
697         <span class="k">try</span><span class="p">:</span>
698             <span class="kn">import</span> <span class="nn">imp</span>
699             <span class="n">pyproduct</span> <span class="o">=</span> <span class="n">imp</span><span class="o">.</span><span class="n">load_source</span><span class="p">(</span><span class="n">product_info</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s">&quot;_env_script&quot;</span><span class="p">,</span>
700                                         <span class="n">env_script</span><span class="p">)</span>
701             <span class="k">if</span> <span class="ow">not</span> <span class="n">native</span><span class="p">:</span>
702                 <span class="n">pyproduct</span><span class="o">.</span><span class="n">set_env</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
703                                   <span class="n">product_info</span><span class="o">.</span><span class="n">install_dir</span><span class="p">,</span>
704                                   <span class="n">product_info</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
705             <span class="k">else</span><span class="p">:</span>
706                 <span class="k">if</span> <span class="s">&quot;set_nativ_env&quot;</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="n">pyproduct</span><span class="p">):</span>
707                     <span class="n">pyproduct</span><span class="o">.</span><span class="n">set_nativ_env</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
708         <span class="k">except</span><span class="p">:</span>
709             <span class="n">__</span><span class="p">,</span> <span class="n">exceptionValue</span><span class="p">,</span> <span class="n">exceptionTraceback</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()</span>
710             <span class="k">print</span><span class="p">(</span><span class="n">exceptionValue</span><span class="p">)</span>
711             <span class="kn">import</span> <span class="nn">traceback</span>
712             <span class="n">traceback</span><span class="o">.</span><span class="n">print_tb</span><span class="p">(</span><span class="n">exceptionTraceback</span><span class="p">)</span>
713             <span class="n">traceback</span><span class="o">.</span><span class="n">print_exc</span><span class="p">()</span>
714 </div>
715 <div class="viewcode-block" id="SalomeEnviron.run_simple_env_script"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.run_simple_env_script">[docs]</a>    <span class="k">def</span> <span class="nf">run_simple_env_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">script_path</span><span class="p">,</span> <span class="n">logger</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
716         <span class="sd">&quot;&quot;&quot;\</span>
717 <span class="sd">        Runs an environment script. Same as run_env_script, but with a </span>
718 <span class="sd">        script path as parameter.</span>
719 <span class="sd">        </span>
720 <span class="sd">        :param script_path str: a path to an environment script</span>
721 <span class="sd">        :param logger Logger: The logger instance to display messages</span>
722 <span class="sd">        &quot;&quot;&quot;</span>
723         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">enable_simple_env_script</span><span class="p">:</span>
724             <span class="k">return</span>
725         <span class="c"># Check that the script exists</span>
726         <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">script_path</span><span class="p">):</span>
727             <span class="k">raise</span> <span class="n">src</span><span class="o">.</span><span class="n">SatException</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Environment script not found: </span><span class="si">%s</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span> 
728                                    <span class="n">script_path</span><span class="p">)</span>
729
730         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">silent</span> <span class="ow">and</span> <span class="n">logger</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
731             <span class="n">logger</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;  ** load </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">script_path</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
732
733         <span class="n">script_basename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">script_path</span><span class="p">)</span>
734         <span class="k">if</span> <span class="n">script_basename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">&quot;.py&quot;</span><span class="p">):</span>
735             <span class="n">script_basename</span> <span class="o">=</span> <span class="n">script_basename</span><span class="p">[:</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="s">&quot;.py&quot;</span><span class="p">)]</span>
736
737         <span class="c"># import the script and run the set_env function</span>
738         <span class="k">try</span><span class="p">:</span>
739             <span class="kn">import</span> <span class="nn">imp</span>
740             <span class="n">pyproduct</span> <span class="o">=</span> <span class="n">imp</span><span class="o">.</span><span class="n">load_source</span><span class="p">(</span><span class="n">script_basename</span> <span class="o">+</span> <span class="s">&quot;_env_script&quot;</span><span class="p">,</span>
741                                         <span class="n">script_path</span><span class="p">)</span>
742             <span class="n">pyproduct</span><span class="o">.</span><span class="n">load_env</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
743         <span class="k">except</span><span class="p">:</span>
744             <span class="n">__</span><span class="p">,</span> <span class="n">exceptionValue</span><span class="p">,</span> <span class="n">exceptionTraceback</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()</span>
745             <span class="k">print</span><span class="p">(</span><span class="n">exceptionValue</span><span class="p">)</span>
746             <span class="kn">import</span> <span class="nn">traceback</span>
747             <span class="n">traceback</span><span class="o">.</span><span class="n">print_tb</span><span class="p">(</span><span class="n">exceptionTraceback</span><span class="p">)</span>
748             <span class="n">traceback</span><span class="o">.</span><span class="n">print_exc</span><span class="p">()</span>
749 </div>
750 <div class="viewcode-block" id="SalomeEnviron.set_products"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set_products">[docs]</a>    <span class="k">def</span> <span class="nf">set_products</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">src_root</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
751         <span class="sd">&quot;&quot;&quot;\</span>
752 <span class="sd">        Sets the environment for all the products. </span>
753 <span class="sd">        </span>
754 <span class="sd">        :param logger Logger: The logger instance to display messages</span>
755 <span class="sd">        :param src_root src: the application working directory</span>
756 <span class="sd">        &quot;&quot;&quot;</span>
757         <span class="bp">self</span><span class="o">.</span><span class="n">add_line</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
758         <span class="bp">self</span><span class="o">.</span><span class="n">add_comment</span><span class="p">(</span><span class="s">&#39;setting environ for all products&#39;</span><span class="p">)</span>
759
760         <span class="c"># Make sure that the python lib dirs are set after python</span>
761         <span class="k">if</span> <span class="s">&quot;Python&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">products</span><span class="p">:</span>
762             <span class="bp">self</span><span class="o">.</span><span class="n">set_a_product</span><span class="p">(</span><span class="s">&quot;Python&quot;</span><span class="p">,</span> <span class="n">logger</span><span class="p">)</span>
763             <span class="bp">self</span><span class="o">.</span><span class="n">set_python_libdirs</span><span class="p">()</span>
764
765         <span class="c"># The loop on the products</span>
766         <span class="k">for</span> <span class="n">product</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">products</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
767             <span class="k">if</span> <span class="n">product</span> <span class="o">==</span> <span class="s">&quot;Python&quot;</span><span class="p">:</span>
768                 <span class="k">continue</span>
769             <span class="bp">self</span><span class="o">.</span><span class="n">set_a_product</span><span class="p">(</span><span class="n">product</span><span class="p">,</span> <span class="n">logger</span><span class="p">)</span>
770             <span class="bp">self</span><span class="o">.</span><span class="n">finish</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
771  </div>
772 <div class="viewcode-block" id="SalomeEnviron.set_full_environ"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.SalomeEnviron.set_full_environ">[docs]</a>    <span class="k">def</span> <span class="nf">set_full_environ</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">env_info</span><span class="p">):</span>
773         <span class="sd">&quot;&quot;&quot;\</span>
774 <span class="sd">        Sets the full environment for products </span>
775 <span class="sd">        specified in env_info dictionary. </span>
776 <span class="sd">        </span>
777 <span class="sd">        :param logger Logger: The logger instance to display messages</span>
778 <span class="sd">        :param env_info list: the list of products</span>
779 <span class="sd">        &quot;&quot;&quot;</span>
780         <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;set_full_environ for&quot;</span><span class="p">,</span> <span class="n">env_info</span><span class="p">)</span>
781         <span class="c"># DBG.write(&quot;set_full_environ config&quot;, self.cfg.APPLICATION.environ, True)</span>
782         <span class="c"># set product environ</span>
783         <span class="bp">self</span><span class="o">.</span><span class="n">set_application_env</span><span class="p">(</span><span class="n">logger</span><span class="p">)</span>
784
785         <span class="bp">self</span><span class="o">.</span><span class="n">set_python_libdirs</span><span class="p">()</span>
786
787         <span class="c"># set products</span>
788         <span class="k">for</span> <span class="n">product</span> <span class="ow">in</span> <span class="n">env_info</span><span class="p">:</span>
789             <span class="bp">self</span><span class="o">.</span><span class="n">set_a_product</span><span class="p">(</span><span class="n">product</span><span class="p">,</span> <span class="n">logger</span><span class="p">)</span>
790 </div></div>
791 <div class="viewcode-block" id="FileEnvWriter"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.FileEnvWriter">[docs]</a><span class="k">class</span> <span class="nc">FileEnvWriter</span><span class="p">:</span>
792     <span class="sd">&quot;&quot;&quot;\</span>
793 <span class="sd">    Class to dump the environment to a file.</span>
794 <span class="sd">    &quot;&quot;&quot;</span>
795     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">out_dir</span><span class="p">,</span> <span class="n">src_root</span><span class="p">,</span> <span class="n">env_info</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
796         <span class="sd">&quot;&quot;&quot;\</span>
797 <span class="sd">        Initialization.</span>
798
799 <span class="sd">        :param cfg Config: the global config</span>
800 <span class="sd">        :param logger Logger: The logger instance to display messages</span>
801 <span class="sd">        :param out_dir str: The directory path where t put the output files</span>
802 <span class="sd">        :param src_root str: The application working directory</span>
803 <span class="sd">        :param env_info str: The list of products to add in the files.</span>
804 <span class="sd">        &quot;&quot;&quot;</span>
805         <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">config</span>
806         <span class="bp">self</span><span class="o">.</span><span class="n">logger</span> <span class="o">=</span> <span class="n">logger</span>
807         <span class="bp">self</span><span class="o">.</span><span class="n">out_dir</span> <span class="o">=</span> <span class="n">out_dir</span>
808         <span class="bp">self</span><span class="o">.</span><span class="n">src_root</span><span class="o">=</span> <span class="n">src_root</span>
809         <span class="bp">self</span><span class="o">.</span><span class="n">silent</span> <span class="o">=</span> <span class="bp">True</span>
810         <span class="bp">self</span><span class="o">.</span><span class="n">env_info</span> <span class="o">=</span> <span class="n">env_info</span>
811
812 <div class="viewcode-block" id="FileEnvWriter.write_env_file"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.FileEnvWriter.write_env_file">[docs]</a>    <span class="k">def</span> <span class="nf">write_env_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">forBuild</span><span class="p">,</span> <span class="n">shell</span><span class="p">,</span> <span class="n">for_package</span> <span class="o">=</span> <span class="bp">None</span><span class="p">):</span>
813         <span class="sd">&quot;&quot;&quot;\</span>
814 <span class="sd">        Create an environment file.</span>
815 <span class="sd">        </span>
816 <span class="sd">        :param filename str: the file path</span>
817 <span class="sd">        :param forBuild bool: if true, the build environment</span>
818 <span class="sd">        :param shell str: the type of file wanted (.sh, .bat)</span>
819 <span class="sd">        :return: The path to the generated file</span>
820 <span class="sd">        :rtype: str</span>
821 <span class="sd">        &quot;&quot;&quot;</span>
822         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">silent</span><span class="p">:</span>
823             <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Create environment file </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span> 
824                               <span class="n">src</span><span class="o">.</span><span class="n">printcolors</span><span class="o">.</span><span class="n">printcLabel</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span> <span class="mi">3</span><span class="p">)</span>
825
826         <span class="c"># create then env object</span>
827         <span class="n">env_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">out_dir</span><span class="p">,</span> <span class="n">filename</span><span class="p">),</span> <span class="s">&quot;w&quot;</span><span class="p">)</span>
828         <span class="n">tmp</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">fileEnviron</span><span class="o">.</span><span class="n">get_file_environ</span><span class="p">(</span><span class="n">env_file</span><span class="p">,</span>
829                                                <span class="n">shell</span><span class="p">,</span>
830                                                <span class="p">{})</span>
831         <span class="n">env</span> <span class="o">=</span> <span class="n">SalomeEnviron</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="n">tmp</span><span class="p">,</span> <span class="n">forBuild</span><span class="p">,</span> <span class="n">for_package</span><span class="o">=</span><span class="n">for_package</span><span class="p">)</span>
832         <span class="n">env</span><span class="o">.</span><span class="n">silent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">silent</span>
833
834         <span class="c"># Set the environment</span>
835         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">env_info</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
836             <span class="n">env</span><span class="o">.</span><span class="n">set_full_environ</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">env_info</span><span class="p">)</span>
837         <span class="k">else</span><span class="p">:</span>
838             <span class="c"># set env from the APPLICATION</span>
839             <span class="n">env</span><span class="o">.</span><span class="n">set_application_env</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="p">)</span>
840             
841             <span class="c"># The list of products to launch</span>
842             <span class="n">lProductsName</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="n">get_names</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">products</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
843             <span class="n">env</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> <span class="s">&quot;SALOME_MODULES&quot;</span><span class="p">,</span>    <span class="s">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lProductsName</span><span class="p">))</span>
844             
845             <span class="c"># set the products</span>
846             <span class="n">env</span><span class="o">.</span><span class="n">set_products</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="p">,</span>
847                             <span class="n">src_root</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">src_root</span><span class="p">)</span>
848
849         <span class="c"># add cleanup and close</span>
850         <span class="n">env</span><span class="o">.</span><span class="n">finish</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
851         <span class="n">env_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
852
853         <span class="k">return</span> <span class="n">env_file</span><span class="o">.</span><span class="n">name</span>
854    </div>
855 <div class="viewcode-block" id="FileEnvWriter.write_cfgForPy_file"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.FileEnvWriter.write_cfgForPy_file">[docs]</a>    <span class="k">def</span> <span class="nf">write_cfgForPy_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
856                             <span class="n">filename</span><span class="p">,</span>
857                             <span class="n">additional_env</span> <span class="o">=</span> <span class="p">{},</span>
858                             <span class="n">for_package</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span>
859                             <span class="n">with_commercial</span> <span class="o">=</span> <span class="bp">True</span><span class="p">):</span>
860         <span class="sd">&quot;&quot;&quot;\</span>
861 <span class="sd">        Append to current opened aFile a cfgForPy </span>
862 <span class="sd">        environment (SALOME python launcher).</span>
863 <span class="sd">           </span>
864 <span class="sd">        :param filename str: the file path</span>
865 <span class="sd">        :param additional_env dict: a dictionary of additional variables </span>
866 <span class="sd">                                    to add to the environment</span>
867 <span class="sd">        :param for_package str: If not None, produce a relative environment </span>
868 <span class="sd">                                designed for a package. </span>
869 <span class="sd">        &quot;&quot;&quot;</span>
870         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">silent</span><span class="p">:</span>
871             <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Create configuration file </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span> 
872                               <span class="n">src</span><span class="o">.</span><span class="n">printcolors</span><span class="o">.</span><span class="n">printcLabel</span><span class="p">(</span><span class="n">filename</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="mi">3</span><span class="p">)</span>
873
874         <span class="c"># create then env object</span>
875         <span class="n">tmp</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">fileEnviron</span><span class="o">.</span><span class="n">get_file_environ</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> 
876                                                <span class="s">&quot;cfgForPy&quot;</span><span class="p">,</span> 
877                                                <span class="p">{})</span>
878         <span class="c"># environment for launch</span>
879         <span class="n">env</span> <span class="o">=</span> <span class="n">SalomeEnviron</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
880                             <span class="n">tmp</span><span class="p">,</span>
881                             <span class="n">forBuild</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
882                             <span class="n">for_package</span><span class="o">=</span><span class="n">for_package</span><span class="p">,</span>
883                             <span class="n">enable_simple_env_script</span> <span class="o">=</span> <span class="n">with_commercial</span><span class="p">)</span>
884         <span class="n">env</span><span class="o">.</span><span class="n">silent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">silent</span>
885
886         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">env_info</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
887             <span class="n">env</span><span class="o">.</span><span class="n">set_full_environ</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">env_info</span><span class="p">)</span>
888         <span class="k">else</span><span class="p">:</span>
889             <span class="c"># set env from PRODUCT</span>
890             <span class="n">env</span><span class="o">.</span><span class="n">set_application_env</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="p">)</span>
891
892             <span class="c"># The list of products to launch</span>
893             <span class="n">lProductsName</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="n">get_names</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">products</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
894             <span class="n">env</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> <span class="s">&quot;SALOME_MODULES&quot;</span><span class="p">,</span>    <span class="s">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lProductsName</span><span class="p">))</span>
895
896             <span class="c"># set the products</span>
897             <span class="n">env</span><span class="o">.</span><span class="n">set_products</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="p">,</span>
898                             <span class="n">src_root</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">src_root</span><span class="p">)</span>
899
900         <span class="c"># Add the additional environment if it is not empty</span>
901         <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">additional_env</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
902             <span class="k">for</span> <span class="n">variable</span> <span class="ow">in</span> <span class="n">additional_env</span><span class="p">:</span>
903                 <span class="n">env</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">variable</span><span class="p">,</span> <span class="n">additional_env</span><span class="p">[</span><span class="n">variable</span><span class="p">])</span>
904
905         <span class="c"># add cleanup and close</span>
906         <span class="n">env</span><span class="o">.</span><span class="n">finish</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
907 </div></div>
908 <div class="viewcode-block" id="Shell"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.Shell">[docs]</a><span class="k">class</span> <span class="nc">Shell</span><span class="p">:</span>
909     <span class="sd">&quot;&quot;&quot;\</span>
910 <span class="sd">    Definition of a Shell.</span>
911 <span class="sd">    &quot;&quot;&quot;</span>
912     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">extension</span><span class="p">):</span>
913         <span class="sd">&quot;&quot;&quot;\</span>
914 <span class="sd">        Initialization.</span>
915
916 <span class="sd">        :param name str: the shell name</span>
917 <span class="sd">        :param extension str: the shell extension</span>
918 <span class="sd">        &quot;&quot;&quot;</span>
919         <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
920         <span class="bp">self</span><span class="o">.</span><span class="n">extension</span> <span class="o">=</span> <span class="n">extension</span>
921 </div>
922 <div class="viewcode-block" id="load_environment"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.environment.load_environment">[docs]</a><span class="k">def</span> <span class="nf">load_environment</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="n">build</span><span class="p">,</span> <span class="n">logger</span><span class="p">):</span>
923     <span class="sd">&quot;&quot;&quot;\</span>
924 <span class="sd">    Loads the environment (used to run the tests, for example).</span>
925 <span class="sd">    </span>
926 <span class="sd">    :param config Config: the global config</span>
927 <span class="sd">    :param build bool: build environement if True</span>
928 <span class="sd">    :param logger Logger: The logger instance to display messages</span>
929 <span class="sd">    &quot;&quot;&quot;</span>
930     <span class="n">environ</span> <span class="o">=</span> <span class="n">SalomeEnviron</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="n">Environ</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">),</span> <span class="n">build</span><span class="p">)</span>
931     <span class="n">environ</span><span class="o">.</span><span class="n">set_application_env</span><span class="p">(</span><span class="n">logger</span><span class="p">)</span>
932     <span class="n">environ</span><span class="o">.</span><span class="n">set_products</span><span class="p">(</span><span class="n">logger</span><span class="p">)</span>
933     <span class="n">environ</span><span class="o">.</span><span class="n">finish</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span></div>
934 </pre></div>
935
936           </div>
937         </div>
938       </div>
939       <div class="sphinxsidebar">
940         <div class="sphinxsidebarwrapper">
941             <p class="logo"><a href="../../index.html">
942               <img class="logo" src="../../_static/sat_v5.0.png" alt="Logo"/>
943             </a></p><div class="relations">
944 <h3>Related Topics</h3>
945 <ul>
946   <li><a href="../../index.html">Documentation overview</a><ul>
947   <li><a href="../index.html">Module code</a><ul>
948   </ul></li>
949   </ul></li>
950 </ul>
951 </div>
952 <div id="searchbox" style="display: none">
953   <h3>Quick search</h3>
954     <form class="search" action="../../search.html" method="get">
955       <input type="text" name="q" />
956       <input type="submit" value="Go" />
957       <input type="hidden" name="check_keywords" value="yes" />
958       <input type="hidden" name="area" value="default" />
959     </form>
960     <p class="searchtip" style="font-size: 90%">
961     Enter search terms or a module, class or function name.
962     </p>
963 </div>
964 <script type="text/javascript">$('#searchbox').show(0);</script>
965         </div>
966       </div>
967       <div class="clearer"></div>
968     </div>
969     <div class="footer">
970       &copy;2018, CEA.
971       
972       |
973       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.1.3</a>
974       &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster </a>
975       
976     </div>
977
978     
979
980     
981   </body>
982 </html>