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.sh to 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 occurences 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/openmp

  • Get 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/um

  • For each of mule and um_utils, (eg. for mule),

    • Move into the mule/docs directory

    • Run make html

    • Copy the resulting build/html directory 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/latest symlink

    • Add the new version to the index.html file.

  • 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.V

  • Get a copy of the install script, fcm export fcm:mule.xm_tr/admin/meto_install_mule.sh@YYYY.MM.V

  • Run the install script without any modules loaded (this will install for the system python), ./meto_install_mule.sh

  • For 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 and EXCD.

Once mule has been installed, we also need to add the modulesfiles to their location in $UMDIR/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 and EXCD. The module files should be identical for both, so you can scp one set to the other.

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.