Mule Release#
Note
Additional details for the shumlib/mule releases can be seen here
Releasing Mule#
Tip
See #7796 for an example mule release ticket.
There’s no hard rule on whether a mule release is required - it comes down to whether there have been any notable changes to mule since the last release. If you are doing a release then do the following,
Create a mule ticket and branch, checking out a local copy.
Update
admin/meto_install_mule.shto update the mule version number as well as the UM and Shumlib releases intended for this mule release. It is likely the UM release hasn’t happened yet - in that case the mule install will need to wait until after that.Update all occurrences of the mule version number to the new version. This occurs in multiple places - see the above example ticket or grep for the old version.
Test the branch against the UM
Get the ticket reviewed and committed
Tag the mule trunk with
YYYY.MM.V.
Mule also has documentation which should be built and pushed to the SRS docs repo. However, this can only be done after the new version has been installed (see below).
Load the new um_tools environment,
module load um_tools/YYYY.MM.V/openmpGet a working copy of the mule trunk at the release revision.
Get a working copy of the SRS docs repo (you will need permission to commit to this repo),
fcm co https://code.metoffice.gov.uk/svn/doc/umFor each of
muleandum_utils, (eg. for mule),Move into the
mule/docsdirectoryRun
make htmlCopy the resulting
build/htmldirectory to the Docs working copy from earlier,
cp -r build/html /path/to/Docs/mule/YYYY.MM.V
Move to the Docs repo
Update the
mule/latestsymlinkAdd the new version to the
index.htmlfile.
Commit the changes to the Docs repo and ensure they appear correctly at https://code.metoffice.gov.uk/doc/um/.
Installing Mule#
Important
This must come after the targeted UM and Shumlib releases have been installed.
Installing mule has complexities as it depends on libraries installed by the UM and shumlib and is also dependent on the python stack. It is possible to install without the UM/Shumlib libraries, however functionality will be missing and so this isn’t done on Met Office platforms.
Mule is loaded into a user’s environment by adding the install directories to $PATH and $PYTHONPATH when loading the um_tools module. To ensure mule works with the current environment, it is installed for all different combinations of python and numpy available. At the Met Office, these are provided by the scitools software stacks in addition to the default environment.
Installation at the Met Office is done by admin/meto_install_mule.sh which will detect the current python environment and install to a directory named for that.
To install at the Met Office
Login as umadmin
Move to or create
$UMDIR/mule/mule-YYYY.MM.VGet a copy of the install script,
fcm export fcm:mule.xm_tr/admin/meto_install_mule.sh@YYYY.MM.VRun the install script without any modules loaded (this will install for the system python),
./meto_install_mule.shFor all desired scitools modules, load the module and then rerun the install script. Try and do this for all production/preproduction stacks as well as the current default previous, current and next modules.
Repeat these steps on the EXAB, EXCD, and EXZ.
Once mule has been installed, we also need to add the modulefiles to their location in $UMDIR/modules/modulefiles/um_tools/YYYY.MM.V. This is most easily done by copying an existing one and modifying the scitools modules and python versions to match what has just been installed. These modules need to be done for both openmp and no-openmp - the only differences between them are the THREADING and module-whatis variables.
Once done, check the modules are setup correctly by,
module load um_tools/YYYY.MM.V/openmp
python
import mule
Again, repeat this on the EXAB, EXCD, and EXZ. The module files should be identical for both EXAB and EXCD, so you can scp one set to the other. Again, these files can be found via the same $UMDIR path as above.
Finally, it is a good idea to update the default mule module by editing $UMDIR/modules/modulefiles/um_tools/.version. It may be worth posting an announcement a few days before changing this to give advance notice.