Cargando…
Modernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERN
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 libra...
Autores principales: | , , , , , |
---|---|
Lenguaje: | eng |
Publicado: |
2022
|
Materias: | |
Acceso en línea: | https://dx.doi.org/10.18429/JACoW-ICALEPCS2021-MOPV041 http://cds.cern.ch/record/2810010 |
_version_ | 1780973196893224960 |
---|---|
author | Mantion, Pierre Deghaye, Stephane Fiszer, Lukasz Irannejad, Farhad Lauener, Joel Voelkle, Martin |
author_facet | Mantion, Pierre Deghaye, Stephane Fiszer, Lukasz Irannejad, Farhad Lauener, Joel Voelkle, Martin |
author_sort | Mantion, Pierre |
collection | CERN |
description | 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). |
id | cern-2810010 |
institution | Organización Europea para la Investigación Nuclear |
language | eng |
publishDate | 2022 |
record_format | invenio |
spelling | cern-28100102022-08-10T13:11:12Zdoi:10.18429/JACoW-ICALEPCS2021-MOPV041http://cds.cern.ch/record/2810010engMantion, PierreDeghaye, StephaneFiszer, LukaszIrannejad, FarhadLauener, JoelVoelkle, MartinModernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERNAccelerators and Storage RingsBuilding 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).oai:cds.cern.ch:28100102022 |
spellingShingle | Accelerators and Storage Rings Mantion, Pierre Deghaye, Stephane Fiszer, Lukasz Irannejad, Farhad Lauener, Joel Voelkle, Martin Modernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERN |
title | Modernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERN |
title_full | Modernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERN |
title_fullStr | Modernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERN |
title_full_unstemmed | Modernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERN |
title_short | Modernisation of the Toolchain and Continuous Integration of Front-End Computer Software at CERN |
title_sort | modernisation of the toolchain and continuous integration of front-end computer software at cern |
topic | Accelerators and Storage Rings |
url | https://dx.doi.org/10.18429/JACoW-ICALEPCS2021-MOPV041 http://cds.cern.ch/record/2810010 |
work_keys_str_mv | AT mantionpierre modernisationofthetoolchainandcontinuousintegrationoffrontendcomputersoftwareatcern AT deghayestephane modernisationofthetoolchainandcontinuousintegrationoffrontendcomputersoftwareatcern AT fiszerlukasz modernisationofthetoolchainandcontinuousintegrationoffrontendcomputersoftwareatcern AT irannejadfarhad modernisationofthetoolchainandcontinuousintegrationoffrontendcomputersoftwareatcern AT lauenerjoel modernisationofthetoolchainandcontinuousintegrationoffrontendcomputersoftwareatcern AT voelklemartin modernisationofthetoolchainandcontinuousintegrationoffrontendcomputersoftwareatcern |