source: LMDZ6/trunk/tools/fcm/doc/release_notes/1-1.html @ 4106

Last change on this file since 4106 was 1578, checked in by jghattas, 13 years ago
  • Add fcm in LMDZ5/tools directory

It is no longer needed to have fcm in your environement PATH variable.
Now makelmdz_fcm takes by default this fcm. It is still possible to use
another fcm, using -fcm_path argument in makelmdz_fcm.

File size: 17.0 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
3<html>
4<head>
5  <title>FCM 1.1 Release Notes</title>
6  <meta name="author" content="FCM development team">
7  <meta name="descriptions" content="FCM Release Notes">
8  <meta name="keywords" content="FCM, release">
9  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
10  <link rel="stylesheet" type="text/css" href="style.css">
11</head>
12
13<body>
14  <h1>FCM 1.1 Release Notes<br>
15  06 November 2006</h1>
16
17  <p>These are the release notes for FCM release 1.1. You can use this release
18  of FCM freely under the terms of the <a href="../../LICENSE.html">FCM
19  LICENSE</a>, which you should receive with this distribution. Release 1.1 is
20  the first external release of FCM. (Release 1.0, 30 November 2005, was an
21  internal Met Office release which marked the start of the main migration of
22  systems into FCM.)</p>
23
24  <p>FCM is maintained by the FCM team at the Met Office. Please feedback any
25  bug reports or feature requests to us by <a href=
26  "mailto:fcm-team@metoffice.gov.uk">e-mail</a>.</p>
27
28  <h2>Contents</h2>
29
30  <ul>
31    <li><a href="#new">What's New?</a></li>
32
33    <li><a href="#fix">Minor Enhancements &amp; Bug Fixes</a></li>
34
35    <li><a href="#req">System Requirements</a></li>
36
37    <li><a href="#ins">Installation</a></li>
38  </ul>
39
40  <h2><a name="new" id="new">What's New?</a></h2>
41
42  <p>Build system:</p>
43
44  <ul>
45    <li>Support building of Fortran <span class="mono">BLOCKDATA</span> program
46    units.</li>
47
48    <li>Option to generate Fortran interface files in lower case names after
49    their program units.</li>
50
51    <li>Allow renaming of main program targets using the build configuration
52    file.</li>
53
54    <li>The <span class="mono">fcm_env.ksh</span> file now provides an
55    environment variable for the <span class="mono">etc/</span> sub-directory
56    of the build which can be used if you are "building" data files.</li>
57
58    <li>The build root directory is now locked while a build is running. This
59    prevents multiple instances of build running in the same directory.
60    However, you can bypass the lock if you specify the new <span class=
61    "mono">--ignore-lock</span> option with <span class="mono">fcm
62    build</span>.</li>
63  </ul>
64
65  <p>Extract system:</p>
66
67  <ul>
68    <li>The destination root directory is now locked while an extract is
69    running. This prevents multiple instances of extract running in the same
70    directory. However, you can bypass the lock if you specify the new
71    <span class="mono">--ignore-lock</span> option with <span class="mono">fcm
72    extract</span>.</li>
73  </ul>
74
75  <p>Code management commands:</p>
76
77  <ul>
78    <li><span class="mono">fcm merge</span> now supports custom and reverse
79    modes.</li>
80
81    <li><span class="mono">fcm merge</span> now allows automatic merges in
82    sub-trees if it is safe.</li>
83
84    <li><span class="mono">fcm merge</span> now handles automatic merges from
85    sibling branches that are created at different revisions of the
86    parent.</li>
87
88    <li><span class="mono">fcm branch, fcm diff --branch</span> and
89    <span class="mono">fcm merge</span> can now handle creation, diff and
90    automatic merge of a branch of a branch.</li>
91
92    <li><span class="mono">fcm switch</span> is improved to allow safer
93    switches of your working copy to point to different branches in your
94    project.</li>
95
96    <li><span class="mono">fcm commit</span> now displays your location in the
97    branch, and extra warning when you are committing to the trunk of a
98    project.</li>
99
100    <li>New <span class="mono">fcm mkpatch</span> command.</li>
101  </ul>
102
103  <p>General:</p>
104
105  <ul>
106    <li>Error handling is improved.</li>
107
108    <li>The User Guide is now complete, with a much improved tutorial.</li>
109
110    <li>New document: Fortran coding standard for FCM.</li>
111  </ul>
112
113  <h2><a name="fix" id="fix">Minor Enhancements &amp; Bug Fixes</a></h2>
114
115  <p>Build system:</p>
116
117  <ul>
118    <li>Ignore empty Fortran source files, so that alternate sections can be
119    handled correctly.</li>
120
121    <li>Handle recursive header file dependency correctly in pre-processing
122    stage.</li>
123
124    <li>Identify changes in pre-processed source file, the pre-processor
125    options and "keys" correctly in incremental builds.</li>
126
127    <li>Improve speed of pre-processing in incremental builds by not performing
128    any unnecessary null-action pre-processing.</li>
129
130    <li>Load archiver no longer includes main program objects.</li>
131
132    <li>It is now possible for a sub-package to exclude particular types of
133    dependencies.</li>
134  </ul>
135
136  <p>Extract system:</p>
137
138  <ul>
139    <li>Sub-directories are now extracted with the non-recursive mode of
140    <span class="mono">svn export</span>.</li>
141
142    <li>Peg revisions should now be handled correctly in <span class=
143    "mono">INC</span> extract declarations.</li>
144
145    <li>The command should now fail if a declared source directory does not
146    exist or if the update of an extract destination fails.</li>
147  </ul>
148
149  <p>Code management commands:</p>
150
151  <ul>
152    <li><span class="mono">fcm branch --info</span> and <span class="mono">fcm
153    diff</span> can now take a <span class="mono">PATH</span> as an
154    argument.</li>
155
156    <li>The <span class="mono">--ticket</span> option of <span class="mono">fcm
157    branch --create</span> can now accept multiple tickets.</li>
158
159    <li><span class="mono">fcm branch --info</span> and <span class="mono">fcm
160    diff --branch</span> should now work correctly in a sub-tree of a
161    branch.</li>
162
163    <li><span class="mono">fcm branch --create</span> no longer offers to
164    checkout the branch.</li>
165
166    <li><span class="mono">fcm commit</span> no longer fails when adding a new
167    symbolic link.</li>
168
169    <li>The <span class="mono">--password</span> option is now supported by the
170    <span class="mono">fcm branch --create, fcm branch --delete, fcm
171    commit</span> and <span class="mono">fcm delete</span> commands.</li>
172
173    <li>Empty arguments to code management commands are now parsed
174    correctly.</li>
175
176    <li>The <span class="mono">fcm diff --graphical</span> option no longer
177    fails with binary files.</li>
178
179    <li>FCM will always set the environment variable <span class=
180    "mono">LANG=en_GB</span> before running Subversion commands. This prevents
181    failure of FCM when it attempts to parse output from Subversion commands
182    when a different <span class="mono">LANG</span> setting is used.</li>
183  </ul>
184
185  <p>General:</p>
186
187  <ul>
188    <li>Various other very minor enhancements and bug fixes.</li>
189  </ul>
190
191  <h2><a name="req" id="req">System Requirements</a></h2>
192
193  <h3><a name="req_perl" id="req_perl">Perl</a></h3>
194
195  <p>The core part of FCM is a set of Perl scripts and modules. For the build
196  system to work, you need the following modules installed:</p>
197
198  <ul>
199    <li class="mono">Carp</li>
200
201    <li class="mono">Cwd</li>
202
203    <li class="mono">File::Basename</li>
204
205    <li class="mono">File::Compare</li>
206
207    <li class="mono">File::Find</li>
208
209    <li class="mono">File::Path</li>
210
211    <li class="mono">File::Spec::Functions</li>
212
213    <li class="mono">File::Spec</li>
214
215    <li class="mono">FindBin</li>
216
217    <li class="mono">Getopt::Long</li>
218
219    <li class="mono">POSIX</li>
220  </ul>
221
222  <p>The code management commands and extract system need the following
223  additional modules installed:</p>
224
225  <ul>
226    <li class="mono">File::Temp</li>
227
228    <li class="mono">Getopt::Long</li>
229
230    <li class="mono">HTTP::Date</li>
231
232    <li class="mono">XML::DOM</li>
233  </ul>
234
235  <p>To use the simple GUI for some of the code management commands, you also
236  need the following modules:</p>
237
238  <ul>
239    <li class="mono">Tk::ROText</li>
240
241    <li class="mono">Tk</li>
242  </ul>
243
244  <p>At the Met Office we are currently using the complete FCM system with Perl
245  5.8.x. In addition the build system is being used with Perl 5.6.x.</p>
246
247  <h3><a name="req_svn" id="req_svn">Subversion</a></h3>
248
249  <p>To use the code management commands (and relevant parts of the extract
250  system) you need to have <a href=
251  "http://subversion.tigris.org/">Subversion</a> installed.</p>
252
253  <ul>
254    <li>FCM makes extensive use of peg revisions in both the code management
255    and extract systems. This requires Subversion 1.2.0.</li>
256
257    <li>At the Met Office we are currently using Subversion 1.3.2 (although
258    1.2.3 was used until very recently).</li>
259  </ul>
260
261  <p>Note that the extract system can mirror extracted code to a remote
262  platform for building. Therefore it is only necessary to have Subversion
263  installed on the platform where you do your code development. If you use
264  other platforms purely for building and running then you do not need to have
265  Subversion installed on these platforms.</p>
266
267  <h3><a name="req_trac" id="req_trac">Trac</a></h3>
268
269  <p>The use of <a href="http://projects.edgewall.com/trac/">Trac</a> is
270  entirely optional (although highly recommended if you are using Subversion).
271  At the Met Office we are currently using version 0.9.6.</p>
272
273  <h3><a name="req_other" id="req_other">Other Requirements</a></h3>
274
275  <p>The <tt>fcm diff --graphical</tt> and <tt>fcm conflicts</tt> commands
276  require <a href="http://furius.ca/xxdiff/">xxdiff</a>. At the Met Office we
277  are currently using version 3.1.</p>
278
279  <p>The build system requires <a href=
280  "http://www.gnu.org/software/make/make.html">GNU make</a>. At the Met Office
281  we are currently using version 3.79.x and 3.80.</p>
282
283  <p>Optionally, the build system can use <a href=
284  "http://www.ifremer.fr/ditigo/molagnon/fortran90">f90aib</a> to generate
285  interface files. However, there is also a built in Perl based interface file
286  generator which is quicker and better in most cases so you are unlikely to
287  need f90aib unless you hit a problem with some particular code.</p>
288
289  <p>FCM is intended to run on a Unix/Linux system. It is currently used at the
290  Met Office on Linux (Red Hat 9 and Red Hat Enterprise 2.1 and 4.4) and HP-UX
291  11.00.</p>
292
293  <h2><a name="ins" id="ins">Installation</a></h2>
294
295  <p>FCM is distributed in the form of a compressed tar file. Un-pack the tar
296  file into an appropriate location on your system. Then add the <tt>bin</tt>
297  directory into your PATH. Once you have done this you should now have full
298  access to the FCM system, assuming that you have met the requirements
299  described in the previous section.</p>
300
301  <p>If you wish to define keywords for your systems you will need to create a
302  file <tt>etc/fcm.cfg</tt>. An example file, <tt>fcm.cfg.eg</tt>, is provided
303  which is a copy of the file currently used at the Met Office. For further
304  details please refer to the section <a href=
305  "../user_guide/system_admin.html#fcm-keywords">FCM keywords</a> in the System
306  Admin chapter of the User Guide.</p>
307
308  <p>The <tt>doc</tt> directory contains all the system documentation.</p>
309
310  <ul>
311    <li><tt>doc/release_notes</tt> contains these release notes. It also
312    contains the release notes for all previous versions which may be useful if
313    you have skipped any versions.</li>
314
315    <li><tt>doc/user_guide</tt> contains the FCM User Guide in both <a href=
316    "../user_guide/index.html">HTML</a> and <a href=
317    "../user_guide/fcm-user-guide.pdf">PDF</a> form.</li>
318
319    <li><tt>doc/design</tt> contains the <a href="../design/index.html">FCM
320    Detailed Design</a> document (currently in draft form).</li>
321
322    <li><tt>doc/standards</tt> contains the FCM <a href=
323    "../standards/perl_standard.html">Perl</a> and <a href=
324    "../standards/fortran_standard.html">Fortran</a> coding standards. The Perl
325    standard describes the standards followed by the FCM code. The Fortran
326    standard contains some <a href=
327    "../standards/fortran_standard.html#fcm">specific advice</a> on the best
328    way of writing Fortran code for use with FCM as well as more general advice
329    on good practise.</li>
330  </ul>
331
332  <p>The <tt>tutorial</tt> directory contains the files necessary to set up a
333  tutorial repository. This will allow you to follow the <a href=
334  "../user_guide/getting_started.html#tutorial">tutorial section</a> in the
335  User Guide.</p>
336
337  <ul>
338    <li>The file <tt>tutorial/repos/tutorial.dump</tt> should be loaded into an
339    empty repository using the <tt>svnadmin load</tt> command.</li>
340
341    <li>The hook scripts in <tt>tutorial/hook</tt> should then be installed in
342    this repository in order to prevent any commits to the trunk. Note that the
343    configuration file <tt>svnperms.conf</tt> assumes that the tutorial
344    repository is called <tt>tutorial_svn</tt>. Please edit this file if you
345    use a different name.</li>
346
347    <li>The repository should be configured to allow users write access. You
348    may find it easiest to simply allow anonymous access.</li>
349
350    <li>A Trac system should be configured associated with the Tutorial
351    repository. You then need to allow users write access. You may find it
352    easiest to set up a number of guest accounts for this purpose.</li>
353  </ul>
354
355  <p>The <tt>templates</tt> directory contains various example scripts which
356  you may find useful. Note that these scripts are all specific to the Met
357  Office and may contain hard coded paths and email addresses. They are
358  provided in the hope that you may find them useful as templates for setting
359  up similar scripts of your own. However, they should only be used after
360  careful review to adapt them to your environment. The contents are as
361  follows:</p>
362
363  <table summary="list of template scripts" border="1" width="100%">
364    <tr>
365      <th>Script</th>
366
367      <th>Description</th>
368    </tr>
369
370    <tr>
371      <th>templates/hook/pre-commit</th>
372
373      <td>
374        This script restricts write-access to the repository by checking the
375        following:
376
377        <ul>
378          <li>It executes the Subversion utility <tt>svnperms.py</tt> if it
379          exists. This utility checks whether the author of the current
380          transaction has enough permission to write to particular paths in the
381          repository.</li>
382
383          <li>It checks the disk space required by the current transaction. It
384          fails the commit if it requires more than 5Mb of disk space.</li>
385        </ul>
386      </td>
387    </tr>
388
389    <tr>
390      <th>templates/hook/post-commit</th>
391
392      <td>A simple post-commit hook script which runs the script
393      <tt>post-commit-background</tt> in the background.</td>
394    </tr>
395
396    <tr>
397      <th>templates/hook/post-commit-background</th>
398
399      <td>
400        This script runs in the background after each commit
401
402        <ul>
403          <li>It updates a <tt>&lt;repos&gt;.latest</tt> file with the latest
404          revision number.</li>
405
406          <li>It creates a dump of the new revision.</li>
407
408          <li>It calls the script <tt>background_updates.pl</tt> if it
409          exists.</li>
410        </ul>This script is installed as standard in all our repositories.
411      </td>
412    </tr>
413
414    <tr>
415      <th>templates/hook/background_updates.pl</th>
416
417      <td>An example of how you may want to set up a
418      <tt>background_updates.pl</tt> script to perform post-commit tasks for a
419      specific repository. This script uses a lock file to prevent multiple
420      commits in quick succession from causing problems.</td>
421    </tr>
422
423    <tr>
424      <th>templates/hook/pre-revprop-change</th>
425
426      <td>A simple pre-revprop-change hook script which runs the script
427      <tt>pre-revprop-change.pl</tt>.</td>
428    </tr>
429
430    <tr>
431      <th>templates/hook/pre-revprop-change.pl</th>
432
433      <td>If a user attempts to modify the log message of a changeset and
434      he/she is not the original author of the changeset, this script will
435      e-mail the original author. You can also set up a watch facility to
436      monitor changes of log messages that affect particular paths in the
437      repository. For further details please refer to the section <a href=
438      "../user_guide/system_admin.html#svn_watch">Watching changes in log
439      messages</a> in the System Admin chapter of the User Guide.</td>
440    </tr>
441
442    <tr>
443      <th>templates/hook/post-revprop-change</th>
444
445      <td>A simple post-revprop-change hook script which runs the script
446      <tt>post-revprop-change.py</tt>.</td>
447    </tr>
448
449    <tr>
450      <th>templates/hook/post-revprop-change.py</th>
451
452      <td>This hook script updates the Trac SQLite database following a
453      successful change in the log message.</td>
454    </tr>
455
456    <tr>
457      <th>templates/utils/cron_template.ksh</th>
458
459      <td>An example of how you might set up a cron job to make use of the
460      <tt>&lt;repos&gt;.latest</tt> file.</td>
461    </tr>
462
463    <tr>
464      <th>templates/utils/daily_cron</th>
465
466      <td>The cron job which we run each night. It verifies and backs up each
467      of our repositories, housekeeps the revision dumps created by
468      <tt>post-commit-background</tt> and backs up each of our Trac systems. It
469      also handles the distribution of FCM to various platforms at the Met
470      Office.</td>
471    </tr>
472
473    <tr>
474      <th>templates/utils/fcm_add_trac.pl</th>
475
476      <td>This script sets up a new Trac system and applies some configuration
477      options which we use by default at the Met Office.</td>
478    </tr>
479
480    <tr>
481      <th>templates/utils/recover_svn.pl</th>
482
483      <td>This script allows us to recover all of our Subversion repositories
484      by using the nightly backups and the repository dumps.</td>
485    </tr>
486  </table>
487</body>
488</html>
Note: See TracBrowser for help on using the repository browser.