Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 33 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
Language: Cpp
BasedOnStyle: Mozilla

AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: true
AllowShortFunctionsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: false
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlwaysBreakAfterReturnType: None
AlwaysBreakAfterDefinitionReturnType: None
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: NonAssignment
BreakConstructorInitializers: BeforeComma
ColumnLimit: 120
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: true
FixNamespaceComments: true
IndentWidth: 4
IndentWrappedFunctionNames: true
IncludeBlocks: Regroup
NamespaceIndentation: None
PointerAlignment: Left
SortIncludes: true
SpacesBeforeTrailingComments: 3
Standard: Cpp11
UseTab: Never
...
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,14 @@ if(IWYU_FOUND)
add_custom_target(checkHEADERS DEPENDS $ENV{ALL_HEADER_RULES})
endif(IWYU_FOUND)

find_package2(PRIVATE ClangFormat)
if(ClangFormat_FOUND)
add_custom_target(FormatCheck
${CMAKE_COMMAND} -E env FAIRROOT_GIT_CLANG_FORMAT_BIN=${GIT_CLANG_FORMAT_BIN} ${CMAKE_SOURCE_DIR}/check-format.sh
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
endif()

if(${CMAKE_BUILD_TYPE} MATCHES PROFILE)
set(BUILD_UNITTESTS ON)
endif()
Expand Down
35 changes: 35 additions & 0 deletions FairRoot_format_test.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
################################################################################
# Copyright (C) 2020 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH #
# #
# This software is distributed under the terms of the #
# GNU Lesser General Public Licence (LGPL) version 3, #
# copied verbatim in the file "LICENSE" #
################################################################################

cmake_host_system_information(RESULT fqdn QUERY FQDN)

set(CTEST_SOURCE_DIRECTORY .)
set(CTEST_BINARY_DIRECTORY build)
Set(CTEST_PROJECT_NAME "FairRoot")
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
set(CTEST_USE_LAUNCHERS ON)

if ("$ENV{CTEST_SITE}" STREQUAL "")
set(CTEST_SITE "${fqdn}")
else()
set(CTEST_SITE $ENV{CTEST_SITE})
endif()

if ("$ENV{LABEL}" STREQUAL "")
set(CTEST_BUILD_NAME "format-check")
else()
set(CTEST_BUILD_NAME $ENV{LABEL})
endif()

ctest_start(Experimental TRACK Checks)

ctest_configure(OPTIONS "-DDISABLE_COLOR=ON")

ctest_build(TARGET FormatCheck FLAGS "")

ctest_submit()
98 changes: 64 additions & 34 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,55 +4,79 @@ def specToLabel(Map spec) {
return "${spec.os}-${spec.arch}-${spec.compiler}-FairSoft_${spec.fairsoft}"
}

def jobMatrix(String prefix, List specs, Closure callback) {
def jobMatrix(String prefix, String type, List specs, Closure callback) {
def nodes = [:]
for (spec in specs) {
def label = specToLabel(spec)
def os = spec.os
def compiler = spec.compiler
def fairsoft = spec.fairsoft
nodes["${prefix}/${label}"] = {
def job = label
if (spec.containsKey('check')) {
job = spec.check
}
nodes["${type}/${job}"] = {
node(label) {
githubNotify(context: "${prefix}/${label}", description: 'Building ...', status: 'PENDING')
githubNotify(context: "${prefix}/${type}/${job}", description: 'Building ...', status: 'PENDING')
try {
deleteDir()
checkout scm

sh """\
echo "export SIMPATH=\${SIMPATH_PREFIX}${fairsoft}" >> Dart.cfg
echo "export FAIRSOFT_VERSION=${fairsoft}" >> Dart.cfg
"""
def env = ''
if (spec.containsKey('check')) {
env = 'env.sh'
if (os =~ /Debian8/) {
sh """\
echo "#!/bin/bash" >> ${env}
echo ". /etc/profile.d/modules.sh" >> ${env}
echo "module use /cvmfs/it.gsi.de/modulefiles" >> ${env}
echo "module load cmake" >> ${env}
echo "module load compiler/gcc/9.1.0" >> ${env}
"""
}
sh """\
echo "export SIMPATH=\${SIMPATH_PREFIX}${fairsoft}" >> ${env}
echo "export LABEL='\${JOB_BASE_NAME} ${spec.check}'" >> ${env}
echo "export PATH=\${CHECKS_PREFIX}${spec.check}/bin:\\\$PATH" >> ${env}
"""
} else {
env = 'Dart.cfg'
sh """\
echo "export SIMPATH=\${SIMPATH_PREFIX}${fairsoft}" >> ${env}
echo "export FAIRSOFT_VERSION=${fairsoft}" >> ${env}
"""

if (os =~ /Debian8/ && compiler =~ /gcc9/) {
sh '''\
echo "source /etc/profile.d/modules.sh" >> Dart.cfg
echo "module use /cvmfs/it.gsi.de/modulefiles" >> Dart.cfg
echo "module load compiler/gcc/9.1.0" >> Dart.cfg
'''
}
if (os =~ /Debian8/ && compiler =~ /gcc9/) {
sh """\
echo ". /etc/profile.d/modules.sh" >> ${env}
echo "module use /cvmfs/it.gsi.de/modulefiles" >> ${env}
echo "module load compiler/gcc/9.1.0" >> ${env}
"""
}

if (os =~ /MacOS/) {
sh "echo \"export EXTRA_FLAGS=\\\"-DCMAKE_CXX_COMPILER=clang++;-DCMAKE_C_COMPILER=clang\\\"\" >> Dart.cfg"
} else {
sh "echo \"export EXTRA_FLAGS=\\\"-DCMAKE_CXX_COMPILER=g++;-DCMAKE_C_COMPILER=gcc\\\"\" >> Dart.cfg"
}
if (os =~ /MacOS/) {
sh "echo \"export EXTRA_FLAGS=\\\"-DCMAKE_CXX_COMPILER=clang++;-DCMAKE_C_COMPILER=clang\\\"\" >> ${env}"
} else {
sh "echo \"export EXTRA_FLAGS=\\\"-DCMAKE_CXX_COMPILER=g++;-DCMAKE_C_COMPILER=gcc\\\"\" >> ${env}"
}

sh '''\
echo "export BUILDDIR=$PWD/build" >> Dart.cfg
echo "export SOURCEDIR=$PWD" >> Dart.cfg
echo "export PATH=\\\$SIMPATH/bin:\\\$PATH" >> Dart.cfg
echo "export GIT_BRANCH=$JOB_BASE_NAME" >> Dart.cfg
echo "echo \\\$PATH" >> Dart.cfg
'''
sh 'cat Dart.cfg'
sh """\
echo "export BUILDDIR=\${PWD}/build" >> ${env}
echo "export SOURCEDIR=\${PWD}" >> ${env}
echo "export PATH=\\\$SIMPATH/bin:\\\$PATH" >> ${env}
echo "export GIT_BRANCH=\${JOB_BASE_NAME}" >> ${env}
echo "echo \\\$PATH" >> ${env}
"""
}
sh "cat ${env}"

callback.call(spec, label)
callback.call(spec, job, env)

deleteDir()
githubNotify(context: "${prefix}/${label}", description: 'Success', status: 'SUCCESS')
githubNotify(context: "${prefix}/${type}/${job}", description: 'Success', status: 'SUCCESS')
} catch (e) {
deleteDir()
githubNotify(context: "${prefix}/${label}", description: 'Error', status: 'ERROR')
githubNotify(context: "${prefix}/${type}/${job}", description: 'Error', status: 'ERROR')
throw e
}
}
Expand All @@ -67,7 +91,7 @@ pipeline{
stage("Run CI Matrix") {
steps{
script {
def build_jobs = jobMatrix('alfa-ci/build', [
def builds = jobMatrix('alfa-ci', 'build', [
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc9', fairsoft: 'dev'],
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc9', fairsoft: 'dev_mt'],
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM10.0.0', fairsoft: 'dev'],
Expand All @@ -76,11 +100,17 @@ pipeline{
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM10.0.0', fairsoft: 'jun19_patches_mt'],
[os: 'MacOS10.14', arch: 'x86_64', compiler: 'AppleLLVM10.0.0', fairsoft: 'dev'],
[os: 'MacOS10.14', arch: 'x86_64', compiler: 'AppleLLVM10.0.0', fairsoft: 'dev_mt'],
]) { spec, label ->
sh './Dart.sh alfa_ci Dart.cfg'
]) { spec, label, config ->
sh "./Dart.sh alfa_ci ${config}"
}

def checks = jobMatrix('alfa-ci', 'check', [
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc9', fairsoft: 'dev', check: 'format'],
]) { spec, check, env ->
sh ". ./${env} && ctest -S FairRoot_${check}_test.cmake -VV"
}

parallel(build_jobs)
parallel(checks + builds)
}
}
}
Expand Down
Loading