[5129] | 1 | <!DOCTYPE html> |
---|
| 2 | <html> |
---|
| 3 | <head> |
---|
| 4 | <title>FCM 2-0 Release Notes</title> |
---|
| 5 | <meta name="author" content="FCM team" /> |
---|
| 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
---|
| 7 | <link rel="icon" href="../etc/fcm-icon.png" type="image/png" /> |
---|
| 8 | <link rel="shortcut icon" href="../etc/fcm-icon.png" type="image/png" /> |
---|
| 9 | <link href="../etc/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" /> |
---|
| 10 | <link href="../etc/fcm.css" rel="stylesheet" media="screen" /> |
---|
| 11 | </head> |
---|
| 12 | <body> |
---|
| 13 | <div class="navbar navbar-inverse"> |
---|
| 14 | <div class="container-fluid"> |
---|
| 15 | <div class="navbar-header"> |
---|
| 16 | <a class="navbar-brand" href=".."><span class="fcm-version">FCM</span></a> |
---|
| 17 | </div> |
---|
| 18 | <div class="collapse navbar-collapse"> |
---|
| 19 | <ul class="nav navbar-nav"> |
---|
| 20 | <li><a href="../installation/">Installation</a></li> |
---|
| 21 | |
---|
| 22 | <li><a href="../user_guide/">User Guide</a></li> |
---|
| 23 | </ul> |
---|
| 24 | </div> |
---|
| 25 | </div> |
---|
| 26 | </div> |
---|
| 27 | |
---|
| 28 | <div class="page-header"> |
---|
| 29 | <div class="fcm-page-content pull-right well well-sm"></div> |
---|
| 30 | <h1>FCM 2-0 Release Notes <small>11 March 2011</small></h1> |
---|
| 31 | </div> |
---|
| 32 | |
---|
| 33 | <div class="container"> |
---|
| 34 | <div class="row"> |
---|
| 35 | <div class="col-md-12"> |
---|
| 36 | |
---|
| 37 | <p>These are the release notes for FCM 2-0. You can use this release of FCM |
---|
| 38 | freely under the terms of the FCM LICENSE, which you should receive with the |
---|
| 39 | distribution of this release.</p> |
---|
| 40 | |
---|
| 41 | <p>FCM is maintained by the FCM team at the Met Office. Please feedback any |
---|
| 42 | bug reports or feature requests to us by <a href= |
---|
| 43 | "mailto:fcm-team@metoffice.gov.uk">e-mail</a>.</p> |
---|
| 44 | |
---|
| 45 | <h2 id="new">What's New?</h2> |
---|
| 46 | |
---|
| 47 | <dl> |
---|
| 48 | <dt><code><a href="../user_guide/command_ref.html#fcm-make">fcm |
---|
| 49 | make</a></code>: new command</dt> |
---|
| 50 | |
---|
| 51 | <dd>New extract/build system. Deprecates <code>fcm extract</code> and |
---|
| 52 | <code>fcm build</code>. See <a href="../user_guide/make.html">User Guide |
---|
| 53 | > FCM Make</a> for detail on how to use the new system. See also |
---|
| 54 | <a href="#new.make">fcm make: key differences compared with fcm |
---|
| 55 | extract/build</a>.</dd> |
---|
| 56 | |
---|
| 57 | <dt><code><a href="../user_guide/command_ref.html#fcm-branch-create">fcm |
---|
| 58 | branch-create</a></code>: new command</dt> |
---|
| 59 | |
---|
| 60 | <dd>Deprecates <code>fcm branch --create</code>.</dd> |
---|
| 61 | |
---|
| 62 | <dt><code><a href="../user_guide/command_ref.html#fcm-branch-delete">fcm |
---|
| 63 | branch-delete</a></code>: new command</dt> |
---|
| 64 | |
---|
| 65 | <dd>Deprecates <code>fcm branch --delete</code>.</dd> |
---|
| 66 | |
---|
| 67 | <dt><code><a href="../user_guide/command_ref.html#fcm-branch-diff">fcm |
---|
| 68 | branch-diff</a></code>: new command</dt> |
---|
| 69 | |
---|
| 70 | <dd>Deprecates <code>fcm diff --branch</code>.</dd> |
---|
| 71 | |
---|
| 72 | <dt><code><a href="../user_guide/command_ref.html#fcm-branch-info">fcm |
---|
| 73 | branch-info</a></code>: new command</dt> |
---|
| 74 | |
---|
| 75 | <dd>Deprecates <code>fcm branch --info</code>.</dd> |
---|
| 76 | |
---|
| 77 | <dt><code><a href="../user_guide/command_ref.html#fcm-branch-list">fcm |
---|
| 78 | branch-list</a></code>: new command</dt> |
---|
| 79 | |
---|
| 80 | <dd>Deprecates <code>fcm branch --list</code>.</dd> |
---|
| 81 | |
---|
| 82 | <dt><code><a href="../user_guide/command_ref.html#fcm-browse">fcm |
---|
| 83 | browse</a></code></dt> |
---|
| 84 | |
---|
| 85 | <dd>This is now the preferred name of <code>fcm trac</code> or <code>fcm |
---|
| 86 | www</code>.</dd> |
---|
| 87 | |
---|
| 88 | <dt><code><a href="../user_guide/command_ref.html#fcm-cfg-print">fcm |
---|
| 89 | cfg-print</a></code></dt> |
---|
| 90 | |
---|
| 91 | <dd>This is now the preferred name of <code>fcm cfg</code>.</dd> |
---|
| 92 | |
---|
| 93 | <dt><code><a href="../user_guide/command_ref.html#fcm-export-items">fcm |
---|
| 94 | export-items</a></code>: new command</dt> |
---|
| 95 | |
---|
| 96 | <dd>Deprecates <code>fcm_update_version_dir.pl</code>.</dd> |
---|
| 97 | |
---|
| 98 | <dt>Configuration for keywords</dt> |
---|
| 99 | |
---|
| 100 | <dd>New syntax and location. See <a href= |
---|
| 101 | "../user_guide/annex_cfg.html#keyword">User Guide > Annex: FCM |
---|
| 102 | Configuration File > FCM Keyword Configuration</a> for detail. |
---|
| 103 | Equivalent settings in <samp>$FCM/etc/fcm.cfg</samp> will no longer work. |
---|
| 104 | Those in <samp>$HOME/.fcm</samp> should continue to work. We would |
---|
| 105 | encourage users to migrate to the new syntax and location.</dd> |
---|
| 106 | |
---|
| 107 | <dt>Configuration for external commands</dt> |
---|
| 108 | |
---|
| 109 | <dd>New syntax and location. See <a href= |
---|
| 110 | "../user_guide/annex_cfg.html#external">User Guide > Annex: FCM |
---|
| 111 | Configuration File > FCM External Configuration</a> for detail. |
---|
| 112 | Equivalent settings in <samp>$FCM/etc/fcm.cfg</samp> and |
---|
| 113 | <samp>$HOME/.fcm</samp> will no longer work.</dd> |
---|
| 114 | </dl> |
---|
| 115 | |
---|
| 116 | <h3 id="new.make">fcm make: key differences compared with fcm |
---|
| 117 | extract/build</h3> |
---|
| 118 | |
---|
| 119 | <p>Single command and framework of a configurable chain of <dfn>steps</dfn>, |
---|
| 120 | e.g. extract, mirror, preprocess, build, etc.</p> |
---|
| 121 | |
---|
| 122 | <ul> |
---|
| 123 | <li>as opposed to 2 separate commands with fixed steps.</li> |
---|
| 124 | |
---|
| 125 | <li>possible to set up multiple builds with different configurations from |
---|
| 126 | the same extract.</li> |
---|
| 127 | </ul> |
---|
| 128 | |
---|
| 129 | <p>New configuration file format, with more powerful syntax and declarations. |
---|
| 130 | E.g.:</p> |
---|
| 131 | |
---|
| 132 | <ul> |
---|
| 133 | <li>Improved support for specifying <dfn>name-spaces</dfn> (previously |
---|
| 134 | <dfn>package</dfn> or <dfn>sub-package</dfn>) for a declaration.</li> |
---|
| 135 | |
---|
| 136 | <li>Improved support for declaring and referencing variables.</li> |
---|
| 137 | |
---|
| 138 | <li>Improved support for space and other meta-characters.</li> |
---|
| 139 | </ul> |
---|
| 140 | |
---|
| 141 | <p>extract: automatically associates location keywords to source tree |
---|
| 142 | locations. E.g.:</p> |
---|
| 143 | |
---|
| 144 | <ul> |
---|
| 145 | <li> |
---|
| 146 | <code>fcm extract</code> configuration requires repeated declarations: |
---|
| 147 | <pre> |
---|
| 148 | cfg::type ext |
---|
| 149 | repos::foo::base fcm:foo/trunk |
---|
| 150 | expsrc::foo::base |
---|
| 151 | repos::bar::base fcm:bar/trunk |
---|
| 152 | expsrc::bar::base |
---|
| 153 | </pre> |
---|
| 154 | </li> |
---|
| 155 | |
---|
| 156 | <li> |
---|
| 157 | <code>fcm make</code> configuration is much simpler: |
---|
| 158 | <pre> |
---|
| 159 | steps = extract |
---|
| 160 | extract.ns = foo bar |
---|
| 161 | </pre> |
---|
| 162 | </li> |
---|
| 163 | </ul> |
---|
| 164 | |
---|
| 165 | <p>extract: clearly distinguishes a base source tree from the diff source |
---|
| 166 | trees for each project. E.g.:</p> |
---|
| 167 | |
---|
| 168 | <ul> |
---|
| 169 | <li> |
---|
| 170 | <code>fcm extract</code> configuration requires arbitrary IDs for each |
---|
| 171 | source tree, separate revision declarations, and assumes that the first |
---|
| 172 | declared tree for a project is the <dfn>base</dfn>: |
---|
| 173 | <pre> |
---|
| 174 | cfg::type ext |
---|
| 175 | repos::foo::base fcm:foo/trunk |
---|
| 176 | revision::foo::base 1234 |
---|
| 177 | expsrc::foo::base |
---|
| 178 | repos::foo::b1 fcm:foo/branches/dev/fred/r1234_b1 |
---|
| 179 | revision::foo::b1 2345 |
---|
| 180 | repos::foo::b2 fcm:foo/branches/dev/bob/r1234_b2 |
---|
| 181 | repos::foo::b3 fcm:foo/branches/dev/alice/r1234_b3 |
---|
| 182 | </pre> |
---|
| 183 | </li> |
---|
| 184 | |
---|
| 185 | <li> |
---|
| 186 | <code>fcm make</code> configuration uses different declarations for the |
---|
| 187 | location of the <dfn>base</dfn> source tree and the locations of the |
---|
| 188 | <dfn>diff</dfn> source trees: |
---|
| 189 | <pre> |
---|
| 190 | steps = extract |
---|
| 191 | extract.ns = foo |
---|
| 192 | extract.location[foo] = trunk@1234 |
---|
| 193 | extract.location{diff}[foo] = \ |
---|
| 194 | branches/dev/fred/r1234_b1@2345 \ |
---|
| 195 | branches/dev/bob/r1234_b2 \ |
---|
| 196 | branches/dev/alice/r1234_b3 |
---|
| 197 | </pre> |
---|
| 198 | </li> |
---|
| 199 | </ul> |
---|
| 200 | |
---|
| 201 | <p>extract: can easily filter parts of a project source tree, and/or change |
---|
| 202 | the root of the extract tree. E.g.:</p> |
---|
| 203 | |
---|
| 204 | <ul> |
---|
| 205 | <li> |
---|
| 206 | <code>fcm extract</code> configuration can cause confusion: |
---|
| 207 | <pre> |
---|
| 208 | cfg::type ext |
---|
| 209 | repos::um::base fcm:um/trunk/src |
---|
| 210 | revision::foo::base vn7.7 |
---|
| 211 | expsrc::um::base |
---|
| 212 | repos::um::b1 fcm:um/branches/dev/fred/vn7.7_b1/src |
---|
| 213 | repos::um::b2 fcm:um/branches/dev/bob/vn7.7_b2/src |
---|
| 214 | repos::um::b3 fcm:um/branches/dev/alice/vn7.7_b3/src |
---|
| 215 | </pre> |
---|
| 216 | </li> |
---|
| 217 | |
---|
| 218 | <li> |
---|
| 219 | <code>fcm make</code> configuration is clearer and has more features: |
---|
| 220 | <pre> |
---|
| 221 | steps = extract |
---|
| 222 | extract.ns = um |
---|
| 223 | extract.path-root[um] = src |
---|
| 224 | extract.path-excl[um] = configs scm |
---|
| 225 | extract.location[um] = trunk@vn7.7 |
---|
| 226 | extract.location{diff}[um] = \ |
---|
| 227 | branches/dev/fred/vn7.7_b1 \ |
---|
| 228 | branches/dev/bob/vn7.7_b2 \ |
---|
| 229 | branches/dev/alice/vn7.7_b3 |
---|
| 230 | </pre> |
---|
| 231 | </li> |
---|
| 232 | </ul> |
---|
| 233 | |
---|
| 234 | <p>extract: works with project source trees as opposed to individual source |
---|
| 235 | directories.</p> |
---|
| 236 | |
---|
| 237 | <ul> |
---|
| 238 | <li>fewer calls to the version control system servers.</li> |
---|
| 239 | |
---|
| 240 | <li>deleted directories are now handled correctly.</li> |
---|
| 241 | </ul> |
---|
| 242 | |
---|
| 243 | <p>extract: can use multiple processes to retrieve source trees information |
---|
| 244 | and to export source tree files from the version control system.</p> |
---|
| 245 | |
---|
| 246 | <ul> |
---|
| 247 | <li>extract of multiple projects and/or with multiple source trees can be |
---|
| 248 | much faster.</li> |
---|
| 249 | </ul> |
---|
| 250 | |
---|
| 251 | <p>mirror: is now an independent step.</p> |
---|
| 252 | |
---|
| 253 | <ul> |
---|
| 254 | <li>can set up multiple mirror steps to mirror an extract to alternate |
---|
| 255 | destinations.</li> |
---|
| 256 | </ul> |
---|
| 257 | |
---|
| 258 | <p>build: can use multiple processes to analyse the source files for |
---|
| 259 | dependencies and other information.</p> |
---|
| 260 | |
---|
| 261 | <ul> |
---|
| 262 | <li>multi-process build is much faster.</li> |
---|
| 263 | </ul> |
---|
| 264 | |
---|
| 265 | <p>build: uses an internal task manager and runner - more efficient logic |
---|
| 266 | possible:</p> |
---|
| 267 | |
---|
| 268 | <ul> |
---|
| 269 | <li>no longer requires GNU make.</li> |
---|
| 270 | |
---|
| 271 | <li>no longer requires dummy files such as <samp>*.done |
---|
| 272 | *.flags</samp>.</li> |
---|
| 273 | |
---|
| 274 | <li>uses MD5 checksums to determine whether sources and targets are out of |
---|
| 275 | date - as opposed to time stamps.</li> |
---|
| 276 | |
---|
| 277 | <li>fails the build if duplicated targets are detected if those targets are |
---|
| 278 | required by the build.</li> |
---|
| 279 | </ul> |
---|
| 280 | |
---|
| 281 | <p>build: has improved the logic for building Fortran program units.</p> |
---|
| 282 | |
---|
| 283 | <ul> |
---|
| 284 | <li>detects correctly multiple top program units in the same source |
---|
| 285 | file.</li> |
---|
| 286 | |
---|
| 287 | <li>sets up a module usage as an include dependency on the |
---|
| 288 | <samp>*.mod</samp> file instead of the <samp>*.o</samp> file - reduces the |
---|
| 289 | chance of module compile cascades in incremental mode.</li> |
---|
| 290 | |
---|
| 291 | <li>only generates interface files on demand.</li> |
---|
| 292 | </ul> |
---|
| 293 | |
---|
| 294 | <p>build: has improved facilities for sources and targets selection.</p> |
---|
| 295 | |
---|
| 296 | <ul> |
---|
| 297 | <li>can now select targets by name-space, category and task.</li> |
---|
| 298 | |
---|
| 299 | <li>has better documentation on the relationship between source files and |
---|
| 300 | build targets.</li> |
---|
| 301 | |
---|
| 302 | <li>note that target declarations are not cumulative and that targets are |
---|
| 303 | inherited by default (unlike with <code>fcm build</code>).</li> |
---|
| 304 | </ul> |
---|
| 305 | |
---|
| 306 | <p>build: automatically uses the Fortran compiler to link Fortran executables |
---|
| 307 | and the C compiler to link C executables.</p> |
---|
| 308 | |
---|
| 309 | <p>build: has more diagnostics, e.g. on source dependencies, target build |
---|
| 310 | tree, etc.</p> |
---|
| 311 | |
---|
| 312 | <p>preprocess: is now an independent step, but shares all the logic of the |
---|
| 313 | build system, e.g.:</p> |
---|
| 314 | |
---|
| 315 | <ul> |
---|
| 316 | <li>preprocessing dependency analysis and target update can be performed in |
---|
| 317 | multiple processes.</li> |
---|
| 318 | |
---|
| 319 | <li>note that file extensions are not modified by the preprocess step |
---|
| 320 | unlike with <code>fcm build</code> which changed, for example |
---|
| 321 | <samp>.F90</samp> extensions to <samp>.f90</samp>.</li> |
---|
| 322 | </ul> |
---|
| 323 | |
---|
| 324 | <p>Other notable changes:</p> |
---|
| 325 | |
---|
| 326 | <ul> |
---|
| 327 | <li>By default, <code>fcm make</code> will always rebuild link targets and |
---|
| 328 | re-install scripts in inherited builds. Therefore, to use the executables |
---|
| 329 | from a build all you need to do is set your <var>PATH</var> environment |
---|
| 330 | variable to point to <samp>$DEST/build/bin/</samp> (where <var>$DEST</var> |
---|
| 331 | is the destination of the make). Note that there is no |
---|
| 332 | <samp>fcm_env.sh</samp> file produced by <code>fcm make</code>.</li> |
---|
| 333 | |
---|
| 334 | <li><code>fcm extract</code> has the ability to fail if the declared |
---|
| 335 | revision of a branch does not correspond to a changeset of that branch. |
---|
| 336 | Furthermore, it can output the latest revision of a branch if the declared |
---|
| 337 | revision is not the latest. <code>fcm make</code> does not support |
---|
| 338 | this.</li> |
---|
| 339 | |
---|
| 340 | <li>There is no equivalent of <code><a href= |
---|
| 341 | "../user_guide/command_ref.html#fcm-cmp-ext-cfg">fcm cmp-ext-cfg</a></code> |
---|
| 342 | for FCM make configurations.</li> |
---|
| 343 | |
---|
| 344 | <li><code>fcm make</code> does not support defining a separate linker - it |
---|
| 345 | always uses the compiler of the source file containing the main program |
---|
| 346 | (which is the default with <code>fcm build</code>).</li> |
---|
| 347 | |
---|
| 348 | <li><code>fcm make</code> does not recognise existing binaries as install |
---|
| 349 | targets (unlike <code>fcm build</code>). This feature is currently used to |
---|
| 350 | allow the Met Office's Suite Control System (SCS) to "build" suites but is |
---|
| 351 | no longer considered the best method. SCS will continue to use <code>fcm |
---|
| 352 | build</code> until such time as a better method is adopted or the system is |
---|
| 353 | retired.</li> |
---|
| 354 | |
---|
| 355 | <li><code>fcm make</code> recognises data files as install targets in a |
---|
| 356 | similar way to <code>fcm build</code>. However, the default destination of |
---|
| 357 | such targets is now the full name-space under the <samp>etc/</samp> |
---|
| 358 | sub-directory.</li> |
---|
| 359 | |
---|
| 360 | <li><code>fcm make</code> supports the building of libraries but does not |
---|
| 361 | generate the relevant exclude dependency configuration as is done by |
---|
| 362 | <code>fcm build</code>.</li> |
---|
| 363 | |
---|
| 364 | <li><code>fcm make</code> has no equivalent of the <code>--archive</code> |
---|
| 365 | nor the <code>--targets</code> options provided by <code>fcm |
---|
| 366 | build</code>.</li> |
---|
| 367 | |
---|
| 368 | <li><code>fcm build</code> recognises a file name without its extension as |
---|
| 369 | a sub-package name. This is not true with <code>fcm make</code> which only |
---|
| 370 | recognises the full file name as a namespace.</li> |
---|
| 371 | </ul> |
---|
| 372 | |
---|
| 373 | <p>In addition to the differences noted above, <code>fcm make</code> fixes |
---|
| 374 | various subtle problems which can occur with <code>fcm extract</code> and |
---|
| 375 | <code>fcm build</code> as a result of limitations in the internal design. |
---|
| 376 | Overall, <code>fcm make</code> is much better and we recommend that all users |
---|
| 377 | migrate to it. <code>fcm extract</code> and <code>fcm build</code> will |
---|
| 378 | continue to be maintained for legacy systems but will not be developed |
---|
| 379 | further.</p> |
---|
| 380 | |
---|
| 381 | <h2 id="fix">Minor Changes and Bug Fixes</h2> |
---|
| 382 | |
---|
| 383 | <dl> |
---|
| 384 | <dt><code>fcm build</code></dt> |
---|
| 385 | |
---|
| 386 | <dd> |
---|
| 387 | <p>Handle directory names with a dot extension.</p> |
---|
| 388 | |
---|
| 389 | <p>Correct search path for inherited configuration file.</p> |
---|
| 390 | |
---|
| 391 | <p>Always export <var>OBJECTS</var> in generated |
---|
| 392 | <samp>Makefile</samp>.</p> |
---|
| 393 | </dd> |
---|
| 394 | |
---|
| 395 | <dt><code>fcm cfg</code></dt> |
---|
| 396 | |
---|
| 397 | <dd> |
---|
| 398 | <p>Now an alias of <code>fcm cfg-print</code>.</p> |
---|
| 399 | |
---|
| 400 | <p>The default behaviour is to parse FCM 2 configuration files. To parse |
---|
| 401 | FCM 1 configuration files, use the <code>--fcm1</code> option.</p> |
---|
| 402 | |
---|
| 403 | <p>The values in the output will no longer be lined up.</p> |
---|
| 404 | </dd> |
---|
| 405 | |
---|
| 406 | <dt><code>fcm extract</code></dt> |
---|
| 407 | |
---|
| 408 | <dd> |
---|
| 409 | <p>Fix double slashes in cache of extract with project root level |
---|
| 410 | files.</p> |
---|
| 411 | |
---|
| 412 | <p>Correct search path for inherited configuration file.</p> |
---|
| 413 | |
---|
| 414 | <p>Fix incremental mode behaviour of targets with <dfn>deleted, |
---|
| 415 | overriding inherited</dfn> status.</p> |
---|
| 416 | </dd> |
---|
| 417 | |
---|
| 418 | <dt><code>fcm keyword-print</code></dt> |
---|
| 419 | |
---|
| 420 | <dd>Change in output format to match the new configuration file |
---|
| 421 | format.</dd> |
---|
| 422 | |
---|
| 423 | <dt><code>fcm mkpatch</code></dt> |
---|
| 424 | |
---|
| 425 | <dd> |
---|
| 426 | <p>Don't use patch file if PDF file detected.</p> |
---|
| 427 | |
---|
| 428 | <p>Handle property changes to directories.</p> |
---|
| 429 | |
---|
| 430 | <p>Handle copies within new directories.</p> |
---|
| 431 | |
---|
| 432 | <p>Handle replaced directories.</p> |
---|
| 433 | |
---|
| 434 | <p>Fix handling of symbolic links.</p> |
---|
| 435 | |
---|
| 436 | <p>Fix pattern match used when checking for excluded or copied paths.</p> |
---|
| 437 | |
---|
| 438 | <p>Use <code>--no-backup-if-mismatch</code> option to patch command to |
---|
| 439 | ensure backup files not created if patch does not match exactly.</p> |
---|
| 440 | </dd> |
---|
| 441 | |
---|
| 442 | <dt><code>fcm</code> direct wrappers to <code>svn</code> commands</dt> |
---|
| 443 | |
---|
| 444 | <dd>No longer prints <samp>=> svn ...</samp> on STDOUT.</dd> |
---|
| 445 | |
---|
| 446 | <dt>Misc fixes</dt> |
---|
| 447 | |
---|
| 448 | <dd>Misc fixes related to changes in Perl 5.10 and Subversion 1.6.</dd> |
---|
| 449 | </dl> |
---|
| 450 | |
---|
| 451 | <h2 id="issues">Known Issues</h2> |
---|
| 452 | |
---|
| 453 | <dl> |
---|
| 454 | <dt>Build inheritance limitation: handling of include files</dt> |
---|
| 455 | |
---|
| 456 | <dd>See the <a href="../user_guide/make.html#build.inherit">User Guide > |
---|
| 457 | FCM Make > Build > Build Inheritance</a> for detail.</dd> |
---|
| 458 | </dl> |
---|
| 459 | |
---|
| 460 | <h2 id="req">System Requirements</h2> |
---|
| 461 | |
---|
| 462 | <h3 id="req.perl">Perl</h3> |
---|
| 463 | |
---|
| 464 | <p>The core part of FCM is a set of Perl scripts and modules. At the Met |
---|
| 465 | Office, FCM runs on:</p> |
---|
| 466 | |
---|
| 467 | <dl> |
---|
| 468 | <dt>Perl 5.8.2 on AIX 5.3</dt> |
---|
| 469 | |
---|
| 470 | <dd> |
---|
| 471 | <p><code>Text::ParseWords</code> (core Perl module) is upgraded to |
---|
| 472 | version 3.22.</p> |
---|
| 473 | |
---|
| 474 | <p>Met Office users do not use the code management commands and the |
---|
| 475 | extract system on this platform.</p> |
---|
| 476 | </dd> |
---|
| 477 | |
---|
| 478 | <dt>Perl 5.8.5 on RHEL 4</dt> |
---|
| 479 | |
---|
| 480 | <dd> |
---|
| 481 | <p><a href= |
---|
| 482 | "http://search.cpan.org/~gaas/libwww-perl/lib/HTTP/Date.pm">HTTP::Date</a> |
---|
| 483 | in <a href="http://search.cpan.org/~gaas/libwww-perl/">libwww-perl</a> is |
---|
| 484 | required by <code>fcm extract</code> and the extract system in <code>fcm |
---|
| 485 | make</code>. (libwww-perl 5.79 installed.)</p> |
---|
| 486 | |
---|
| 487 | <p><a href= |
---|
| 488 | "http://search.cpan.org/~enno/libxml-enno/lib/XML/DOM.pm">XML::DOM</a> in |
---|
| 489 | <a href="http://search.cpan.org/~enno/libxml-enno/">libxml-enno</a> is |
---|
| 490 | required by the code management commands. (libxml-enno 1.02 |
---|
| 491 | installed.)</p> |
---|
| 492 | |
---|
| 493 | <p><a href="http://search.cpan.org/~srezic/Tk/">Tk</a> is required by the |
---|
| 494 | <code>fcm gui</code> command. (Tk 804.027 installed.)</p> |
---|
| 495 | </dd> |
---|
| 496 | </dl> |
---|
| 497 | |
---|
| 498 | <h3 id="req.svn">Subversion</h3> |
---|
| 499 | |
---|
| 500 | <p>To use the code management commands (and relevant parts of the extract |
---|
| 501 | system) you need to have <a href= |
---|
| 502 | "http://subversion.tigris.org/">Subversion</a> installed.</p> |
---|
| 503 | |
---|
| 504 | <p>FCM requires Subversion 1.4.x or above. At the Met Office we are currently |
---|
| 505 | using Subversion 1.4.3.</p> |
---|
| 506 | |
---|
| 507 | <p>Note: you can use the extract system to mirror code to a remote platform |
---|
| 508 | for building. Therefore it is only necessary to have Subversion installed on |
---|
| 509 | the platform where you do your code development. If you use other platforms |
---|
| 510 | purely for building and running then you do not need to have Subversion |
---|
| 511 | installed on these platforms.</p> |
---|
| 512 | |
---|
| 513 | <h3 id="req.trac">Trac</h3> |
---|
| 514 | |
---|
| 515 | <p>The use of <a href="http://trac.edgewall.org/">Trac</a> is entirely |
---|
| 516 | optional (although highly recommended if you are using Subversion).</p> |
---|
| 517 | |
---|
| 518 | <p>At the Met Office we are currently using Trac 0.11.7. Note:</p> |
---|
| 519 | |
---|
| 520 | <ul> |
---|
| 521 | <li>The <code>--trac</code> and <code>--wiki</code> options to the |
---|
| 522 | <code>fcm diff --branch</code> command allow you to view branch differences |
---|
| 523 | using Trac. This requires Trac 0.10 or above.</li> |
---|
| 524 | |
---|
| 525 | <li>Some of the example scripts in the <samp>examples/</samp> directory |
---|
| 526 | require Trac 0.11.</li> |
---|
| 527 | </ul> |
---|
| 528 | |
---|
| 529 | <h3 id="req.other">Other Requirements</h3> |
---|
| 530 | |
---|
| 531 | <p>The <code>fcm conflicts</code> command requires <a href= |
---|
| 532 | "http://furius.ca/xxdiff/">xxdiff</a>. At the Met Office we are currently |
---|
| 533 | using version 3.1. The <code>fcm diff --graphical</code> command also uses |
---|
| 534 | xxdiff by default although other graphical diff tools can also be used.</p> |
---|
| 535 | |
---|
| 536 | <p>The <code>fcm make</code> command uses <code>gzip</code>. At the Met |
---|
| 537 | Office we are currently using gzip 1.2.4 on AIX 5.3 and gzip 1.3.3 on RHEL |
---|
| 538 | 4.</p> |
---|
| 539 | |
---|
| 540 | <p>The extract system uses <code>diff3</code>, (which is part of <a href= |
---|
| 541 | "http://www.gnu.org/software/diffutils/">GNU diffutils</a>), to merge |
---|
| 542 | together changes where the same file is modified by two different branches |
---|
| 543 | (compared with the base branch). At the Met Office we are currently using |
---|
| 544 | version 2.8.1.</p> |
---|
| 545 | |
---|
| 546 | <p>The mirror system uses <a href="http://rsync.samba.org/">rsync</a> to |
---|
| 547 | mirror source file to another machine. At the Met Office we are currently |
---|
| 548 | using version 2.6.3</p> |
---|
| 549 | |
---|
| 550 | <p>The deprecated <code>fcm build</code> requires <a href= |
---|
| 551 | "http://www.gnu.org/software/make/make.html">GNU make</a>. At the Met Office |
---|
| 552 | we are currently using version 3.80.</p> |
---|
| 553 | |
---|
| 554 | <p>FCM is intended to run on a Unix/Linux system. It is currently used at the |
---|
| 555 | Met Office on Linux (RHEL 4.8) and AIX 5.3.</p> |
---|
| 556 | |
---|
| 557 | <h2 id="ins">Installation</h2> |
---|
| 558 | |
---|
| 559 | <p>FCM is distributed in the form of a compressed tar file. Un-pack the tar |
---|
| 560 | file into an appropriate location on your system. Add the <samp>bin/</samp> |
---|
| 561 | directory into your <var>PATH</var> environment variable. Once you have done |
---|
| 562 | this you should now have full access to the FCM system, assuming that you |
---|
| 563 | have met the requirements described in the previous section.</p> |
---|
| 564 | |
---|
| 565 | <p>You should find the following contents in the distribution:</p> |
---|
| 566 | |
---|
| 567 | <dl> |
---|
| 568 | <dt>README</dt> |
---|
| 569 | |
---|
| 570 | <dd>The README file contains the internal revision number of the |
---|
| 571 | release.</dd> |
---|
| 572 | |
---|
| 573 | <dt>COPYRIGHT.txt<br /> |
---|
| 574 | LICENSE.html</dt> |
---|
| 575 | |
---|
| 576 | <dd>The FCM license and other copyright information.</dd> |
---|
| 577 | |
---|
| 578 | <dt>bin/</dt> |
---|
| 579 | |
---|
| 580 | <dd>Contains the <code>fcm</code> command and other utilities.</dd> |
---|
| 581 | |
---|
| 582 | <dt>doc/</dt> |
---|
| 583 | |
---|
| 584 | <dd>System documentation.</dd> |
---|
| 585 | |
---|
| 586 | <dt>doc/release_notes/</dt> |
---|
| 587 | |
---|
| 588 | <dd>Contains these release notes. It also contains the release notes for |
---|
| 589 | all previous versions which may be useful if you have skipped any |
---|
| 590 | versions.</dd> |
---|
| 591 | |
---|
| 592 | <dt>doc/user_guide/</dt> |
---|
| 593 | |
---|
| 594 | <dd>Contains the <a href="../user_guide/">FCM User Guide</a>.</dd> |
---|
| 595 | |
---|
| 596 | <dt>doc/standards/</dt> |
---|
| 597 | |
---|
| 598 | <dd>Contains the FCM <a href="../standards/perl_standard.html">Perl</a> and |
---|
| 599 | <a href="../standards/fortran_standard.html">Fortran</a> coding standards. |
---|
| 600 | The Perl standard describes the standards followed by the FCM code. The |
---|
| 601 | Fortran standard contains some <a href= |
---|
| 602 | "../standards/fortran_standard.html#fcm">specific advice</a> on the best |
---|
| 603 | way of writing Fortran code for use with FCM as well as more general advice |
---|
| 604 | on good practice.</dd> |
---|
| 605 | |
---|
| 606 | <dt>doc/collaboration/</dt> |
---|
| 607 | |
---|
| 608 | <dd>Contains the <a href="../collaboration/index.html">External |
---|
| 609 | Distribution & Collaboration for FCM Projects</a> document which |
---|
| 610 | discusses how projects configured under FCM can be distributed |
---|
| 611 | externally.</dd> |
---|
| 612 | |
---|
| 613 | <dt>etc/</dt> |
---|
| 614 | |
---|
| 615 | <dd>Miscellaneous items, including the <samp>fcm/keyword.cfg.eg</samp> file. |
---|
| 616 | If you wish to define keywords for your site you will need to create the |
---|
| 617 | <samp>etc/fcm/keyword.cfg</samp> file. An example file, |
---|
| 618 | <samp>fcm/keyword.cfg.eg</samp>, is provided which is a copy of the file |
---|
| 619 | currently used at the Met Office. For further details please refer to the |
---|
| 620 | section <a href="../user_guide/system_admin.html#fcm-keywords">FCM |
---|
| 621 | keywords</a> in the System Admin chapter of the User Guide.</dd> |
---|
| 622 | |
---|
| 623 | <dt>examples/</dt> |
---|
| 624 | |
---|
| 625 | <dd>Contains various example scripts which you may find useful. Note that |
---|
| 626 | these scripts are all specific to the Met Office and may contain hard coded |
---|
| 627 | paths and email addresses. They are provided in the hope that you may find |
---|
| 628 | them useful as examples for setting up similar scripts of your own. |
---|
| 629 | However, they should only be used after careful review to adapt them to |
---|
| 630 | your environment.</dd> |
---|
| 631 | |
---|
| 632 | <dt>examples/etc/regular-update.eg</dt> |
---|
| 633 | |
---|
| 634 | <dd>An example of how you might set up a cron job to make use of the |
---|
| 635 | <samp><repos>.latest</samp> file (see |
---|
| 636 | <code>examples/svn-hooks/post-commit-background</code>).</dd> |
---|
| 637 | |
---|
| 638 | <dt>examples/lib/</dt> |
---|
| 639 | |
---|
| 640 | <dd>Contains the <code>FCM::Admin::*</code> Perl library, which implements |
---|
| 641 | the functionalities of the FCM admin utility commands.</dd> |
---|
| 642 | |
---|
| 643 | <dt>examples/sbin/</dt> |
---|
| 644 | |
---|
| 645 | <dd>Contains a selection of useful admin utility commands.</dd> |
---|
| 646 | |
---|
| 647 | <dt>examples/svn-hooks/pre-commit</dt> |
---|
| 648 | |
---|
| 649 | <dd> |
---|
| 650 | This script restricts write-access to the repository by checking the |
---|
| 651 | following: |
---|
| 652 | |
---|
| 653 | <ul> |
---|
| 654 | <li>It executes the Subversion utility <code>svnperms.py</code> if it, |
---|
| 655 | and the associated <samp>svnperms.conf</samp> file, exist. This utility |
---|
| 656 | checks whether the author of the current transaction has enough |
---|
| 657 | permission to write to particular paths in the repository.</li> |
---|
| 658 | |
---|
| 659 | <li>It checks the disk space required by the current transaction. It |
---|
| 660 | fails the commit if it requires more than 5Mb of disk space.</li> |
---|
| 661 | </ul> |
---|
| 662 | </dd> |
---|
| 663 | |
---|
| 664 | <dt>examples/svn-hooks/post-commit</dt> |
---|
| 665 | |
---|
| 666 | <dd>A simple post-commit hook script which runs the script |
---|
| 667 | <code>post-commit-background</code> in the background.</dd> |
---|
| 668 | |
---|
| 669 | <dt>examples/svn-hooks/post-commit-background</dt> |
---|
| 670 | |
---|
| 671 | <dd> |
---|
| 672 | This script runs in the background after each commit. |
---|
| 673 | |
---|
| 674 | <ul> |
---|
| 675 | <li>It updates a <samp><repos>.latest</samp> file with the latest |
---|
| 676 | revision number.</li> |
---|
| 677 | |
---|
| 678 | <li>It creates a dump of the new revision.</li> |
---|
| 679 | |
---|
| 680 | <li>It calls <code>post-commit-background-custom</code> if it |
---|
| 681 | exists.</li> |
---|
| 682 | </ul> |
---|
| 683 | </dd> |
---|
| 684 | |
---|
| 685 | <dt>examples/svn-hooks/pre-revprop-change</dt> |
---|
| 686 | |
---|
| 687 | <dd>A simple pre-revprop-change hook script which runs the script |
---|
| 688 | <code>pre-revprop-change.pl</code>.</dd> |
---|
| 689 | |
---|
| 690 | <dt>examples/svn-hooks/pre-revprop-change.pl</dt> |
---|
| 691 | |
---|
| 692 | <dd>If a user attempts to modify the log message of a changeset and he/she |
---|
| 693 | is not the original author of the changeset, this script will e-mail the |
---|
| 694 | original author. You can also set up a watch facility to monitor changes of |
---|
| 695 | log messages that affect particular paths in the repository. For further |
---|
| 696 | details please refer to the section <a href= |
---|
| 697 | "../user_guide/system_admin.html#svn_watch">Watching changes in log |
---|
| 698 | messages</a> in the System Admin chapter of the User Guide.</dd> |
---|
| 699 | |
---|
| 700 | <dt>examples/svn-hooks/post-revprop-change</dt> |
---|
| 701 | |
---|
| 702 | <dd>A simple post-revprop-change hook script which invokes the |
---|
| 703 | <code>trac-admin</code> command to <code>resync</code> the revision |
---|
| 704 | property cache stored in the corresponding Trac environment.</dd> |
---|
| 705 | |
---|
| 706 | <dt>lib/</dt> |
---|
| 707 | |
---|
| 708 | <dd>Contains the Perl library of FCM.</dd> |
---|
| 709 | |
---|
| 710 | <dt>man/</dt> |
---|
| 711 | |
---|
| 712 | <dd>Contains a basic manual page for <code>fcm</code>.</dd> |
---|
| 713 | |
---|
| 714 | <dt>t/</dt> |
---|
| 715 | |
---|
| 716 | <dd>Contains unit test for FCM.</dd> |
---|
| 717 | |
---|
| 718 | <dt>test/</dt> |
---|
| 719 | |
---|
| 720 | <dd>Contains regression tests for FCM.</dd> |
---|
| 721 | |
---|
| 722 | <dt>test/test_include/</dt> |
---|
| 723 | |
---|
| 724 | <dd>Contains simple test code to check how your chosen compilers handle |
---|
| 725 | include files (see <a href="#issues">Known Issues</a>).</dd> |
---|
| 726 | |
---|
| 727 | <dt>tutorial/</dt> |
---|
| 728 | |
---|
| 729 | <dd>Contains the files necessary to set up a Subversion repository for the |
---|
| 730 | FCM tutorial. This will allow you to follow the <a href= |
---|
| 731 | "../user_guide/getting_started.html#tutorial">tutorial section</a> in the |
---|
| 732 | User Guide. See <samp>tutorial/README</samp> on how to set it up.</dd> |
---|
| 733 | </dl> |
---|
| 734 | |
---|
| 735 | </div> |
---|
| 736 | </div> |
---|
| 737 | </div> |
---|
| 738 | |
---|
| 739 | <hr/> |
---|
| 740 | <div class="container-fluid text-center"> |
---|
| 741 | <div class="row"><div class="col-md-12"> |
---|
| 742 | <address><small> |
---|
| 743 | Copyright © 2006-2021 British Crown (Met Office) & Contributors. |
---|
| 744 | <a href="http://www.metoffice.gov.uk">Met Office</a>. |
---|
| 745 | See <a href="../etc/fcm-terms-of-use.html">Terms of Use</a>.<br /> |
---|
| 746 | This document is released under the British <a href= |
---|
| 747 | "http://www.nationalarchives.gov.uk/doc/open-government-licence/" rel= |
---|
| 748 | "license">Open Government Licence</a>.<br /> |
---|
| 749 | </small></address> |
---|
| 750 | </div></div> |
---|
| 751 | </div> |
---|
| 752 | |
---|
| 753 | <script type="text/javascript" src="../etc/jquery.min.js"></script> |
---|
| 754 | <script type="text/javascript" src="../etc/bootstrap/js/bootstrap.min.js"></script> |
---|
| 755 | <script type="text/javascript" src="../etc/fcm.js"></script> |
---|
| 756 | <script type="text/javascript" src="../etc/fcm-version.js"></script> |
---|
| 757 | </body> |
---|
| 758 | </html> |
---|