2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6 <html xmlns="http://www.w3.org/1999/xhtml">
8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 <title>src.compilation — salomeTools 5.0.0dev documentation</title>
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" />
16 <script type="text/javascript">
17 var DOCUMENTATION_OPTIONS = {
20 COLLAPSE_INDEX: false,
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" />
32 <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
35 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
41 <div class="document">
42 <div class="documentwrapper">
43 <div class="bodywrapper">
44 <div class="body" role="main">
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>
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>
70 <span class="kn">import</span> <span class="nn">src</span>
72 <span class="n">C_COMPILE_ENV_LIST</span> <span class="o">=</span> <span class="p">[</span><span class="s">"CC"</span><span class="p">,</span>
73 <span class="s">"CXX"</span><span class="p">,</span>
74 <span class="s">"F77"</span><span class="p">,</span>
75 <span class="s">"CFLAGS"</span><span class="p">,</span>
76 <span class="s">"CXXFLAGS"</span><span class="p">,</span>
77 <span class="s">"LIBS"</span><span class="p">,</span>
78 <span class="s">"LDFLAGS"</span><span class="p">]</span>
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">"""Class to handle all construction steps, like cmake, configure, make, ...</span>
82 <span class="sd"> """</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">""</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">"debug"</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">"yes"</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>
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>
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">"> </span><span class="si">%s</span><span class="se">\n</span><span class="s">"</span> <span class="o">%</span> <span class="n">command</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
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>
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>
122 <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">' build_dir = </span><span class="si">%s</span><span class="se">\n</span><span class="s">'</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">' install_dir = </span><span class="si">%s</span><span class="se">\n</span><span class="s">'</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">'</span><span class="se">\n</span><span class="s">'</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
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>
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"><</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>
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>
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">></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">" </span><span class="si">%s</span><span class="s"> = </span><span class="si">%s</span><span class="se">\n</span><span class="s">"</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>
150 <span class="k">return</span> <span class="mi">0</span>
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">""</span><span class="p">):</span>
156 <span class="n">cmake_option</span> <span class="o">=</span> <span class="n">options</span>
157 <span class="c"># cmake_option +=' -DCMAKE_VERBOSE_MAKEFILE=ON -DSALOME_CMAKE_DEBUG=ON'</span>
158 <span class="k">if</span> <span class="s">'cmake_options'</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">" </span><span class="si">%s</span><span class="s"> "</span> <span class="o">%</span> <span class="s">" "</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>
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">" -DCMAKE_BUILD_TYPE=Debug"</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">" -DCMAKE_BUILD_TYPE=Release"</span>
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">'cmake_generator'</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">" -DCMAKE_GENERATOR=</span><span class="si">%s</span><span class="s">"</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>
174 <span class="n">command</span> <span class="o">=</span> <span class="p">(</span><span class="s">"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">"</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>
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, " ", 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>
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">"cmake"</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>
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">""</span><span class="p">):</span>
197 <span class="k">if</span> <span class="s">'buildconfigure_options'</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">" </span><span class="si">%s</span><span class="s"> "</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>
200 <span class="n">command</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="s">'</span><span class="si">%s</span><span class="s">/build_configure'</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">" "</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>
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">"build_configure"</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>
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">""</span><span class="p">):</span>
220 <span class="k">if</span> <span class="s">'configure_options'</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">" </span><span class="si">%s</span><span class="s"> "</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>
223 <span class="n">command</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s">/configure --prefix=</span><span class="si">%s</span><span class="s">"</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>
226 <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">" "</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>
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>
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">"configure"</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>
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">'libtool'</span><span class="p">)):</span>
244 <span class="k">return</span>
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">"libtool"</span><span class="p">),</span> <span class="s">'r'</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">'hack_libtool'</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
249 <span class="k">return</span>
251 <span class="c"># fix libtool by replacing CC="<compil>" with hack_libtool function</span>
252 <span class="n">hack_command</span><span class="o">=</span><span class="s">'''sed -i "s%^CC=</span><span class="se">\\</span><span class="s">"\(.*\)</span><span class="se">\\</span><span class="s">"%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">"\$(echo \$@ | grep -E '</span><span class="se">\\\\\\</span><span class="s">-L/usr/lib(/../lib)?(64)? ')</span><span class="se">\\</span><span class="s">" == </span><span class="se">\\\"\\\"</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">"</span><span class="se">\\</span><span class="s">1 \$@</span><span class="se">\\</span><span class="s">"</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">"</span><span class="se">\\</span><span class="s">1 </span><span class="se">\\</span><span class="s">"\`echo \$@ | sed -r -e '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'\`</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">"hack_libtool</span><span class="se">\\</span><span class="s">"</span><span class="si">%g</span><span class="s">" libtool'''</span>
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>
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">""</span><span class="p">):</span>
276 <span class="c"># make</span>
277 <span class="n">command</span> <span class="o">=</span> <span class="s">'make'</span>
278 <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">" -j"</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">" "</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">"make"</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>
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>
297 <span class="n">hh</span> <span class="o">=</span> <span class="s">'MSBUILD /m:</span><span class="si">%s</span><span class="s">'</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">" "</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">"DEBUG"</span><span class="p">)</span>
300 <span class="c"># make</span>
301 <span class="n">command</span> <span class="o">=</span> <span class="s">'msbuild'</span>
302 <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">" /maxcpucount:"</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">" /p:Configuration=Debug"</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">" /p:Configuration=Release"</span>
307 <span class="n">command</span> <span class="o">=</span> <span class="n">command</span> <span class="o">+</span> <span class="s">" ALL_BUILD.vcxproj"</span>
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>
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">"make"</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>
323 <span class="c">##</span>
324 <span class="c"># Runs 'make install'.</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">"Win"</span><span class="p">:</span>
327 <span class="n">command</span> <span class="o">=</span> <span class="s">'msbuild INSTALL.vcxproj'</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">" /p:Configuration=Debug"</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">" /p:Configuration=Release"</span>
332 <span class="k">else</span> <span class="p">:</span>
333 <span class="n">command</span> <span class="o">=</span> <span class="s">'make install'</span>
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>
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>
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">"makeinstall"</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>
350 <span class="c">##</span>
351 <span class="c"># Runs 'make_check'.</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">""</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">'msbuild RUN_TESTS.vcxproj'</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">"autotools"</span> <span class="p">:</span>
357 <span class="n">cmd</span> <span class="o">=</span> <span class="s">'make check'</span>
358 <span class="k">else</span><span class="p">:</span>
359 <span class="n">cmd</span> <span class="o">=</span> <span class="s">'make test'</span>
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>
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>
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>
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>
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">""</span><span class="p">,</span>
382 <span class="n">configure_options</span><span class="o">=</span><span class="s">""</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">'use_autotools'</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">'always'</span><span class="p">,</span> <span class="s">'yes'</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">'option'</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>
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>
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">'use_ctest'</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">'always'</span><span class="p">,</span> <span class="s">'yes'</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">'option'</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>
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>
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">""</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">"(autotools)"</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">"(ctest)"</span>
410 <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</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">"</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">"</span> <span class="o">%</span> \
412 <span class="p">{</span> <span class="s">"module"</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">"cmd"</span><span class="p">:</span> <span class="n">cmd</span> <span class="p">},</span> <span class="mi">4</span><span class="p">)</span>
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>
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">'Win'</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>
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>
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">"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">"</span><span class="p">)</span> <span class="o">%</span> \
444 <span class="p">{</span> <span class="s">'product'</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">'script'</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">"_compile_script"</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">"script"</span><span class="p">)</span>
462 <span class="k">return</span> <span class="n">retcode</span>
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">"SOURCE_DIR"</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">"INSTALL_DIR"</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">"PRODUCT_INSTALL"</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">"BUILD_DIR"</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">"PRODUCT_BUILD"</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">"MAKE_OPTIONS"</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">"DIST_NAME"</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">"DIST_VERSION"</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">"DIST"</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">"VERSION"</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>
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>
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">"/maxcpucount:</span><span class="si">%s</span><span class="s">"</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">"-j</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="n">nb_proc</span>
486 <span class="bp">self</span><span class="o">.</span><span class="n">log_command</span><span class="p">(</span><span class="s">" "</span> <span class="o">+</span> <span class="n">_</span><span class="p">(</span><span class="s">"Run build script </span><span class="si">%s</span><span class="se">\n</span><span class="s">"</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>
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>
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">"script"</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>
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">"nb_proc"</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>
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">'.'</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">"bat"</span><span class="p">,</span><span class="s">"sh"</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">"py"</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>
517 <span class="n">msg</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s">"The script </span><span class="si">%s</span><span class="s"> must have .sh, .bat or .py extension."</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>
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">'''Put the txt log (that contain the system logs, like make command</span>
522 <span class="sd"> output) in the directory <APPLICATION DIR>/LOGS/<product_name>/</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"> '''</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">"LOGS"</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">'w'</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">"r"</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
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>
552 <li><a href="../../index.html">Documentation overview</a><ul>
553 <li><a href="../index.html">Module code</a><ul>
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" />
566 <p class="searchtip" style="font-size: 90%">
567 Enter search terms or a module, class or function name.
570 <script type="text/javascript">$('#searchbox').show(0);</script>
573 <div class="clearer"></div>
579 Powered by <a href="http://sphinx-doc.org/">Sphinx 1.1.3</a>
580 & <a href="https://github.com/bitprophet/alabaster">Alabaster </a>