Dependency Updates - ISISComputingGroup/ibex_developers_manual Wiki

Wiki > Processes > Dependency Update

After a release all of the dependencies of the system should be considered for update. This will ensure that we do not get too far out of date and any upgrade will, hopefully, be small and not require much effort. In general we do not want to be on the bleeding edge but at the last stable release (i.e. prefer LTS versions when they are available). The list of dependency will get shipped with the release notes and should be kept up-to-date with any notes. This page documents the process of updating.

Any dependencies which should not be updated should be listed with a reason here

When updating dependencies add the new dependencies to the upcoming release notes


The GUI has multiple mechanisms for pulling in dependencies, all of which may potentially need updates. You should aim to do one dependency update at a time, testing each update both under the eclipse IDE and maven and committing before moving onto the next update.

.jar files

The following .jar files may need updating. Check for new versions in maven central or on the vendor website, and update if new versions are available:


Target platform

This is defined in the file ./base/

General update process:

Note: when updating the eclipse framework itself, you also need to update client.tycho.parent - see below for details.

Parent POM

Tycho and eclipse framework versions are defined in the file ./base/ Note that the eclipse framework version must correspond with the version defined in the target platform, otherwise the maven build will fail with mismatched framework versions.


We have a local copy of Py4J available at (note: only available in browsers which do not auto-correct http to https as shadow is not currently configured correctly to serve https traffic. The password for shadow is on the credentials page).

To update this copy, download the following files from

Replace the versions in the ICP_P2 area with these new files you have downloaded, and test that the new version works correctly.

Client JRE

The GUI builds copy a JRE from \\isis\inst$\Kits$\CompGroup\ICP\ibex_client_jre. Replace this with the latest JRE and check that things still work.


Python itself

Python packages

Check on PyPi for any package updates, then edit requirements.txt to install new versions where needed. Note that since we decided all python projects should use virtual environments there will be requirements.txtfiles for all Python projects using the new import mechanism, ensure these are also updated.


To update Lewis, merge upstream to our fork: - This should get picked up automatically by the build server as it installs from the main branch of our fork.

If the version of Lewis is updated the version should be changed in individual support modules in the lewis_emulators\ file. This should also be done for the IOC Generator templates for future IOCs.



Download the latest MySQL version as a zip file and put in the share \\isis\inst$\Kits$\CompGroup\ICP\MySQL and remove the old one.

In the upgrade script edit to point at the new version.

Update the one in your local machine by running upgrade_mysql.bat.





Git upgrade is handled by install scripts.



Our CS-Studio GUI dependencies are located on a share at \\\icp_p2$\css_gui_dependencies (which is accessible via a webpage at To update the CS-Studio components that the GUI uses:

Archive engines / alarm servers


To update activeMQ in epics:


The IOC log server has a similar build process to the main GUI, and includes several .jar files in it's repository. These may have new versions and need to be updated.

Cygwin Tools

procServ, conserver and console are cygwin applications, compiled copies of which are kept centrally in ICP_Binaries\EPICS_Tools and then copied into subdirectories of tools/master of the EPICS distribution during a build. Their source code is located in the repository and they are built by the EPICS_tools Jenkins job which places new versions in kits$\EPICS_Tools. The Jenkins job only runs when requested.

If you update the source code of procServ/conserver the following applies too, but we should also update cygwin and rebuild the binaries periodically even if the source code is unchanged. To publish new binaries:


Nicos Dependency update steps.

Note: We are using a fork of NICOS. If updating NICOS, ensure that the protocol versions defined in the client and the server match. The server version is specified in C:\Instrument\Apps\EPICS\ISIS\ScriptServer\master\nicos\protocols\daemon\ and the client version in / If these do not match, the script server connection will fail.

Updates to consider