Skip to content

Commit 6100534

Browse files
committed
DPL: add (optional) direct dependency on JAliEn to AnalysisSupport
This is the groundwork to be able to access TJAlienFile from the reader (without requiring everyone to depend on JAlien).
1 parent 6f841a6 commit 6100534

File tree

5 files changed

+290
-4
lines changed

5 files changed

+290
-4
lines changed

Framework/AnalysisSupport/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@
1010

1111
# Given GCC 7.3 does not provide std::filesystem we use Boost instead
1212
# Drop this once we move to GCC 8.2+
13+
14+
if(TARGET XRootD::Client)
15+
set(EXTRA_TARGETS XRootD::Client JAliEn::JAliEn)
16+
endif()
17+
1318
o2_add_library(FrameworkAnalysisSupport
1419
SOURCES src/Plugin.cxx
1520
src/AODJAlienReaderHelpers.cxx
1621
PRIVATE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/src
17-
PUBLIC_LINK_LIBRARIES O2::Framework)
22+
PUBLIC_LINK_LIBRARIES O2::Framework ${EXTRA_TARGETS})

Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
#include <Monitoring/Monitoring.h>
2929

3030
#include <ROOT/RDataFrame.hxx>
31+
#if __has_include(<TJAlienFile.h>)
32+
#include <TJAlienFile.h>
33+
#endif
3134
#include <TGrid.h>
3235
#include <TFile.h>
3336
#include <TTreeCache.h>
@@ -237,9 +240,6 @@ AlgorithmSpec AODJAlienReaderHelpers::rootFileReaderCallback()
237240
// create a TreeToTable object
238241
auto info = didir->getFileFolder(dh, fcnt, ntf);
239242
size_t before = 0;
240-
if (info.file) {
241-
info.file->GetReadCalls();
242-
}
243243
tr = didir->getDataTree(dh, fcnt, ntf);
244244
if (!tr) {
245245
if (first) {
@@ -299,6 +299,12 @@ AlgorithmSpec AODJAlienReaderHelpers::rootFileReaderCallback()
299299
std::string nextFileRead = info.file->GetPath();
300300
if (currentFileRead != nextFileRead) {
301301
currentFileRead = nextFileRead;
302+
#if __has_include(<TJAlienFile.h>)
303+
auto alienFile = dynamic_cast<TJAlienFile*>(info.file);
304+
if (alienFile) {
305+
/// FIXME: get the JAlien stats
306+
}
307+
#endif
302308
monitoring.send(Metric{currentFileRead, "aod-file-read-path"}.addTag(Key::Subsystem, monitoring::tags::Value::DPL));
303309
}
304310
}

dependencies/FindJAlienROOT.cmake

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Copyright CERN and copyright holders of ALICE O2. This software is distributed
2+
# under the terms of the GNU General Public License v3 (GPL Version 3), copied
3+
# verbatim in the file "COPYING".
4+
#
5+
# See http://alice-o2.web.cern.ch/license for full licensing information.
6+
#
7+
# In applying this license CERN does not waive the privileges and immunities
8+
# granted to it by virtue of its status as an Intergovernmental Organization or
9+
# submit itself to any jurisdiction.
10+
find_path(JALIEN_ROOT_INCLUDE_DIR TJAlienFile.h PATH_SUFFIXES include
11+
PATHS
12+
${JALIEN_ROOT_ROOT})
13+
14+
find_library(JAliEnRoot_LIB JAliEnROOT PATHS ${JALIEN_ROOT_ROOT}/lib)
15+
16+
if(NOT JALIEN_ROOT_INCLUDE_DIR)
17+
set(JAliEnROOT_FOUND FALSE)
18+
return()
19+
endif()
20+
21+
set(JAliEnROOT_FOUND TRUE)
22+
23+
if(NOT TARGET JAliEn::JAliEn)
24+
get_filename_component(libdir ${JAliEnRoot_LIB} DIRECTORY)
25+
add_library(JAliEn::JAliEn INTERFACE IMPORTED)
26+
set_target_properties(JAliEn::JAliEn PROPERTIES
27+
INTERFACE_INCLUDE_DIRECTORIES ${JALIEN_ROOT_INCLUDE_DIR}
28+
INTERFACE_LINK_LIBRARIES ${JAliEnRoot_LIB}
29+
INTERFACE_LINK_DIRECTORIES ${libdir}
30+
)
31+
endif()
32+
33+
mark_as_advanced(JALIEN_ROOT_INCLUDE_DIR)

dependencies/FindXRootD.cmake

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
################################################################################
2+
# Module for locating XRootD.
3+
#
4+
# XROOTD_FOUND
5+
# Indicates whether the library has been found.
6+
#
7+
# XROOTD_INCLUDE_DIRS
8+
# Specifies XRootD include directory.
9+
#
10+
# XROOTD_LIBRARIES
11+
# Specifies XRootD libraries that should be passed to target_link_libararies.
12+
#
13+
# XROOTD_<COMPONENT>_LIBRARIES
14+
# Specifies the libraries of a specific <COMPONENT>
15+
#
16+
# XROOTD_<COMPONENT>_FOUND
17+
# Indicates whether the specified <COMPONENT> was found.
18+
#
19+
# List of components: CLIENT, UTILS, SERVER, POSIX, HTTP and SSI
20+
################################################################################
21+
22+
23+
################################################################################
24+
# Set XRootD include paths
25+
################################################################################
26+
FIND_PATH( XROOTD_INCLUDE_DIRS XrdVersion.hh
27+
HINTS
28+
${XROOTD_DIR}
29+
$ENV{XROOTD_DIR}
30+
/usr
31+
/opt/xrootd
32+
PATH_SUFFIXES include/xrootd
33+
PATHS /opt/xrootd
34+
)
35+
36+
IF( NOT "${XROOTD_INCLUDE_DIRS}" STREQUAL "XROOTD_INCLUDE_DIRS-NOTFOUND" )
37+
SET( XROOTD_FOUND TRUE )
38+
ENDIF()
39+
40+
IF( NOT XROOTD_FOUND )
41+
LIST( APPEND _XROOTD_MISSING_COMPONENTS XROOTD_FOUND )
42+
ENDIF()
43+
44+
################################################################################
45+
# XRootD client libs
46+
# - libXrdCl
47+
################################################################################
48+
FIND_LIBRARY( XROOTD_CLIENT_LIBRARIES XrdCl
49+
HINTS
50+
${XROOTD_DIR}
51+
$ENV{XROOTD_DIR}
52+
/usr
53+
/opt/xrootd
54+
PATH_SUFFIXES lib lib64
55+
)
56+
57+
IF( NOT "${XROOTD_CLIENT_LIBRARIES}" STREQUAL "XROOTD_CLIENT_LIBRARIES-NOTFOUND" )
58+
SET( XROOTD_CLIENT_FOUND TRUE )
59+
LIST( APPEND XROOTD_LIBRARIES ${XROOTD_CLIENT_LIBRARIES} )
60+
ENDIF()
61+
62+
IF( XRootD_FIND_REQUIRED_CLIENT AND NOT XROOTD_CLIENT_FOUND )
63+
MESSAGE( "XRootD client required but not found!" )
64+
LIST( APPEND _XROOTD_MISSING_COMPONENTS XROOTD_CLIENT_FOUND )
65+
UNSET( XROOTD_FOUND )
66+
ENDIF()
67+
68+
################################################################################
69+
# XRootD utils libs
70+
# - libXrdUtils
71+
################################################################################
72+
FIND_LIBRARY( XROOTD_UTILS_LIBRARIES XrdUtils
73+
HINTS
74+
${XROOTD_DIR}
75+
$ENV{XROOTD_DIR}
76+
/usr
77+
/opt/xrootd
78+
PATH_SUFFIXES lib lib64
79+
)
80+
81+
IF( NOT "${XROOTD_UTILS_LIBRARIES}" STREQUAL "XROOTD_UTILS_LIBRARIES-NOTFOUND" )
82+
SET( XROOTD_UTILS_FOUND TRUE )
83+
LIST( APPEND XROOTD_LIBRARIES ${XROOTD_UTILS_LIBRARIES} )
84+
ENDIF()
85+
86+
IF( XRootD_FIND_REQUIRED_UTILS AND NOT XROOTD_UTILS_FOUND )
87+
MESSAGE( "XRootD utils required but not found!" )
88+
LIST( APPEND _XROOTD_MISSING_COMPONENTS XROOTD_UTILS_FOUND )
89+
UNSET( XROOTD_FOUND )
90+
ENDIF()
91+
92+
################################################################################
93+
# XRootD server libs
94+
# - libXrdServer
95+
################################################################################
96+
FIND_LIBRARY( XROOTD_SERVER_LIBRARIES XrdServer
97+
HINTS
98+
${XROOTD_DIR}
99+
$ENV{XROOTD_DIR}
100+
/usr
101+
/opt/xrootd
102+
PATH_SUFFIXES lib lib64
103+
)
104+
105+
IF( NOT "${XROOTD_SERVER_LIBRARIES}" STREQUAL "XROOTD_SERVER_LIBRARIES-NOTFOUND" )
106+
SET( XROOTD_SERVER_FOUND TRUE )
107+
LIST( APPEND XROOTD_LIBRARIES ${XROOTD_SERVER_LIBRARIES} )
108+
ENDIF()
109+
110+
IF( XRootD_FIND_REQUIRED_SERVER AND NOT XROOTD_SERVER_FOUND )
111+
MESSAGE( "XRootD server required but not found!" )
112+
LIST( APPEND _XROOTD_MISSING_COMPONENTS XROOTD_SERVER_FOUND )
113+
UNSET( XROOTD_FOUND )
114+
ENDIF()
115+
116+
################################################################################
117+
# XRootD posix libs
118+
# - libXrdPosix
119+
# - libXrdPosixPreload
120+
################################################################################
121+
FIND_LIBRARY( XROOTD_POSIX_LIBRARY XrdPosix
122+
HINTS
123+
${XROOTD_DIR}
124+
$ENV{XROOTD_DIR}
125+
/usr
126+
/opt/xrootd
127+
PATH_SUFFIXES lib lib64
128+
)
129+
130+
FIND_LIBRARY( XROOTD_POSIX_PRELOAD_LIBRARY XrdPosixPreload
131+
HINTS
132+
${XROOTD_DIR}
133+
$ENV{XROOTD_DIR}
134+
/usr
135+
/opt/xrootd
136+
PATH_SUFFIXES lib lib64
137+
)
138+
139+
IF( NOT "${XROOTD_POSIX_LIBRARY}" STREQUAL "XROOTD_POSIX_LIBRARY-NOTFOUND" )
140+
IF( NOT "${XROOTD_POSIX_PRELOAD_LIBRARY}" STREQUAL "XROOTD_POSIX_PRELOAD_LIBRARY-NOTFOUND" )
141+
SET( XROOTD_POSIX_LIBRARIES ${XROOTD_POSIX_LIBRARY} ${XROOTD_POSIX_PRELOAD_LIBRARY} )
142+
SET( XROOTD_POSIX_FOUND TRUE )
143+
LIST( APPEND XROOTD_LIBRARIES ${XROOTD_POSIX_LIBRARIES} )
144+
ENDIF()
145+
ENDIF()
146+
147+
IF( XRootD_FIND_REQUIRED_POSIX AND NOT XROOTD_POSIX_FOUND )
148+
MESSAGE( "XRootD posix required but not found!" )
149+
LIST( APPEND _XROOTD_MISSING_COMPONENTS XROOTD_POSIX_FOUND )
150+
UNSET( XROOTD_FOUND )
151+
ENDIF()
152+
153+
################################################################################
154+
# XRootD HTTP (XrdHttp) libs
155+
# - libXrdHtppUtils
156+
################################################################################
157+
FIND_LIBRARY( XROOTD_HTTP_LIBRARIES XrdHttpUtils
158+
HINTS
159+
${XROOTD_DIR}
160+
$ENV{XROOTD_DIR}
161+
/usr
162+
/opt/xrootd
163+
PATH_SUFFIXES lib lib64
164+
)
165+
166+
IF( NOT "${XROOTD_HTTP_LIBRARIES}" STREQUAL "XROOTD_HTTP_LIBRARIES-NOTFOUND" )
167+
SET( XROOTD_HTTP_FOUND TRUE )
168+
LIST( APPEND XROOTD_LIBRARIES ${XROOTD_HTTP_LIBRARIES} )
169+
ENDIF()
170+
171+
IF( XRootD_FIND_REQUIRED_HTTP AND NOT XROOTD_HTTP_FOUND )
172+
MESSAGE( "XRootD http required but not found!" )
173+
LIST( APPEND _XROOTD_MISSING_COMPONENTS XROOTD_HTTP_FOUND )
174+
UNSET( XROOTD_FOUND )
175+
ENDIF()
176+
177+
################################################################################
178+
# XRootD SSI libs
179+
# - XrdSsiLib
180+
# - XrdSsiShMap
181+
################################################################################
182+
FIND_LIBRARY( XROOTD_SSI_LIBRARY XrdSsiLib
183+
HINTS
184+
${XROOTD_DIR}
185+
$ENV{XROOTD_DIR}
186+
/usr
187+
/opt/xrootd
188+
PATH_SUFFIXES lib lib64
189+
)
190+
191+
FIND_LIBRARY( XROOTD_SSI_SHMAP_LIBRARY XrdSsiShMap
192+
HINTS
193+
${XROOTD_DIR}
194+
$ENV{XROOTD_DIR}
195+
/usr
196+
/opt/xrootd
197+
PATH_SUFFIXES lib lib64
198+
)
199+
200+
IF( NOT "${XROOTD_SSI_LIBRARY}" STREQUAL "XROOTD_SSI_LIBRARY-NOTFOUND" )
201+
IF( NOT "${XROOTD_SSI_SHMAP_LIBRARY}" STREQUAL "XROOTD_SSI_SHMAP_LIBRARY-NOTFOUND" )
202+
SET( XROOTD_SSI_LIBRARIES ${XROOTD_SSI_LIBRARY} ${XROOTD_SSI_SHMAP_LIBRARY} )
203+
SET( XROOTD_SSI_FOUND TRUE )
204+
LIST( APPEND XROOTD_LIBRARIES ${XROOTD_SSI_LIBRARIES} )
205+
ENDIF()
206+
ENDIF()
207+
208+
IF( XRootD_FIND_REQUIRED_SSI AND NOT XROOTD_SSI_FOUND )
209+
MESSAGE( "XRootD ssi required but not found!" )
210+
LIST (APPEND _XROOTD_MISSING_COMPONENTS XROOTD_SSI_FOUND )
211+
UNSET( XROOTD_FOUND )
212+
ENDIF()
213+
214+
################################################################################
215+
# Set up the XRootD find module
216+
################################################################################
217+
218+
IF( XRootD_FIND_REQUIRED )
219+
INCLUDE( FindPackageHandleStandardArgs )
220+
FIND_PACKAGE_HANDLE_STANDARD_ARGS( XRootD
221+
REQUIRED_VARS XROOTD_INCLUDE_DIRS ${_XROOTD_MISSING_COMPONENTS}
222+
)
223+
ENDIF()
224+
225+
226+
if (XROOTD_CLIENT_FOUND)
227+
if(NOT TARGET XRootD::Client)
228+
get_filename_component(libdir ${XROOTD_CLIENT_LIBRARIES} DIRECTORY)
229+
add_library(XRootD::Client INTERFACE IMPORTED)
230+
set_target_properties(XRootD::Client PROPERTIES
231+
INTERFACE_INCLUDE_DIRECTORIES ${XROOTD_INCLUDE_DIRS}
232+
INTERFACE_LINK_LIBRARIES ${XROOTD_CLIENT_LIBRARIES}
233+
INTERFACE_LINK_DIRECTORIES ${libdir}
234+
)
235+
endif()
236+
endif()

dependencies/O2Dependencies.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@ set_package_properties(RapidJSON PROPERTIES TYPE REQUIRED)
103103
find_package(CURL)
104104
set_package_properties(CURL PROPERTIES TYPE REQUIRED)
105105

106+
find_package(JAliEnROOT MODULE)
107+
set_package_properties(JAliEnROOT PROPERTIES TYPE RECOMMENDED)
108+
109+
find_package(XRootD MODULE)
110+
set_package_properties(XRootD PROPERTIES TYPE RECOMMENDED)
111+
106112
# MC specific packages
107113
message(STATUS "Input BUILD_SIMULATION=${BUILD_SIMULATION}")
108114
include("${CMAKE_CURRENT_LIST_DIR}/O2SimulationDependencies.cmake")

0 commit comments

Comments
 (0)