Salome HOME
add doc/build for EZ direct html or pdf
[tools/sat.git] / doc / build / html / _modules / src / compilation.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.compilation &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.compilation</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">sys</span>
68 <span class="kn">import</span> <span class="nn">shutil</span>
69
70 <span class="kn">import</span> <span class="nn">src</span>
71
72 <span class="n">C_COMPILE_ENV_LIST</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;CC&quot;</span><span class="p">,</span>
73                       <span class="s">&quot;CXX&quot;</span><span class="p">,</span>
74                       <span class="s">&quot;F77&quot;</span><span class="p">,</span>
75                       <span class="s">&quot;CFLAGS&quot;</span><span class="p">,</span>
76                       <span class="s">&quot;CXXFLAGS&quot;</span><span class="p">,</span>
77                       <span class="s">&quot;LIBS&quot;</span><span class="p">,</span>
78                       <span class="s">&quot;LDFLAGS&quot;</span><span class="p">]</span>
79
80 <div class="viewcode-block" id="Builder"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder">[docs]</a><span class="k">class</span> <span class="nc">Builder</span><span class="p">:</span>
81     <span class="sd">&quot;&quot;&quot;Class to handle all construction steps, like cmake, configure, make, ...</span>
82 <span class="sd">    &quot;&quot;&quot;</span>
83     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
84                  <span class="n">config</span><span class="p">,</span>
85                  <span class="n">logger</span><span class="p">,</span>
86                  <span class="n">product_info</span><span class="p">,</span>
87                  <span class="n">options</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">OptResult</span><span class="p">(),</span>
88                  <span class="n">check_src</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
89         <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">config</span>
90         <span class="bp">self</span><span class="o">.</span><span class="n">logger</span> <span class="o">=</span> <span class="n">logger</span>
91         <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="n">options</span>
92         <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span> <span class="o">=</span> <span class="n">product_info</span>
93         <span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">build_dir</span><span class="p">)</span>
94         <span class="bp">self</span><span class="o">.</span><span class="n">source_dir</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">source_dir</span><span class="p">)</span>
95         <span class="bp">self</span><span class="o">.</span><span class="n">install_dir</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">install_dir</span><span class="p">)</span>
96         <span class="bp">self</span><span class="o">.</span><span class="n">header</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
97         <span class="bp">self</span><span class="o">.</span><span class="n">debug_mode</span> <span class="o">=</span> <span class="bp">False</span>
98         <span class="k">if</span> <span class="s">&quot;debug&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">debug</span> <span class="o">==</span> <span class="s">&quot;yes&quot;</span><span class="p">:</span>
99             <span class="bp">self</span><span class="o">.</span><span class="n">debug_mode</span> <span class="o">=</span> <span class="bp">True</span>
100
101     <span class="c">##</span>
102     <span class="c"># Shortcut method to log in log file.</span>
103 <div class="viewcode-block" id="Builder.log"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.log">[docs]</a>    <span class="k">def</span> <span class="nf">log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">showInfo</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
104         <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">text</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">showInfo</span><span class="p">)</span>
105         <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">src</span><span class="o">.</span><span class="n">printcolors</span><span class="o">.</span><span class="n">cleancolor</span><span class="p">(</span><span class="n">text</span><span class="p">))</span>
106         <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
107
108     <span class="c">##</span>
109     <span class="c"># Shortcut method to log a command.</span></div>
110 <div class="viewcode-block" id="Builder.log_command"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.log_command">[docs]</a>    <span class="k">def</span> <span class="nf">log_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">command</span><span class="p">):</span>
111         <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&quot;&gt; </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">command</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
112
113     <span class="c">##</span>
114     <span class="c"># Prepares the environment.</span>
115     <span class="c"># Build two environment: one for building and one for testing (launch).</span></div>
116 <div class="viewcode-block" id="Builder.prepare"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.prepare">[docs]</a>    <span class="k">def</span> <span class="nf">prepare</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
117
118         <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
119             <span class="c"># create build dir</span>
120             <span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="o">.</span><span class="n">make</span><span class="p">()</span>
121
122         <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;  build_dir   = </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span> <span class="mi">4</span><span class="p">)</span>
123         <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;  install_dir = </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">install_dir</span><span class="p">),</span> <span class="mi">4</span><span class="p">)</span>
124         <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
125
126         <span class="c"># add products in depend and opt_depend list recursively</span>
127         <span class="n">environ_info</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_dependencies</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
128                                                             <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="p">)</span>
129         <span class="c">#environ_info.append(self.product_info.name)</span>
130
131         <span class="c"># create build environment</span>
132         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">environment</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>
133                                       <span class="n">src</span><span class="o">.</span><span class="n">environment</span><span class="o">.</span><span class="n">Environ</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">)),</span>
134                                       <span class="bp">True</span><span class="p">)</span>
135         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">silent</span> <span class="o">=</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">USER</span><span class="o">.</span><span class="n">output_verbose_level</span> <span class="o">&lt;</span> <span class="mi">5</span><span class="p">)</span>
136         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</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="n">environ_info</span><span class="p">)</span>
137         
138         <span class="c"># create runtime environment</span>
139         <span class="bp">self</span><span class="o">.</span><span class="n">launch_environ</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">environment</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>
140                                       <span class="n">src</span><span class="o">.</span><span class="n">environment</span><span class="o">.</span><span class="n">Environ</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">)),</span>
141                                       <span class="bp">False</span><span class="p">)</span>
142         <span class="bp">self</span><span class="o">.</span><span class="n">launch_environ</span><span class="o">.</span><span class="n">silent</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># no need to show here</span>
143         <span class="bp">self</span><span class="o">.</span><span class="n">launch_environ</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="n">environ_info</span><span class="p">)</span>
144
145         <span class="k">for</span> <span class="n">ee</span> <span class="ow">in</span> <span class="n">C_COMPILE_ENV_LIST</span><span class="p">:</span>
146             <span class="n">vv</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">ee</span><span class="p">)</span>
147             <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">vv</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
148                 <span class="bp">self</span><span class="o">.</span><span class="n">log</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">ee</span><span class="p">,</span> <span class="n">vv</span><span class="p">),</span> <span class="mi">4</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
149
150         <span class="k">return</span> <span class="mi">0</span>
151
152     <span class="c">##</span>
153     <span class="c"># Runs cmake with the given options.</span></div>
154 <div class="viewcode-block" id="Builder.cmake"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.cmake">[docs]</a>    <span class="k">def</span> <span class="nf">cmake</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">):</span>
155
156         <span class="n">cmake_option</span> <span class="o">=</span> <span class="n">options</span>
157         <span class="c"># cmake_option +=&#39; -DCMAKE_VERBOSE_MAKEFILE=ON -DSALOME_CMAKE_DEBUG=ON&#39;</span>
158         <span class="k">if</span> <span class="s">&#39;cmake_options&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="p">:</span>
159             <span class="n">cmake_option</span> <span class="o">+=</span> <span class="s">&quot; </span><span class="si">%s</span><span class="s"> &quot;</span> <span class="o">%</span> <span class="s">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
160                                         <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">cmake_options</span><span class="o">.</span><span class="n">split</span><span class="p">())</span>
161
162         <span class="c"># add debug option</span>
163         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">debug_mode</span><span class="p">:</span>
164             <span class="n">cmake_option</span> <span class="o">+=</span> <span class="s">&quot; -DCMAKE_BUILD_TYPE=Debug&quot;</span>
165         <span class="k">else</span> <span class="p">:</span>
166             <span class="n">cmake_option</span> <span class="o">+=</span> <span class="s">&quot; -DCMAKE_BUILD_TYPE=Release&quot;</span>
167         
168         <span class="c"># In case CMAKE_GENERATOR is defined in environment, </span>
169         <span class="c"># use it in spite of automatically detect it</span>
170         <span class="k">if</span> <span class="s">&#39;cmake_generator&#39;</span> <span class="ow">in</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="p">:</span>
171             <span class="n">cmake_option</span> <span class="o">+=</span> <span class="s">&quot; -DCMAKE_GENERATOR=</span><span class="si">%s</span><span class="s">&quot;</span> \
172                                        <span class="o">%</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">cmake_generator</span>
173         
174         <span class="n">command</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;cmake </span><span class="si">%s</span><span class="s"> -DCMAKE_INSTALL_PREFIX=</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span>
175                             <span class="p">(</span><span class="n">cmake_option</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_dir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">source_dir</span><span class="p">))</span>
176
177         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
178         <span class="c"># for key in sorted(self.build_environ.environ.environ.keys()):</span>
179             <span class="c"># print key, &quot;  &quot;, self.build_environ.environ.environ[key]</span>
180         <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">command</span><span class="p">,</span>
181                               <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
182                               <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
183                               <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
184                               <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
185                               <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
186
187         <span class="bp">self</span><span class="o">.</span><span class="n">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="s">&quot;cmake&quot;</span><span class="p">)</span>
188         <span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
189             <span class="k">return</span> <span class="n">res</span>
190         <span class="k">else</span><span class="p">:</span>
191             <span class="k">return</span> <span class="mi">1</span>
192
193     <span class="c">##</span>
194     <span class="c"># Runs build_configure with the given options.</span></div>
195 <div class="viewcode-block" id="Builder.build_configure"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.build_configure">[docs]</a>    <span class="k">def</span> <span class="nf">build_configure</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">):</span>
196
197         <span class="k">if</span> <span class="s">&#39;buildconfigure_options&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="p">:</span>
198             <span class="n">options</span> <span class="o">+=</span> <span class="s">&quot; </span><span class="si">%s</span><span class="s"> &quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">buildconfigure_options</span>
199
200         <span class="n">command</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s">/build_configure&#39;</span><span class="p">)</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">source_dir</span><span class="p">)</span>
201         <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; &quot;</span> <span class="o">+</span> <span class="n">options</span>
202         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
203
204         <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">command</span><span class="p">,</span>
205                               <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
206                               <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
207                               <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
208                               <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
209                               <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
210         <span class="bp">self</span><span class="o">.</span><span class="n">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="s">&quot;build_configure&quot;</span><span class="p">)</span>
211         <span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
212             <span class="k">return</span> <span class="n">res</span>
213         <span class="k">else</span><span class="p">:</span>
214             <span class="k">return</span> <span class="mi">1</span>
215
216     <span class="c">##</span>
217     <span class="c"># Runs configure with the given options.</span></div>
218 <div class="viewcode-block" id="Builder.configure"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.configure">[docs]</a>    <span class="k">def</span> <span class="nf">configure</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">):</span>
219
220         <span class="k">if</span> <span class="s">&#39;configure_options&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="p">:</span>
221             <span class="n">options</span> <span class="o">+=</span> <span class="s">&quot; </span><span class="si">%s</span><span class="s"> &quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">configure_options</span>
222
223         <span class="n">command</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">/configure --prefix=</span><span class="si">%s</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">source_dir</span><span class="p">,</span>
224                                                 <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">install_dir</span><span class="p">))</span>
225
226         <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; &quot;</span> <span class="o">+</span> <span class="n">options</span>
227         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
228
229         <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">command</span><span class="p">,</span>
230                               <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
231                               <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
232                               <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
233                               <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
234                               <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
235         
236         <span class="bp">self</span><span class="o">.</span><span class="n">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="s">&quot;configure&quot;</span><span class="p">)</span>
237         <span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
238             <span class="k">return</span> <span class="n">res</span>
239         <span class="k">else</span><span class="p">:</span>
240             <span class="k">return</span> <span class="mi">1</span>
241 </div>
242 <div class="viewcode-block" id="Builder.hack_libtool"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.hack_libtool">[docs]</a>    <span class="k">def</span> <span class="nf">hack_libtool</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
243         <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="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span> <span class="o">+</span> <span class="s">&#39;libtool&#39;</span><span class="p">)):</span>
244             <span class="k">return</span>
245
246         <span class="n">lf</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="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span> <span class="s">&quot;libtool&quot;</span><span class="p">),</span> <span class="s">&#39;r&#39;</span><span class="p">)</span>
247         <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lf</span><span class="o">.</span><span class="n">readlines</span><span class="p">():</span>
248             <span class="k">if</span> <span class="s">&#39;hack_libtool&#39;</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
249                 <span class="k">return</span>
250
251         <span class="c"># fix libtool by replacing CC=&quot;&lt;compil&gt;&quot; with hack_libtool function</span>
252         <span class="n">hack_command</span><span class="o">=</span><span class="s">&#39;&#39;&#39;sed -i &quot;s%^CC=</span><span class="se">\\</span><span class="s">&quot;\(.*\)</span><span class="se">\\</span><span class="s">&quot;%hack_libtool() { </span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
253 <span class="s">if test </span><span class="se">\\</span><span class="s">&quot;\$(echo \$@ | grep -E &#39;</span><span class="se">\\\\\\</span><span class="s">-L/usr/lib(/../lib)?(64)? &#39;)</span><span class="se">\\</span><span class="s">&quot; == </span><span class="se">\\\&quot;\\\&quot;</span><span class="s"> </span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
254 <span class="s">  then</span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
255 <span class="s">    cmd=</span><span class="se">\\</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">1 \$@</span><span class="se">\\</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
256 <span class="s">  else</span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
257 <span class="s">    cmd=</span><span class="se">\\</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">1 </span><span class="se">\\</span><span class="s">&quot;\`echo \$@ | sed -r -e &#39;s|(.*)-L/usr/lib(/../lib)?(64)? (.*)|</span><span class="se">\\\\\\</span><span class="s">1</span><span class="se">\\\\\\</span><span class="s">4 -L/usr/lib</span><span class="se">\\\\\\</span><span class="s">3|g&#39;\`</span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
258 <span class="s">  fi</span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
259 <span class="s">  \$cmd</span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
260 <span class="s">}</span><span class="se">\\</span><span class="s">n</span><span class="se">\\</span><span class="s"></span>
261 <span class="s">CC=</span><span class="se">\\</span><span class="s">&quot;hack_libtool</span><span class="se">\\</span><span class="s">&quot;</span><span class="si">%g</span><span class="s">&quot; libtool&#39;&#39;&#39;</span>
262
263         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="n">hack_command</span><span class="p">)</span>
264         <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">hack_command</span><span class="p">,</span>
265                         <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
266                         <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
267                         <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
268                         <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
269                         <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
270
271
272     <span class="c">##</span>
273     <span class="c"># Runs make to build the module.</span></div>
274 <div class="viewcode-block" id="Builder.make"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.make">[docs]</a>    <span class="k">def</span> <span class="nf">make</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nb_proc</span><span class="p">,</span> <span class="n">make_opt</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">):</span>
275
276         <span class="c"># make</span>
277         <span class="n">command</span> <span class="o">=</span> <span class="s">&#39;make&#39;</span>
278         <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; -j&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nb_proc</span><span class="p">)</span>
279         <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; &quot;</span> <span class="o">+</span> <span class="n">make_opt</span>
280         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
281         <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">command</span><span class="p">,</span>
282                               <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
283                               <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
284                               <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
285                               <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
286                               <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
287         <span class="bp">self</span><span class="o">.</span><span class="n">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="s">&quot;make&quot;</span><span class="p">)</span>
288         <span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
289             <span class="k">return</span> <span class="n">res</span>
290         <span class="k">else</span><span class="p">:</span>
291             <span class="k">return</span> <span class="mi">1</span>
292     
293     <span class="c">##</span>
294     <span class="c"># Runs msbuild to build the module.</span></div>
295 <div class="viewcode-block" id="Builder.wmake"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.wmake">[docs]</a>    <span class="k">def</span> <span class="nf">wmake</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">nb_proc</span><span class="p">,</span> <span class="n">opt_nb_proc</span> <span class="o">=</span> <span class="bp">None</span><span class="p">):</span>
296
297         <span class="n">hh</span> <span class="o">=</span> <span class="s">&#39;MSBUILD /m:</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">nb_proc</span><span class="p">)</span>
298         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">debug_mode</span><span class="p">:</span>
299             <span class="n">hh</span> <span class="o">+=</span> <span class="s">&quot; &quot;</span> <span class="o">+</span> <span class="n">src</span><span class="o">.</span><span class="n">printcolors</span><span class="o">.</span><span class="n">printcWarning</span><span class="p">(</span><span class="s">&quot;DEBUG&quot;</span><span class="p">)</span>
300         <span class="c"># make</span>
301         <span class="n">command</span> <span class="o">=</span> <span class="s">&#39;msbuild&#39;</span>
302         <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; /maxcpucount:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nb_proc</span><span class="p">)</span>
303         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">debug_mode</span><span class="p">:</span>
304             <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; /p:Configuration=Debug&quot;</span>
305         <span class="k">else</span><span class="p">:</span>
306             <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; /p:Configuration=Release&quot;</span>
307         <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; ALL_BUILD.vcxproj&quot;</span>
308
309         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
310         <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">command</span><span class="p">,</span>
311                               <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
312                               <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
313                               <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
314                               <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
315                               <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
316         
317         <span class="bp">self</span><span class="o">.</span><span class="n">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="s">&quot;make&quot;</span><span class="p">)</span>
318         <span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
319             <span class="k">return</span> <span class="n">res</span>
320         <span class="k">else</span><span class="p">:</span>
321             <span class="k">return</span> <span class="mi">1</span>
322
323     <span class="c">##</span>
324     <span class="c"># Runs &#39;make install&#39;.</span></div>
325 <div class="viewcode-block" id="Builder.install"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.install">[docs]</a>    <span class="k">def</span> <span class="nf">install</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
326         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">dist_name</span><span class="o">==</span><span class="s">&quot;Win&quot;</span><span class="p">:</span>
327             <span class="n">command</span> <span class="o">=</span> <span class="s">&#39;msbuild INSTALL.vcxproj&#39;</span>
328             <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">debug_mode</span><span class="p">:</span>
329                 <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; /p:Configuration=Debug&quot;</span>
330             <span class="k">else</span><span class="p">:</span>
331                 <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">&quot; /p:Configuration=Release&quot;</span>
332         <span class="k">else</span> <span class="p">:</span>
333             <span class="n">command</span> <span class="o">=</span> <span class="s">&#39;make install&#39;</span>
334
335         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
336
337         <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">command</span><span class="p">,</span>
338                               <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
339                               <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
340                               <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
341                               <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
342                               <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
343         
344         <span class="bp">self</span><span class="o">.</span><span class="n">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="s">&quot;makeinstall&quot;</span><span class="p">)</span>
345         <span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
346             <span class="k">return</span> <span class="n">res</span>
347         <span class="k">else</span><span class="p">:</span>
348             <span class="k">return</span> <span class="mi">1</span>
349
350     <span class="c">##</span>
351     <span class="c"># Runs &#39;make_check&#39;.</span></div>
352 <div class="viewcode-block" id="Builder.check"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.check">[docs]</a>    <span class="k">def</span> <span class="nf">check</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">):</span>
353         <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>
354             <span class="n">cmd</span> <span class="o">=</span> <span class="s">&#39;msbuild RUN_TESTS.vcxproj&#39;</span>
355         <span class="k">else</span> <span class="p">:</span>
356             <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">build_source</span><span class="o">==</span><span class="s">&quot;autotools&quot;</span> <span class="p">:</span>
357                 <span class="n">cmd</span> <span class="o">=</span> <span class="s">&#39;make check&#39;</span>
358             <span class="k">else</span><span class="p">:</span>
359                 <span class="n">cmd</span> <span class="o">=</span> <span class="s">&#39;make test&#39;</span>
360         
361         <span class="k">if</span> <span class="n">command</span><span class="p">:</span>
362             <span class="n">cmd</span> <span class="o">=</span> <span class="n">command</span>
363         
364         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span>
365
366         <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span>
367                               <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
368                               <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
369                               <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">launch_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">,</span>
370                               <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
371                               <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
372
373         <span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
374             <span class="k">return</span> <span class="n">res</span>
375         <span class="k">else</span><span class="p">:</span>
376             <span class="k">return</span> <span class="mi">1</span>
377       
378     <span class="c">##</span>
379     <span class="c"># Performs a default build for this module.</span></div>
380 <div class="viewcode-block" id="Builder.do_default_build"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.do_default_build">[docs]</a>    <span class="k">def</span> <span class="nf">do_default_build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
381                          <span class="n">build_conf_options</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">,</span>
382                          <span class="n">configure_options</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">,</span>
383                          <span class="n">show_warning</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
384         <span class="n">use_autotools</span> <span class="o">=</span> <span class="bp">False</span>
385         <span class="k">if</span> <span class="s">&#39;use_autotools&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="p">:</span>
386             <span class="n">uc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">use_autotools</span>
387             <span class="k">if</span> <span class="n">uc</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;always&#39;</span><span class="p">,</span> <span class="s">&#39;yes&#39;</span><span class="p">]:</span> 
388                 <span class="n">use_autotools</span> <span class="o">=</span> <span class="bp">True</span>
389             <span class="k">elif</span> <span class="n">uc</span> <span class="o">==</span> <span class="s">&#39;option&#39;</span><span class="p">:</span> 
390                 <span class="n">use_autotools</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">autotools</span>
391
392
393         <span class="bp">self</span><span class="o">.</span><span class="n">use_autotools</span> <span class="o">=</span> <span class="n">use_autotools</span>
394
395         <span class="n">use_ctest</span> <span class="o">=</span> <span class="bp">False</span>
396         <span class="k">if</span> <span class="s">&#39;use_ctest&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="p">:</span>
397             <span class="n">uc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">use_ctest</span>
398             <span class="k">if</span> <span class="n">uc</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;always&#39;</span><span class="p">,</span> <span class="s">&#39;yes&#39;</span><span class="p">]:</span> 
399                 <span class="n">use_ctest</span> <span class="o">=</span> <span class="bp">True</span>
400             <span class="k">elif</span> <span class="n">uc</span> <span class="o">==</span> <span class="s">&#39;option&#39;</span><span class="p">:</span> 
401                 <span class="n">use_ctest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">ctest</span>
402
403         <span class="bp">self</span><span class="o">.</span><span class="n">use_ctest</span> <span class="o">=</span> <span class="n">use_ctest</span>
404
405         <span class="k">if</span> <span class="n">show_warning</span><span class="p">:</span>
406             <span class="n">cmd</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
407             <span class="k">if</span> <span class="n">use_autotools</span><span class="p">:</span> <span class="n">cmd</span> <span class="o">=</span> <span class="s">&quot;(autotools)&quot;</span>
408             <span class="k">if</span> <span class="n">use_ctest</span><span class="p">:</span> <span class="n">cmd</span> <span class="o">=</span> <span class="s">&quot;(ctest)&quot;</span>
409             
410             <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
411             <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%(module)s</span><span class="s">: Run default compilation method </span><span class="si">%(cmd)s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> \
412                 <span class="p">{</span> <span class="s">&quot;module&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="p">,</span> <span class="s">&quot;cmd&quot;</span><span class="p">:</span> <span class="n">cmd</span> <span class="p">},</span> <span class="mi">4</span><span class="p">)</span>
413
414         <span class="k">if</span> <span class="n">use_autotools</span><span class="p">:</span>
415             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepare</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
416             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">build_configure</span><span class="p">(</span>
417                                    <span class="n">build_conf_options</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
418             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">configure</span><span class="p">(</span><span class="n">configure_options</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
419             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">make</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</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">install</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
421             <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">clean</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
422            
423         <span class="k">else</span><span class="p">:</span> <span class="c"># CMake</span>
424             <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">dist_name</span><span class="o">==</span><span class="s">&#39;Win&#39;</span><span class="p">:</span>
425                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">wprepare</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
426                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmake</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
427                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">wmake</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
428                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">install</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
429                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">clean</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
430             <span class="k">else</span> <span class="p">:</span>
431                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepare</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
432                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmake</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
433                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">make</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
434                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">install</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
435                 <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">clean</span><span class="p">():</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
436
437         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_result</span><span class="p">()</span>
438
439     <span class="c">##</span>
440     <span class="c"># Performs a build with a script.</span></div>
441 <div class="viewcode-block" id="Builder.do_python_script_build"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.do_python_script_build">[docs]</a>    <span class="k">def</span> <span class="nf">do_python_script_build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">script</span><span class="p">,</span> <span class="n">nb_proc</span><span class="p">):</span>
442         <span class="c"># script found</span>
443         <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;Compile </span><span class="si">%(product)s</span><span class="s"> using script </span><span class="si">%(script)s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">%</span> \
444             <span class="p">{</span> <span class="s">&#39;product&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
445              <span class="s">&#39;script&#39;</span><span class="p">:</span> <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">script</span><span class="p">)</span> <span class="p">},</span> <span class="mi">4</span><span class="p">)</span>
446         <span class="k">try</span><span class="p">:</span>
447             <span class="kn">import</span> <span class="nn">imp</span>
448             <span class="n">product</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">name</span>
449             <span class="n">pymodule</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</span> <span class="o">+</span> <span class="s">&quot;_compile_script&quot;</span><span class="p">,</span> <span class="n">script</span><span class="p">)</span>
450             <span class="bp">self</span><span class="o">.</span><span class="n">nb_proc</span> <span class="o">=</span> <span class="n">nb_proc</span>
451             <span class="n">retcode</span> <span class="o">=</span> <span class="n">pymodule</span><span class="o">.</span><span class="n">compil</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="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="p">)</span>
452         <span class="k">except</span><span class="p">:</span>
453             <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>
454             <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="nb">str</span><span class="p">(</span><span class="n">exceptionValue</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
455             <span class="kn">import</span> <span class="nn">traceback</span>
456             <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>
457             <span class="n">traceback</span><span class="o">.</span><span class="n">print_exc</span><span class="p">()</span>
458             <span class="n">retcode</span> <span class="o">=</span> <span class="mi">1</span>
459         <span class="k">finally</span><span class="p">:</span>
460             <span class="bp">self</span><span class="o">.</span><span class="n">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="s">&quot;script&quot;</span><span class="p">)</span>
461
462         <span class="k">return</span> <span class="n">retcode</span>
463 </div>
464 <div class="viewcode-block" id="Builder.complete_environment"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.complete_environment">[docs]</a>    <span class="k">def</span> <span class="nf">complete_environment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">make_options</span><span class="p">):</span>
465         <span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span>
466         <span class="c"># pass additional variables to environment </span>
467         <span class="c"># (may be used by the build script)</span>
468         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;SOURCE_DIR&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">source_dir</span><span class="p">))</span>
469         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;INSTALL_DIR&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">install_dir</span><span class="p">))</span>
470         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;PRODUCT_INSTALL&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">install_dir</span><span class="p">))</span>
471         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;BUILD_DIR&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">))</span>
472         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;PRODUCT_BUILD&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">))</span>
473         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;MAKE_OPTIONS&quot;</span><span class="p">,</span> <span class="n">make_options</span><span class="p">)</span>
474         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;DIST_NAME&quot;</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">VARS</span><span class="o">.</span><span class="n">dist_name</span><span class="p">)</span>
475         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;DIST_VERSION&quot;</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">VARS</span><span class="o">.</span><span class="n">dist_version</span><span class="p">)</span>
476         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;DIST&quot;</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">VARS</span><span class="o">.</span><span class="n">dist</span><span class="p">)</span>
477         <span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;VERSION&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
478 </div>
479 <div class="viewcode-block" id="Builder.do_batch_script_build"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.do_batch_script_build">[docs]</a>    <span class="k">def</span> <span class="nf">do_batch_script_build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">script</span><span class="p">,</span> <span class="n">nb_proc</span><span class="p">):</span>
480
481         <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>
482             <span class="n">make_options</span> <span class="o">=</span> <span class="s">&quot;/maxcpucount:</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">nb_proc</span>
483         <span class="k">else</span> <span class="p">:</span>
484             <span class="n">make_options</span> <span class="o">=</span> <span class="s">&quot;-j</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">nb_proc</span>
485
486         <span class="bp">self</span><span class="o">.</span><span class="n">log_command</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;Run build script </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">script</span><span class="p">)</span>
487         <span class="bp">self</span><span class="o">.</span><span class="n">complete_environment</span><span class="p">(</span><span class="n">make_options</span><span class="p">)</span>
488         
489         <span class="n">res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">script</span><span class="p">,</span> 
490                               <span class="n">shell</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
491                               <span class="n">stdout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="p">,</span>
492                               <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span>
493                               <span class="n">cwd</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">build_dir</span><span class="p">),</span>
494                               <span class="n">env</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">build_environ</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">environ</span><span class="p">)</span>
495
496         <span class="bp">self</span><span class="o">.</span><span class="n">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="s">&quot;script&quot;</span><span class="p">)</span>
497         <span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
498             <span class="k">return</span> <span class="n">res</span>
499         <span class="k">else</span><span class="p">:</span>
500             <span class="k">return</span> <span class="mi">1</span>
501     </div>
502 <div class="viewcode-block" id="Builder.do_script_build"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.do_script_build">[docs]</a>    <span class="k">def</span> <span class="nf">do_script_build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">script</span><span class="p">,</span> <span class="n">number_of_proc</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
503         <span class="c"># define make options (may not be used by the script)</span>
504         <span class="k">if</span> <span class="n">number_of_proc</span><span class="o">==</span><span class="mi">0</span><span class="p">:</span>
505             <span class="n">nb_proc</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">get_cfg_param</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="p">,</span><span class="s">&quot;nb_proc&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
506             <span class="k">if</span> <span class="n">nb_proc</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 
507                 <span class="n">nb_proc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">nb_proc</span>
508         <span class="k">else</span><span class="p">:</span>
509             <span class="n">nb_proc</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">number_of_proc</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">VARS</span><span class="o">.</span><span class="n">nb_proc</span><span class="p">)</span>
510             
511         <span class="n">extension</span> <span class="o">=</span> <span class="n">script</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;.&#39;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
512         <span class="k">if</span> <span class="n">extension</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&quot;bat&quot;</span><span class="p">,</span><span class="s">&quot;sh&quot;</span><span class="p">]:</span>
513             <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_batch_script_build</span><span class="p">(</span><span class="n">script</span><span class="p">,</span> <span class="n">nb_proc</span><span class="p">)</span>
514         <span class="k">if</span> <span class="n">extension</span> <span class="o">==</span> <span class="s">&quot;py&quot;</span><span class="p">:</span>
515             <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_python_script_build</span><span class="p">(</span><span class="n">script</span><span class="p">,</span> <span class="n">nb_proc</span><span class="p">)</span>
516         
517         <span class="n">msg</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s">&quot;The script </span><span class="si">%s</span><span class="s"> must have .sh, .bat or .py extension.&quot;</span> <span class="o">%</span> <span class="n">script</span><span class="p">)</span>
518         <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">msg</span><span class="p">)</span>
519     </div>
520 <div class="viewcode-block" id="Builder.put_txt_log_in_appli_log_dir"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.compilation.Builder.put_txt_log_in_appli_log_dir">[docs]</a>    <span class="k">def</span> <span class="nf">put_txt_log_in_appli_log_dir</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_name</span><span class="p">):</span>
521         <span class="sd">&#39;&#39;&#39;Put the txt log (that contain the system logs, like make command</span>
522 <span class="sd">           output) in the directory &lt;APPLICATION DIR&gt;/LOGS/&lt;product_name&gt;/</span>
523 <span class="sd">    </span>
524 <span class="sd">        :param file_name Str: the name of the file to write</span>
525 <span class="sd">        &#39;&#39;&#39;</span>
526         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span> <span class="o">==</span> <span class="n">sys</span><span class="o">.</span><span class="n">__stdout__</span><span class="p">:</span>
527             <span class="k">return</span>
528         <span class="n">dir_where_to_put</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">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">workdir</span><span class="p">,</span>
529                                         <span class="s">&quot;LOGS&quot;</span><span class="p">,</span>
530                                         <span class="bp">self</span><span class="o">.</span><span class="n">product_info</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
531         <span class="n">file_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">dir_where_to_put</span><span class="p">,</span> <span class="n">file_name</span><span class="p">)</span>
532         <span class="n">src</span><span class="o">.</span><span class="n">ensure_path_exists</span><span class="p">(</span><span class="n">dir_where_to_put</span><span class="p">)</span>
533         <span class="c"># write the logTxtFile copy it to the destination, and then recreate </span>
534         <span class="c"># it as it was</span>
535         <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
536         <span class="n">shutil</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">txtFilePath</span><span class="p">,</span> <span class="n">file_path</span><span class="p">)</span>
537         <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">txtFilePath</span><span class="p">),</span> <span class="s">&#39;w&#39;</span><span class="p">)</span>
538         <span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">logTxtFile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="s">&quot;r&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
539         </div></div>
540 </pre></div>
541
542           </div>
543         </div>
544       </div>
545       <div class="sphinxsidebar">
546         <div class="sphinxsidebarwrapper">
547             <p class="logo"><a href="../../index.html">
548               <img class="logo" src="../../_static/sat_v5.0.png" alt="Logo"/>
549             </a></p><div class="relations">
550 <h3>Related Topics</h3>
551 <ul>
552   <li><a href="../../index.html">Documentation overview</a><ul>
553   <li><a href="../index.html">Module code</a><ul>
554   </ul></li>
555   </ul></li>
556 </ul>
557 </div>
558 <div id="searchbox" style="display: none">
559   <h3>Quick search</h3>
560     <form class="search" action="../../search.html" method="get">
561       <input type="text" name="q" />
562       <input type="submit" value="Go" />
563       <input type="hidden" name="check_keywords" value="yes" />
564       <input type="hidden" name="area" value="default" />
565     </form>
566     <p class="searchtip" style="font-size: 90%">
567     Enter search terms or a module, class or function name.
568     </p>
569 </div>
570 <script type="text/javascript">$('#searchbox').show(0);</script>
571         </div>
572       </div>
573       <div class="clearer"></div>
574     </div>
575     <div class="footer">
576       &copy;2018, CEA.
577       
578       |
579       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.1.3</a>
580       &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster </a>
581       
582     </div>
583
584     
585
586     
587   </body>
588 </html>