Skip to content

v4.0 : upgrade to Ubuntu 22.04

Compare
Choose a tag to compare
@tomeichlersmith tomeichlersmith released this 22 Jun 18:54
· 92 commits to main since this release

Breaking Changes

The upgrade to a new GCC version and a new Python version required some changes to ldmx-sw in order to compile and run properly. These changes were implemented by a few PRs1 which you can reference for details. Here I list the major bugs that need to be resolved in order to properly interface with older ldmx-sw versions in this new container image.

  1. ROOT Branch Configuration (compile time) - A hacky-solution to tell ROOT to stop deleting our branch objects needed to be patched so that it could be compiled with the newer GCC version. LDMX-Software/Framework@5ddc20e This patch is included in Framework v1.3.2.
  2. Catch2 version (compile time) - As noticed in #54 (comment) Catch2 v2 uses a method for registering tests that is not supported by newer GCC anymore (it was kinda hacky and used a lot of memory), so we need to update to Catch2 v3. You can skip this issue if you simply don't build the tests by commenting out build_tests() in the CMakeLists.txt in ldmx-sw; however, you should prefer to update your branch to the newer ldmx-sw if you wish for your developments to be integrated.
  3. Python C API Interaction (run time) - The way we were using the Python C API did not accommodate the memory-saving measures that were implemented in newer Python versions, so we needed to update it.
  4. ONNX API (compile time) - ONNXRuntime changed its API somewhere between v1.2.0 (what was used for first integration) and the current v1.15.0. We want to upgrade to v1.15.0 so we can support both x86_64 and arm64 architectures. For this reason, we have moved ONNX into the image and update the CMake infrastructure so that it will correctly deduce if ONNX already exists or if it needs to be downloaded. For past compatibility reasons, the version being downloaded by CMake (if the user is not using a v4 container image) is still v1.2.0 and so will only support x86_64 architectures. The helper class for using ONNXRuntime was updated to use the C preprocessor to follow the API changes that affect us.

What's Changed

Full Changelog: v3.5.0...v4.0.0

  1. LDMX-Software/ldmx-sw#1157 updated Catch2 version, LDMX-Software/ldmx-sw#1170 updated ONNX API, and LDMX-Software/ldmx-sw#1173 updated Python API