Author: Lauener, J.
Paper Title Page
MOPV041 Modernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERN 242
 
  • P. Mantion, S. Deghaye, L. Fiszer, F. Irannejad, J. Lauener, M. Voelkle
    CERN, Geneva, Switzerland
 
  Building C++ software for low-level computers requires carefully tested frameworks and libraries. The major difficulties in building C++ software are to ensure that the artifacts are compatible with the target system’s (OS, Application Binary Interface), and to ensure that transitive dependent libraries are compatible when linked together. Thus developers/maintainers must be provided with efficient tooling for friction-less workflows: standardisation of the project description and build, automatic CI, flexible development environment. The open-source community with services like Github and Gitlab have set high expectations with regards to developer user experience. This paper describes how we leveraged Conan and CMake to standardise the build of C++ projects, avoid the "dependency hell" and provide an easy way to distribute C++ packages. A CI system orchestrated by Jenkins and based on automatic job definition and in-source, versioned, configuration has been implemented. The developer experience is further enhanced by wrapping the common flows (compile, test, release) into a command line tool, which also helps transitioning from the legacy build system (legacy makefiles, SVN).  
poster icon Poster MOPV041 [1.227 MB]  
DOI • reference for this paper ※ https://doi.org/10.18429/JACoW-ICALEPCS2021-MOPV041  
About • Received ※ 07 October 2021       Accepted ※ 14 November 2021       Issue date ※ 10 February 2022  
Cite • reference for this paper using ※ BibTeX, ※ LaTeX, ※ Text/Word, ※ RIS, ※ EndNote (xml)  
 
TUPV033 Distributed Transactions in CERN’s Accelerator Control System 468
 
  • F. Hoguin, S. Deghaye, R. Gorbonosov, J. Lauener, P. Mantion
    CERN, Geneva, Switzerland
 
  Devices in CERN’s accelerator complex are controlled through individual requests, which change settings atomically on single Devices. Individual Devices are therefore controlled transactionally. Operators often need to apply a set of changes which affect multiple devices. This is achieved by sending requests in parallel, in a minimum amount of time. However, if a request fails, the Control system ends up in an undefined state, and recovering is a time-consuming task. Furthermore, the lack of synchronisation in the application of new settings may lead to the degradation of the beam characteristics, because of settings being partially applied. To address these issues, a protocol was developed to support distributed transactions and commit synchronisation in the CERN Control system, which was then implemented in CERN’s real-time frameworks. We describe what this protocol intends to solve and its limitations. We also delve into the real-time framework implementation and how developers can benefit from the 2-phase commit to leverage hardware features such as double buffering, and from the commit synchronisation allowing settings to be changed safely while the accelerator is operational.  
poster icon Poster TUPV033 [0.869 MB]  
DOI • reference for this paper ※ https://doi.org/10.18429/JACoW-ICALEPCS2021-TUPV033  
About • Received ※ 09 October 2021       Revised ※ 18 October 2021       Accepted ※ 20 November 2021       Issue date ※ 22 January 2022
Cite • reference for this paper using ※ BibTeX, ※ LaTeX, ※ Text/Word, ※ RIS, ※ EndNote (xml)