Cylc logo

Cylc (said ‘silk’) is a work flow engine required by Rose (similar to work load managers like Torque and LSF). There is a help website for Cylc where you can post issues. See here for a cool map of where Cylc is used around the world. Also, be aware that Cylc uses a particular set of terms with specific meanings (e.g. 'active task', 'workflow', 'daemon') listed in the official Cylc glossary

For general information on Rose and Cylc as used in the UK's UM/Momentum system, see here.

 

STEP 0: Check whether Cylc is already installed.

cylc check-software

If Cylc has already been installed on your system, this will give you a message saying "Core requirements: OK". You don't need "Full-functionality": partial functionality is fine (e.g. you might be missing the PyGraphviz, Sphinx or PyGTK libraries, but this is OK). It'll also warn you if you are missing Python itself (you need vn>=2.6).

Don't forget that on JASMIN you will need to have a PATH= command in your ~/.bashrc file (described here) to get Cylc, Rose and FCM working.

STEP 1 *** SKIP THIS STEP IF CYLC ALREADY INSTALLED ***:

If Cylc is not globally available, then you will need to make a local installation. It used to be that you could go to this website and decide from it which release of Rose you want (scrolling down to find one that has been labelled to be used with certain versions of Cylc and FCM, e.g. "Rose release 57. This release is expected to be used with ...").

However, as of at least May 2023, this has become problematic:

     - On the one hand, the Cylc help people maintain that any version of Cylc before vn8.0 has become deprecated (not because of the change to Python3.0: that seems to have happened around Cylc vn7.8.0).

     - However, JULES will not yet run with Cylc 8.0 (you get an error "'rose suite-run' does not work with Cylc 8 workflows" because they have removed the rose suite-run command in Cylc8.0 and JULES suites need to be modified to use a different set of commands).

     - That versions website above has also become much less clear (to me) about which are the recommended versions that are not beta versions. Currently, on JASMIN the default global installation of Cylc is v7.8.12 (and you can choose to use Cylc v8.1.4 by specifying "export CYLC_VERSION=8" in your ~/.bashrc file).

My best advice at the moment is to stick with Cylc v7.8.12, but it seems that Rose and FCM you can move without hassle to the latest versions (May 2023). You can experiment with Cylc8.0 on JASMIN if you like, but from a JULES point of view this is not yet advisable.

OK: install Cylc using these commands from a bash terminal:

   mkdir ~/.local

   cd ~/.local

   git clone https://github.com/cylc/cylc.git

   cd cylc

   git tag -l

   git checkout tags/7.8.12

   cd ..

(No need to do make).

 

STEP 2 *** SKIP THIS STEP IF CYLC ALREADY INSTALLED ***:

Now you need to append the Cylc command set to your library. This must be done every time you log on, so best to add the following line to the end of your ~/.bashrc file to accomplish this:

   export PATH=$HOME/.local/cylc/bin:$PATH

   chmod -R 755 ~/.local

Run your .bashrc file (or log off and log in again):

   . ~/.bashrc

 

STEP 3: Now check the installation:

   cylc --version

(being in 'detached HEAD' state is fine)

   cylc check-software

(you only need the core functionality to be OK).

 

 

All done: Cylc should be installed (typing CYLC_EXEC=$(which cylc);echo $CYLC_EXEC will tell you where it is installed, if you are interested).