source: XIOS/tools/FCM/doc/release_notes/1-1.html @ 1293

Last change on this file since 1293 was 81, checked in by ymipsl, 12 years ago

ajout FCM 1.5

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