Skip to content

Commits on Source 7

stages:
- build
- test
- deploy
image: gitlab-registry.cern.ch/lhcb-core/lbdocker/slc6-build
variables:
NO_LBLOGIN: "1"
CLANG_FORMAT_VERSION: "3.9"
BINARY_TAG: "x86_64-slc6-gcc62-opt"
LCG_hostos: "x86_64-slc6"
LCG_release_area: "/cvmfs/sft.cern.ch/lcg/releases"
BUILDDIR: "build"
TESTS_REPORT: "test_report"
before_script:
- export BINARY_TAG=x86_64-slc6-gcc62-opt
- export PATH=/cvmfs/sft.cern.ch/lcg/contrib/CMake/3.7.0/Linux-x86_64/bin:/cvmfs/sft.cern.ch/lcg/contrib/ninja/1.7.1/x86_64-slc6:/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.13-597a5/${BINARY_TAG}/bin:${PATH}
- export PATH=/cvmfs/sft.cern.ch/lcg/contrib/CMake/3.8.1/Linux-x86_64/bin:/cvmfs/sft.cern.ch/lcg/contrib/ninja/1.7.1/x86_64-slc6:/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.13-597a5/${BINARY_TAG}/bin:${PATH}
- export PATH=/cvmfs/lhcb.cern.ch/lib/lhcb/LBSCRIPTS/dev/InstallArea/scripts:${PATH}
- export CMAKE_PREFIX_PATH=/cvmfs/sft.cern.ch/lcg/releases
- export PYTHONPATH=/cvmfs/lhcb.cern.ch/lib/lhcb/LBSCRIPTS/dev/InstallArea/python:${PYTHONPATH}
- export CMAKE_PREFIX_PATH=${LCG_release_area}:/cvmfs/projects.cern.ch/intelsw/psxe/linux/x86_64/2017/vtune_amplifier_xe
- export CCACHE_DIR=${PWD}/.ccache
- export LD_LIBRARY_PATH=/cvmfs/sft.cern.ch/lcg/external/gcc/6.2.0/x86_64-slc6/lib64:${LD_LIBRARY_PATH}
build:
tags:
- cvmfs
stage: build
script:
- curl -o artifacts.zip --location ${CI_PROJECT_URL}/-/jobs/artifacts/v28r2-patches/download?job=${CI_JOB_NAME}
- unzip -q artifacts.zip '.ccache/*' || true
- /cvmfs/sft.cern.ch/lcg/releases/ccache/3.3.4-e92e5/${BINARY_TAG}/bin/ccache -z
- echo 'set(CMAKE_USE_CCACHE ON CACHE BOOL "")' >> cache_preload.cmake
- make
- mv build.${BINARY_TAG} build
tags:
- slc6
- echo 'set(clang_format_cmd "'$(which lcg-clang-format-${CLANG_FORMAT_VERSION})'" CACHE FILEPATH "")' >> cache_preload.cmake
- make BUILDDIR=${BUILDDIR}
- /cvmfs/sft.cern.ch/lcg/releases/ccache/3.3.4-e92e5/${BINARY_TAG}/bin/ccache -s
artifacts:
paths:
- build/
expire_in: 1 day
- ${BUILDDIR}
- .ccache
expire_in: 1 week
doxygen:
tags:
- cvmfs
stage: test
script:
- mv build build.${BINARY_TAG}
- make doc
- mv build.${BINARY_TAG}/doxygen .
tags:
- slc6
- find build -type f -exec touch -d $(date +@%s) \{} \;
- make BUILDDIR=${BUILDDIR} doc
- rm -rf public
- mkdir -p public/doxygen
- mv ${BUILDDIR}/doxygen/html ${CI_COMMIT_REF_SLUG}
- zip -r -q public/doxygen/${CI_COMMIT_REF_SLUG}.zip ${CI_COMMIT_REF_SLUG}
only:
- master
- v28r2-patches
- tags
artifacts:
paths:
- doxygen/
expire_in: 1 week
- public
expire_in: 1 day
test:
tags:
- cvmfs
stage: test
script:
- mv build build.${BINARY_TAG}
- make test ARGS='-j4'
- mv build.${BINARY_TAG}/html test_report
tags:
- slc6
- find ${BUILDDIR} -type f -exec touch -d $(date +@%s) \{} \;
- mkdir -p ${BUILDDIR}/html
- ( make BUILDDIR=${BUILDDIR} test ARGS='-j4' || touch ${BUILDDIR}/html/tests_failed ) | tee ${BUILDDIR}/ctest.log
- mv ${BUILDDIR}/html ${TESTS_REPORT}
- mv ${BUILDDIR}/ctest.log ${TESTS_REPORT}
- mv ${BUILDDIR}/Testing ${TESTS_REPORT}
- if [ -e ${TESTS_REPORT}/tests_failed ] ; then
# this prints all lines starting with a white space after and including "The following tests...", excluding lines with "Not Run"
- echo "================================================================================"
- awk '/^[^[:space:]]/{do_print=0}; /The following tests FAILED:/{do_print=1}; do_print&&!/Not Run/{print}' ${TESTS_REPORT}/ctest.log
- echo "================================================================================"
- exit 1
- fi
artifacts:
paths:
- test_report/
- ${TESTS_REPORT}
when: always
expire_in: 1 week
# see https://gitlab.cern.ch/gitlabci-examples/deploy_eos for the details
# of the configuration
deploy-doxygen:
stage: deploy
only:
- v28r2-patches
- tags
image: gitlab-registry.cern.ch/ci-tools/ci-web-deployer:latest
script:
- test -z "$EOS_ACCOUNT_USERNAME" -o -z "$EOS_ACCOUNT_PASSWORD" -o -z "$EOS_PATH" && exit 0 || true
# Script that performs the deploy to EOS. Makes use of the variables defined in the project
# It will copy the generated content to the folder in EOS
- deploy-eos
# do not run any globally defined before_script or after_script for this step
before_script: []
after_script: []
......@@ -27,7 +27,7 @@ endif()
include(${CMAKE_SOURCE_DIR}/cmake/externals.cmake)
# Declare project name and version
gaudi_project(Gaudi v28r2)
gaudi_project(Gaudi v28r2p1)
# These tests do not really fit in a subdirectory.
gaudi_add_test(cmake.EnvConfigTests
......
#include <GaudiAlg/Consumer.h>
#include <GaudiAlg/Producer.h>
#include <GaudiKernel/KeyedContainer.h>
namespace Gaudi
{
namespace Examples
{
namespace TestObjectVersion
{
// using ObjectType = DataObject;
using ObjectType = KeyedContainer<KeyedObject<std::size_t>>;
struct CreateObject : Gaudi::Functional::Producer<ObjectType()> {
CreateObject( const std::string& name, ISvcLocator* svcLoc )
: Producer( name, svcLoc, KeyValue( "OutputLocation", "/Event/SomeData" ) )
{
}
ObjectType operator()() const override
{
ObjectType o;
o.setVersion( 42 );
info() << "Created object with version " << static_cast<int>( o.version() ) << endmsg;
return o;
}
};
DECLARE_COMPONENT( CreateObject )
struct UseObject : Gaudi::Functional::Consumer<void( const ObjectType& )> {
UseObject( const std::string& name, ISvcLocator* svcLoc )
: Consumer( name, svcLoc, KeyValue( "InputLocation", "/Event/SomeData" ) )
{
}
void operator()( const ObjectType& o ) const override
{
info() << "Retrieved object with version " << static_cast<int>( o.version() ) << endmsg;
if ( o.version() != 42 ) throw GaudiException( "Wrong object version", name(), StatusCode::FAILURE );
}
};
DECLARE_COMPONENT( UseObject )
}
}
}
from Gaudi.Configuration import ApplicationMgr
from Configurables import Gaudi__Examples__TestObjectVersion__CreateObject as CO
from Configurables import Gaudi__Examples__TestObjectVersion__UseObject as UO
ApplicationMgr(TopAlg=[CO(), UO()], EvtSel="NONE", EvtMax=1)
<?xml version="1.0" ?><!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'>
<extension class="GaudiTest.GaudiExeTest" kind="test">
<argument name="program"><text>gaudirun.py</text></argument>
<argument name="args"><set><text>$GAUDIEXAMPLESROOT/tests/options/TestObjectVersion.py</text></set></argument>
<argument name="use_temp_dir"><enumeral>true</enumeral></argument>
</extension>
......@@ -184,6 +184,7 @@ public:
m_cont.setup((void*)sptr,(void**)rptr);
}
KeyedContainer(KeyedContainer&& other):
ObjectContainerBase(std::move(other)),
m_cont(std::move(other.m_cont)),
m_sequential(std::move(other.m_sequential))
{
......
cmake_minimum_required(VERSION 2.8.12)
if(std_library_path)
# FindDoxygen.cmake needs to call the doxygen command at configuration time
set(ENV{LD_LIBRARY_PATH} "${std_library_path}:$ENV{LD_LIBRARY_PATH}")
endif()
find_package(Doxygen)
if(DOXYGEN_FOUND)
# make sure we have the right environment (for heptools installation)
if(DOXYGEN_DOT_EXECUTABLE)
get_filename_component(graphviz_bin "${DOXYGEN_DOT_EXECUTABLE}" DIRECTORY)
set(graphviz_env -p PATH=${graphviz_bin} -p LD_LIBRARY_PATH=${graphviz_bin}/../lib)
endif()
# directories used in the include search path during compilation
set(DOXYGEN_INCLUDE_DIRS)
foreach(package ${packages})
......@@ -40,7 +53,7 @@ Release notes of the packages:
# run Doxygen to generate the documentation
add_custom_target(run-doxygen
COMMAND ${env_cmd} --xml ${env_xml}
COMMAND ${env_cmd} --xml ${env_xml} ${graphviz_env}
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
COMMENT "Running Doxygen...")
......@@ -65,7 +78,7 @@ Release notes of the packages:
add_dependencies(run-doxygen install-MathJax)
set(MATHJAX_RELPATH "../mathjax")
else()
set(MATHJAX_RELPATH "http://cdn.mathjax.org/mathjax/latest")
set(MATHJAX_RELPATH "https://cdn.mathjax.org/mathjax/latest")
endif()
option(DOXYGEN_WITH_CPPREFERENCE_LINKS
......@@ -91,6 +104,25 @@ Release notes of the packages:
string(REGEX REPLACE "\\." "_" Boost_url_version "${Boost_version}")
string(REGEX REPLACE "\\..*" "" XercesC_major_version "${XercesC_config_version}")
# define the project version to show in the mainpage
if(DEFINED ENV{CI_COMMIT_REF_NAME})
string(SUBSTRING "$ENV{CI_COMMIT_SHA}" 0 8 CI_COMMIT_SHA)
set(DOC_PROJECT_VERSION "$ENV{CI_COMMIT_REF_NAME} (${CI_COMMIT_SHA})")
elseif(EXISTS "${CMAKE_SOURCE_DIR}/.git")
execute_process(COMMAND git describe --tags
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND git rev-parse HEAD
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_COMMIT_SHA
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(SUBSTRING "${GIT_COMMIT_SHA}" 0 8 GIT_COMMIT_SHA)
set(DOC_PROJECT_VERSION "${GIT_DESCRIBE_VERSION} (${GIT_COMMIT_SHA})")
else()
set(DOC_PROJECT_VERSION "${CMAKE_PROJECT_VERSION}")
endif()
# copy the template files
foreach(template Doxyfile mainpage.md externaldocs.md)
configure_file(${template}.in ${CMAKE_CURRENT_BINARY_DIR}/${template} @ONLY)
......
......@@ -38,7 +38,7 @@ PROJECT_NAME = "The Gaudi Framework"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = @CMAKE_PROJECT_VERSION@
PROJECT_NUMBER = "@DOC_PROJECT_VERSION@"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
......@@ -786,6 +786,7 @@ RECURSIVE = YES
# run.
EXCLUDE = @CMAKE_SOURCE_DIR@/GaudiRelease/doc/GaudiHive-release-notes.md
EXCLUDE += @CMAKE_SOURCE_DIR@/ReleaseNotes
EXCLUDE += @CMAKE_SOURCE_DIR@/InstallArea
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
......
......@@ -26,7 +26,7 @@ See also:
- <http://www.cplusplus.com/reference/>
[lcg-details]: http://lcgsoft.web.cern.ch/lcgsoft/release/@heptools_version@/
[lcg-details]: http://lcginfo.cern.ch/release/@heptools_version@/
[coral]: https://twiki.cern.ch/twiki/bin/view/Persistency/Coral
[cool]: https://twiki.cern.ch/twiki/bin/view/Persistency/Cool
[root]: http://root.cern.ch/
......
......@@ -11,14 +11,15 @@ the [list of classes](annotated.html) or via the [class hierarchy](hierarchy.htm
<table>
<tr><th>Version</th><td>@CMAKE_PROJECT_VERSION@</td></tr>
<tr><th>Version</th><td>@DOC_PROJECT_VERSION@</td></tr>
<tr><th>Description</th><td>Details of the constituent package versions are
available in the [detailed release notes](@ref release_notes_main)<br/>
The [project release notes](release.notes.html) contain a summary of changes
since the previous release.</td></tr>
<tr><th>Supported Platforms</th><td>Scientific Linux CERN 6 with gcc-4.8 (released with debug and non debug
versions, 64 bits only, with C++11 enabled)</td></tr>
<tr><th>Download</th><td>[Sources][source-tar]</td></tr>
<tr><th>Supported Platforms</th><td>Scientific Linux CERN 6 and CentOS 7 with
gcc 4.9, 6 and 7 (released with debug and non debug
versions, 64 bits only, with C++14 enabled)</td></tr>
<tr><th>Download</th><td>[Sources (on gitlab.cern.ch)][sources]</td></tr>
<tr><th>Documentation</th><td>%Gaudi Developers Guide [v9][gug-html]
([.pdf][gug-pdf], [.pdf 2up (for printing)][gug-2up-pdf])</td></tr>
</table>
......@@ -26,10 +27,10 @@ the [list of classes](annotated.html) or via the [class hierarchy](hierarchy.htm
See also: \ref externaldocs (from [LCG version @heptools_version@][lcg-details])
[source-tar]: http://lhcbproject.web.cern.ch/lhcbproject/dist/GAUDI/GAUDI_GAUDI_@CMAKE_PROJECT_VERSION@.tar.gz
[sources]: https://gitlab.cern.ch/gaudi/Gaudi/tags
[gug-html]: http://cern.ch/lhcb-comp/Frameworks/Gaudi/Gaudi_v9/GUG/Output/GUG.htm
[gug-pdf]: http://cern.ch/lhcb-comp/Frameworks/Gaudi/Gaudi_v9/GUG/GUG.pdf
[gug-2up-pdf]: http://cern.ch/lhcb-comp/Frameworks/Gaudi/Gaudi_v9/GUG/GUG-2up.pdf
[lcg-details]: http://lcgsoft.web.cern.ch/lcgsoft/release/@heptools_version@/
[lcg-details]: http://lcginfo.cern.ch/release/@heptools_version@/
......@@ -5,6 +5,17 @@
<title>Gaudi Release Notes</title>
</head>
<body>
<h1><a name="v28r2p1">Gaudi v28r2p1</a> (2018-04-18)</h1>
Package Coordinators: Marco Clemencic, Charles Leggett, Benedikt Hegner
<h2>Externals version: <a href="http://lcgsoft.web.cern.ch/lcgsoft/release/88/">LCG_88</a></h2>
<h2>Highlights</h2>
<p>Small bugfix release
<ul>
<li>Add test and fix of version propagation in KeyedContainer move ([mr !662][], [issue #27][])</li>
</ul>
</p>
<h1><a name="v28r2">Gaudi v28r2</a> (2017-03-21)</h1>
Package Coordinators: Marco Clemencic, Charles Leggett, Benedikt Hegner
<h2>Externals version: <a href="http://lcgsoft.web.cern.ch/lcgsoft/release/88/">LCG_88</a></h2>
......
......@@ -62,6 +62,9 @@ ifndef BINARY_TAG
endif
endif
ifeq ($(BINARY_TAG)$(BUILDDIR),)
$(error one of BINARY_TAG, CMTCONFIG or BUILDDIR must be defined)
endif
BUILDDIR := $(CURDIR)/build.$(BINARY_TAG)
ifneq ($(wildcard $(BUILDDIR)/Makefile),)
......@@ -95,7 +98,7 @@ ifneq ($(USE_NINJA),)
else
BUILD_CONF_FILE := Makefile
endif
BUILD_CMD := $(CMAKE) --build build.$(BINARY_TAG) --target
BUILD_CMD := $(CMAKE) --build $(BUILDDIR) --target
# default target
all:
......