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

GUI

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:

./base/uk.ac.stfc.isis.ibex.activemq/lib/activemq-all-5.16.3.jar
./base/uk.ac.stfc.isis.ibex.databases/lib/mysql-connector-java-8.0.27.jar
./base/uk.ac.stfc.isis.ibex.epics/lib/commons-codec-1.15-javadoc.jar
./base/uk.ac.stfc.isis.ibex.epics/lib/commons-codec-1.15-sources.jar
./base/uk.ac.stfc.isis.ibex.epics/lib/commons-codec-1.15.jar
./base/uk.ac.stfc.isis.ibex.epics/lib/joda-time-2.10.13.jar
./base/uk.ac.stfc.isis.ibex.logger/lib/log4j-api-2.17.1.jar
./base/uk.ac.stfc.isis.ibex.logger/lib/log4j-core-2.17.1.jar
./base/uk.ac.stfc.isis.ibex.nicos/lib/jeromq-0.5.2.jar
./base/uk.ac.stfc.isis.ibex.ui/lib/opal-1.0.0.jar

Target platform

This is defined in the file ./base/uk.ac.stfc.isis.ibex.targetplatform/uk.ac.stfc.isis.ibex.targetplatform.target

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/uk.ac.stfc.isis.ibex.client.tycho.parent/pom.xml. 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.

Py4J

We have a local copy of Py4J available at http://shadow.nd.rl.ac.uk/ICP_P2/Py4j_P2/ (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 http://eclipse.py4j.org/:

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

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.

Lewis

To update Lewis, merge upstream to our fork: https://github.com/ISISComputingGroup/lewis - 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\lewis_versions.py file. This should also be done for the IOC Generator templates for future IOCs.

System

MySQL

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 https://github.com/ISISComputingGroup/ibex_utils/tree/master/installation_and_upgrade/ibex_install_utils edit install_tasks.py to point at the new version.

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

Java

Maven

Make

git

Git upgrade is handled by install scripts.

CS-Studio

GUI

Our CS-Studio GUI dependencies are located on a share at \\shadow.isis.cclrc.ac.uk\icp_p2$\css_gui_dependencies (which is accessible via a webpage at http://shadow.nd.rl.ac.uk/ICP_P2/css_gui_dependencies/. To update the CS-Studio components that the GUI uses:

Archive engines / alarm servers

ActiveMQ

To update activeMQ in epics:

IOCLogServer

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 https://github.com/ISISComputingGroup/EPICS-tools 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

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\classic.py and the client version in /uk.ac.stfc.isis.ibex.nicos/src/uk/ac/stfc/isis/ibex/nicos/messages/ReceiveBannerMessage.java. If these do not match, the script server connection will fail.

Updates to consider