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
andum_utils
, (eg. for mule),Move into the
mule/docs
directoryRun
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
symlinkAdd 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.