Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Documentation/html/_modules/install.html

    r08c9091 r903ed4f  
    181181<span class="c1">#    June 2020 - Anne Philipp</span>
    182182<span class="c1">#        - renamed &quot;convert&quot; functions to &quot;fortran&quot; functions</span>
    183 <span class="c1">#        - reconfigured mk_tarball to select *.template files instead </span>
     183<span class="c1">#        - reconfigured mk_tarball to select *.template files instead</span>
    184184<span class="c1">#          of *.nl and *.temp</span>
    185185<span class="c1">#        - added check for makefile settings</span>
     186<span class="c1">#    August 2020 - Leopold Haimberger</span>
     187<span class="c1">#        - added a new installation section for system installation (if-else block)</span>
     188<span class="c1">#        - read new argument from command line</span>
     189<span class="c1">#        - write .setup.rc for a system installation into Run directory</span>
     190<span class="c1">#        - copy executables to system path and user files to user path</span>
    186191<span class="c1">#</span>
    187192<span class="c1"># @License:</span>
     
    237242<span class="kn">import</span> <span class="nn">subprocess</span>
    238243<span class="kn">import</span> <span class="nn">tarfile</span>
     244<span class="kn">import</span> <span class="nn">shutil</span>
    239245<span class="kn">from</span> <span class="nn">argparse</span> <span class="kn">import</span> <span class="n">ArgumentParser</span><span class="p">,</span> <span class="n">ArgumentDefaultsHelpFormatter</span>
    240246
     
    244250<span class="kn">from</span> <span class="nn">Classes.UioFiles</span> <span class="kn">import</span> <span class="n">UioFiles</span>
    245251<span class="kn">from</span> <span class="nn">Mods.tools</span> <span class="kn">import</span> <span class="p">(</span><span class="n">make_dir</span><span class="p">,</span> <span class="n">put_file_to_ecserver</span><span class="p">,</span> <span class="n">submit_job_to_ecserver</span><span class="p">,</span>
    246                         <span class="n">silent_remove</span><span class="p">,</span> <span class="n">execute_subprocess</span><span class="p">,</span> <span class="n">none_or_str</span><span class="p">)</span>
     252                        <span class="n">silent_remove</span><span class="p">,</span> <span class="n">execute_subprocess</span><span class="p">,</span> <span class="n">none_or_str</span><span class="p">,</span>
     253                        <span class="n">overwrite_lines_in_file</span><span class="p">,</span> <span class="n">check_for_string_in_file</span><span class="p">)</span>
    247254
    248255<span class="c1"># ------------------------------------------------------------------------------</span>
     
    265272    <span class="n">check_install_conditions</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
    266273
    267     <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">&#39;local&#39;</span><span class="p">:</span> <span class="c1"># ecgate or cca</span>
     274    <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;local&#39;</span><span class="p">,</span> <span class="s1">&#39;syslocal&#39;</span><span class="p">]:</span> <span class="c1"># ecgate or cca</span>
    268275        <span class="n">install_via_gateway</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
    269276    <span class="k">else</span><span class="p">:</span> <span class="c1"># local</span>
    270277        <span class="n">install_local</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
    271278
     279    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;SUCCESS: INSTALLATION FINISHED!&quot;</span><span class="p">)</span>
     280
    272281    <span class="k">return</span></div>
    273282
     
    290299    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s1">&#39;--target&#39;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s1">&#39;install_target&#39;</span><span class="p">,</span>
    291300                        <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
    292                         <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Valid targets: local | ecgate | cca , </span><span class="se">\</span>
     301                        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Valid targets: syslocal | local | ecgate | cca , </span><span class="se">\</span>
    293302<span class="s2">                        the latter two are at ECMWF&quot;</span><span class="p">)</span>
    294303    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--makefile&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;makefile&quot;</span><span class="p">,</span>
     
    312321    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--installdir&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;installdir&quot;</span><span class="p">,</span>
    313322                        <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
    314                         <span class="n">help</span><span class="o">=</span><span class="s1">&#39;Root directory of the &#39;</span>
     323                        <span class="n">help</span><span class="o">=</span><span class="s1">&#39;Root (user) directory of the &#39;</span>
    315324                        <span class="s1">&#39;flex_extract installation&#39;</span><span class="p">)</span>
     325    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--sysinstalldir&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;sysinstalldir&quot;</span><span class="p">,</span>
     326                        <span class="nb">type</span><span class="o">=</span><span class="n">none_or_str</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
     327                        <span class="n">help</span><span class="o">=</span><span class="s1">&#39;System installation path; where &#39;</span>
     328                        <span class="s1">&#39;executables are stored.&#39;</span><span class="p">)</span>
    316329
    317330    <span class="c1"># arguments for job submission to ECMWF, only needed by submit.py</span>
     
    390403                            <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">&#39;.tar&#39;</span><span class="p">)</span>
    391404
    392     <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">==</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">:</span>
    393         <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;WARNING: installdir has not been specified&#39;</span><span class="p">)</span>
    394         <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;flex_extract will be installed in here by compiling the &#39;</span> <span class="o">+</span>
    395               <span class="s1">&#39;Fortran source in &#39;</span> <span class="o">+</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">)</span>
    396         <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">)</span>
    397     <span class="k">else</span><span class="p">:</span> <span class="c1"># creates the target working directory for flex_extract</span>
    398         <span class="n">c</span><span class="o">.</span><span class="n">installdir</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">expandvars</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">expanduser</span><span class="p">(</span>
    399             <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">))</span>
    400         <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">!=</span> \
    401            <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">):</span>
     405    <span class="n">c</span><span class="o">.</span><span class="n">installdir</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">abspath</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">expandvars</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">expanduser</span><span class="p">(</span>
     406                <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)))</span>
     407    <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</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">abspath</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">expandvars</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">expanduser</span><span class="p">(</span>
     408        <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)))</span>
     409
     410    <span class="c1"># this is standard installation into a single directory</span>
     411    <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">==</span> <span class="s1">&#39;local&#39;</span><span class="p">:</span>
     412
     413        <span class="c1"># installation into the current directory</span>
     414        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">:</span>
     415            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;WARNING: installdir has not been specified&#39;</span><span class="p">)</span>
     416            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;flex_extract will be installed in current dir by compiling the &#39;</span> <span class="o">+</span>
     417                  <span class="s1">&#39;Fortran source in &#39;</span> <span class="o">+</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">)</span>
     418            <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FORTRAN_SRC</span><span class="p">)</span>
     419        <span class="c1"># installation into a different path</span>
     420        <span class="k">elif</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">!=</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="p">:</span>
     421
     422            <span class="c1"># creates the target working directory for flex_extract</span>
    402423            <span class="n">mk_tarball</span><span class="p">(</span><span class="n">tar_file</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span><span class="p">)</span>
    403424            <span class="n">make_dir</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span>
     
    410431                                  <span class="n">_config</span><span class="o">.</span><span class="n">PATH_REL_FORTRAN_SRC</span><span class="p">))</span>
    411432
    412     <span class="c1"># Create Fortran executable</span>
    413     <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Install &#39;</span> <span class="o">+</span>  <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">&#39; software at &#39;</span> <span class="o">+</span>
    414           <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">+</span> <span class="s1">&#39; in directory &#39;</span> <span class="o">+</span>
    415           <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
    416 
    417     <span class="n">del_fortran_build</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span>
    418     <span class="n">mk_fortran_build</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">)</span>
     433        <span class="c1"># Create Fortran executable</span>
     434        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Install &#39;</span> <span class="o">+</span>  <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">&#39; software at &#39;</span> <span class="o">+</span>
     435              <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">+</span> <span class="s1">&#39; in directory &#39;</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     436
     437        <span class="n">del_fortran_build</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span>
     438        <span class="n">mk_fortran_build</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">)</span>
     439        <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s1">&#39;../../&#39;</span><span class="p">)</span>
     440        <span class="c1"># make sure that the correct calling of submit.py script is in run_local.sh</span>
     441        <span class="n">overwrite_lines_in_file</span><span class="p">(</span><span class="s1">&#39;Run/run_local.sh&#39;</span><span class="p">,</span>
     442                                <span class="s1">&#39;pyscript=&#39;</span><span class="p">,</span> <span class="s1">&#39;pyscript=../Source/Python/submit.py</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     443
     444    <span class="c1"># this is system installation were executables and user files are separated</span>
     445    <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">==</span> <span class="s1">&#39;syslocal&#39;</span><span class="p">:</span>
     446        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span> <span class="p">:</span>
     447            <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">&#39;ERROR: System installation path is equal to user &#39;</span>
     448                     <span class="s1">&#39;installation path.</span><span class="se">\n</span><span class="s1"> Please change either the system &#39;</span>
     449                     <span class="s1">&#39;installation path or use installation target &quot;local&quot;.&#39;</span><span class="p">)</span>
     450        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span> <span class="o">==</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="p">:</span>
     451            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Flex_extract will be installed in current directory!&#39;</span><span class="p">)</span>
     452        <span class="k">else</span><span class="p">:</span> <span class="c1"># install user part in different dir</span>
     453            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Flex_extract will be installed in &#39;</span> <span class="o">+</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="p">)</span>
     454
     455            <span class="n">c</span><span class="o">.</span><span class="n">installdir</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">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">)</span>
     456            <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">):</span>
     457                <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span>
     458
     459            <span class="c1"># copy all files except Python and Fortranfiles to this dir</span>
     460            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">,</span>
     461                            <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span> <span class="n">symlinks</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
     462            <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</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="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">&#39;Source&#39;</span><span class="p">))</span>
     463            <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</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="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">&#39;.git&#39;</span><span class="p">))</span>
     464            <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span> <span class="s1">&#39;*~&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">:</span>
     465                <span class="n">silent_remove</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
     466
     467            <span class="n">os</span><span class="o">.</span><span class="n">remove</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="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">&#39;setup.sh&#39;</span><span class="p">))</span>
     468            <span class="n">os</span><span class="o">.</span><span class="n">remove</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="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">&#39;setup_local.sh&#39;</span><span class="p">))</span>
     469
     470        <span class="c1"># configure run_local script correctly</span>
     471        <span class="c1"># check if source of system config file is already in run_local.sh,</span>
     472        <span class="c1"># if not, add it</span>
     473        <span class="k">if</span> <span class="ow">not</span> <span class="n">check_for_string_in_file</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="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">&#39;Run/run_local.sh&#39;</span><span class="p">),</span>
     474                                 <span class="s1">&#39;source .setup.rc&#39;</span><span class="p">):</span>
     475            <span class="n">overwrite_lines_in_file</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="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">&#39;Run/run_local.sh&#39;</span><span class="p">),</span>
     476                                    <span class="s1">&#39;# PATH TO SUBMISSION SCRIPT&#39;</span><span class="p">,</span>
     477                                    <span class="s1">&#39;# PATH TO SUBMISSION SCRIPT</span><span class="se">\n</span><span class="s1">source &#39;</span><span class="o">+</span><span class="n">_config</span><span class="o">.</span><span class="n">FILE_SYS_CONFIG</span><span class="o">+</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     478        <span class="c1"># make sure that the correct calling of submit.py script is in run_local.sh</span>
     479        <span class="n">overwrite_lines_in_file</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="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">,</span><span class="s1">&#39;Run/run_local.sh&#39;</span><span class="p">),</span>
     480                                <span class="s1">&#39;pyscript=&#39;</span><span class="p">,</span> <span class="s1">&#39;pyscript=submit.py</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     481
     482        <span class="c1"># change permission for file to executable</span>
     483        <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">&#39;chmod&#39;</span><span class="p">,</span> <span class="s1">&#39;0775&#39;</span><span class="p">,</span>
     484                            <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">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">),</span><span class="s1">&#39;Run/run_local.sh&#39;</span><span class="p">)])</span>
     485
     486
     487        <span class="c1"># create systemdir</span>
     488        <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</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">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span><span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span><span class="p">)</span>
     489        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">):</span>
     490            <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)</span>
     491
     492        <span class="c1"># create setup file for running flex_extract with system installation</span>
     493        <span class="k">with</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="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">),</span><span class="s1">&#39;Run/.setup.rc&#39;</span><span class="p">),</span><span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fio</span><span class="p">:</span>
     494            <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;#!/bin/bash </span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     495            <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;export FLEXEXTRACT_USER_DIR=&#39;</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">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">)</span><span class="o">+</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     496            <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;export PATH=&#39;</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">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)</span><span class="o">+</span><span class="s1">&#39;/Python:$</span><span class="si">{PATH}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     497            <span class="n">fio</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;export PATH=&#39;</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">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)</span><span class="o">+</span><span class="s1">&#39;:$</span><span class="si">{PATH}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     498
     499        <span class="c1"># copy all Python and Fortranfiles to this dir</span>
     500        <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_SOURCES</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span> <span class="n">symlinks</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
     501
     502        <span class="n">os</span><span class="o">.</span><span class="n">chdir</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="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span><span class="s1">&#39;Fortran&#39;</span><span class="p">))</span>
     503        <span class="c1"># Create Fortran executable</span>
     504        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Install &#39;</span> <span class="o">+</span>  <span class="n">_config</span><span class="o">.</span><span class="n">FLEXEXTRACT_DIRNAME</span> <span class="o">+</span> <span class="s1">&#39; software as &#39;</span> <span class="o">+</span>
     505              <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">+</span> <span class="s1">&#39; in directory &#39;</span> <span class="o">+</span>
     506              <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
     507
     508        <span class="n">del_fortran_build</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">)</span>
     509        <span class="n">mk_fortran_build</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">)</span>
     510
     511        <span class="n">outfile</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">UioFiles</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span><span class="s1">&#39;*.out&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">files</span><span class="p">]</span>
     512        <span class="n">test</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">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span><span class="s1">&#39;calc_etadot&#39;</span><span class="p">)</span>
     513        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">outfile</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
     514            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;WARNING: Multiple executables for Fortran code are available!&#39;</span><span class="p">)</span>
     515        <span class="c1"># move executable one dir up and delete Fortran dir</span>
     516        <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s1">&#39;..&#39;</span><span class="p">)</span>
     517        <span class="n">shutil</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">outfile</span><span class="p">[</span><span class="mi">0</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="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">,</span><span class="s1">&#39;calc_etadot&#39;</span><span class="p">))</span>
     518        <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</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="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">),</span><span class="s1">&#39;Fortran&#39;</span><span class="p">))</span>
    419519
    420520    <span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span><span class="p">)</span>
     
    451551        <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
    452552
    453     <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">!=</span> <span class="s1">&#39;local&#39;</span><span class="p">:</span>
     553    <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;local&#39;</span><span class="p">,</span> <span class="s1">&#39;syslocal&#39;</span><span class="p">]:</span>
    454554        <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecgid</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">ecuid</span><span class="p">:</span>
    455555            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Please enter your ECMWF user id and group id &#39;</span>
     
    467567        <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">:</span>
    468568            <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="s1">&#39;$</span><span class="si">{HOME}</span><span class="s1">&#39;</span>
    469     <span class="k">else</span><span class="p">:</span> <span class="c1"># local</span>
     569    <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">==</span> <span class="s1">&#39;local&#39;</span><span class="p">:</span>
    470570        <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">:</span>
    471571            <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span>
     572    <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">install_target</span> <span class="o">==</span> <span class="s1">&#39;syslocal&#39;</span><span class="p">:</span>
     573        <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">installdir</span><span class="p">:</span>
     574            <span class="n">c</span><span class="o">.</span><span class="n">installdir</span> <span class="o">=</span> <span class="n">_config</span><span class="o">.</span><span class="n">PATH_FLEXEXTRACT_DIR</span>
     575        <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">sysinstalldir</span><span class="p">:</span>
     576            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;ERROR: System installation was selected but &#39;</span>
     577                  <span class="s1">&#39;no system installation path was defined.&#39;</span><span class="p">)</span>
     578            <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
    472579
    473580    <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">makefile</span><span class="p">:</span>
     
    485592        <span class="k">else</span><span class="p">:</span>
    486593            <span class="k">pass</span>
    487        
     594
    488595    <span class="k">return</span></div>
    489596
     
    877984        <span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
    878985    <span class="k">else</span><span class="p">:</span>
    879         <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">&#39;ls&#39;</span><span class="p">,</span> <span class="s1">&#39;-l&#39;</span><span class="p">,</span> 
     986        <span class="n">execute_subprocess</span><span class="p">([</span><span class="s1">&#39;ls&#39;</span><span class="p">,</span> <span class="s1">&#39;-l&#39;</span><span class="p">,</span>
    880987                            <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">src_path</span><span class="p">,</span> <span class="n">_config</span><span class="o">.</span><span class="n">FORTRAN_EXECUTABLE</span><span class="p">)],</span>
    881988                           <span class="n">error_msg</span><span class="o">=</span><span class="s1">&#39;FORTRAN EXECUTABLE COULD NOT BE FOUND!&#39;</span><span class="p">)</span>
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG