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...

Descripción completa

Detalles Bibliográficos
Autores principales: Mantion, Pierre, Deghaye, Stephane, Fiszer, Lukasz, Irannejad, Farhad, Lauener, Joel, Voelkle, Martin
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