Cargando…

A C/C++ Build System Based On Maven for the LHC Controls System

The CERN accelerator controls system, mainly written in Java and C/C++, consists nowadays of 50 projects and 150 active developers. The controls group has decided to unify the development process and standards (e.g. project layout) using Apache Maven and Sonatype Nexus. Maven is the de-facto build t...

Descripción completa

Detalles Bibliográficos
Autores principales: Nguyen Xuan, J, Copy, B, Dönszelmann, M
Lenguaje:eng
Publicado: 2011
Materias:
Acceso en línea:http://cds.cern.ch/record/1392650
_version_ 1780923444305592320
author Nguyen Xuan, J
Copy, B
Dönszelmann, M
author_facet Nguyen Xuan, J
Copy, B
Dönszelmann, M
author_sort Nguyen Xuan, J
collection CERN
description The CERN accelerator controls system, mainly written in Java and C/C++, consists nowadays of 50 projects and 150 active developers. The controls group has decided to unify the development process and standards (e.g. project layout) using Apache Maven and Sonatype Nexus. Maven is the de-facto build tool for Java, it deals with versioning and dependency management, whereas Nexus is a repository manager. C/C++ developers were struggling to keep their dependencies on other CERN projects, as no versioning was applied, the libraries have to be compiled and available for several platforms and architectures, and finally there was no dependency management mechanism. This results in very complex Makefiles which were difficult to maintain. Even if Maven is primarily designed for Java, a plugin (Maven NAR) adapts the build process for native programming languages for different operating systems and platforms. However C/C++ developers were not keen to abandon their current Makefiles. Hence our approach was to combine the best of the two worlds: NAR/Nexus and Makefiles. Maven NAR manages the dependencies, the versioning and creates a file with the linker and compiler options to include the dependencies. The Makefiles carry the build process to generate the binaries. Finally the resulting artifacts (binaries, header files, metadata) are versioned and stored in a central Nexus repository. Early experiments were conducted in the scope of the controls group's Testbed. Some existing projects have been successfully converted to this solution and some starting projects use this implementation.
id cern-1392650
institution Organización Europea para la Investigación Nuclear
language eng
publishDate 2011
record_format invenio
spelling cern-13926502022-08-17T13:24:24Zhttp://cds.cern.ch/record/1392650engNguyen Xuan, JCopy, BDönszelmann, MA C/C++ Build System Based On Maven for the LHC Controls SystemAccelerators and Storage RingsThe CERN accelerator controls system, mainly written in Java and C/C++, consists nowadays of 50 projects and 150 active developers. The controls group has decided to unify the development process and standards (e.g. project layout) using Apache Maven and Sonatype Nexus. Maven is the de-facto build tool for Java, it deals with versioning and dependency management, whereas Nexus is a repository manager. C/C++ developers were struggling to keep their dependencies on other CERN projects, as no versioning was applied, the libraries have to be compiled and available for several platforms and architectures, and finally there was no dependency management mechanism. This results in very complex Makefiles which were difficult to maintain. Even if Maven is primarily designed for Java, a plugin (Maven NAR) adapts the build process for native programming languages for different operating systems and platforms. However C/C++ developers were not keen to abandon their current Makefiles. Hence our approach was to combine the best of the two worlds: NAR/Nexus and Makefiles. Maven NAR manages the dependencies, the versioning and creates a file with the linker and compiler options to include the dependencies. The Makefiles carry the build process to generate the binaries. Finally the resulting artifacts (binaries, header files, metadata) are versioned and stored in a central Nexus repository. Early experiments were conducted in the scope of the controls group's Testbed. Some existing projects have been successfully converted to this solution and some starting projects use this implementation.CERN-ATS-2011-202oai:cds.cern.ch:13926502011-10-01
spellingShingle Accelerators and Storage Rings
Nguyen Xuan, J
Copy, B
Dönszelmann, M
A C/C++ Build System Based On Maven for the LHC Controls System
title A C/C++ Build System Based On Maven for the LHC Controls System
title_full A C/C++ Build System Based On Maven for the LHC Controls System
title_fullStr A C/C++ Build System Based On Maven for the LHC Controls System
title_full_unstemmed A C/C++ Build System Based On Maven for the LHC Controls System
title_short A C/C++ Build System Based On Maven for the LHC Controls System
title_sort c/c++ build system based on maven for the lhc controls system
topic Accelerators and Storage Rings
url http://cds.cern.ch/record/1392650
work_keys_str_mv AT nguyenxuanj accbuildsystembasedonmavenforthelhccontrolssystem
AT copyb accbuildsystembasedonmavenforthelhccontrolssystem
AT donszelmannm accbuildsystembasedonmavenforthelhccontrolssystem
AT nguyenxuanj ccbuildsystembasedonmavenforthelhccontrolssystem
AT copyb ccbuildsystembasedonmavenforthelhccontrolssystem
AT donszelmannm ccbuildsystembasedonmavenforthelhccontrolssystem