From 4be26b12c6dda859a9b669f2e57eec06c1720fb6 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Tue, 2 Mar 2021 16:03:06 +0100 Subject: [PATCH 01/15] Update builtin xrootd to 5.1.0 and move it to proper ROOT builtins --- builtins/xrootd/CMakeLists.txt | 90 +++++++++++++++++++++ cmake/modules/SearchInstalledSoftware.cmake | 60 +------------- 2 files changed, 93 insertions(+), 57 deletions(-) create mode 100644 builtins/xrootd/CMakeLists.txt diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt new file mode 100644 index 0000000000000..846818457c20f --- /dev/null +++ b/builtins/xrootd/CMakeLists.txt @@ -0,0 +1,90 @@ +# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. +# All rights reserved. +# +# For the licensing terms see $ROOTSYS/LICENSE. +# For the list of contributors see $ROOTSYS/README/CREDITS. + +include(ExternalProject) + +find_package(OpenSSL REQUIRED) + +set(XROOTD_VERSION "5.1.0") +set(XROOTD_VERSIONNUM 500010000) +set(XROOTD_SRC_URI https://github.com/xrootd/xrootd/archive/v${XROOTD_VERSION}.tar.gz) +set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}/XROOTD-prefix) +set(XROOTD_ROOTDIR ${XROOTD_DESTDIR}) +message(STATUS "Downloading and building XROOTD version ${xrootd_version}") + + # Guess under which directory XRootD will install its libraires + set(XROOTD_LIBDIR "lib") + if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 8 + AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version") + set(XROOTD_LIBDIR "lib64") + endif() + + set(XROOTD_LIBRARIES ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdUtils${CMAKE_SHARED_LIBRARY_SUFFIX} + ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdClient${CMAKE_SHARED_LIBRARY_SUFFIX} + ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdCl${CMAKE_SHARED_LIBRARY_SUFFIX}) + ExternalProject_Add( + XROOTD + URL ${XROOTD_SRC_URI} + URL_HASH SHA256=356473ac1652080440c1c2ec80dd8e749ee569003594c3b38869a38999299c5e + INSTALL_DIR ${XROOTD_ROOTDIR} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + -DCMAKE_PREFIX_PATH:STRING=${OPENSSL_PREFIX} + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS} + -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} + -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} + -DENABLE_PYTHON=OFF + -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install + COMMAND ${CMAKE_COMMAND} -E copy_directory /include/xrootd /include + LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 + BUILD_BYPRODUCTS ${XROOTD_LIBRARIES} + TIMEOUT 600 + ) + +if(builtin_openssl) + add_dependencies(XROOTD OPENSSL) +endif() + +list(APPEND XROOTD_LIBRARIES OpenSSL::SSL) + +unset(XROOTD_FOUND CACHE) +unset(XROOTD_FOUND PARENT_SCOPE) +set(XROOTD_FOUND TRUE CACHE BOOL "" FORCE) + +set(XROOTD_INCLUDE_DIRS ${XROOTD_ROOTDIR}/include/xrootd ${XROOTD_ROOTDIR}/include/xrootd/private) +set(XROOTD_NOMAIN TRUE) +set(XROOTD_CFLAGS "-DROOTXRDVERS=${XROOTD_VERSIONNUM}") + +set(XROOTD_INCLUDE_DIR ${XROOTD_ROOTDIR}/include/xrootd ${XROOTD_ROOTDIR}/include/xrootd/private CACHE INTERNAL "" FORCE) +set(XROOTD_INCLUDE_DIRS ${XROOTD_ROOTDIR}/include/xrootd ${XROOTD_ROOTDIR}/include/xrootd/private CACHE INTERNAL "" FORCE) +set(XROOTD_LIBRARY ${XROOTD_PREFIX}/lib/${XROOTD_LIBNAME} CACHE INTERNAL "" FORCE) +set(XROOTD_LIBRARIES ${XROOTD_LIBRARIES} CACHE INTERNAL "" FORCE) + +add_library(xrootd INTERFACE) +target_include_directories(xrootd INTERFACE $) +target_link_libraries(xrootd INTERFACE $) +add_dependencies(xrootd XROOTD) + +add_library(Xrootd::Xrootd ALIAS xrootd) + +set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS XROOTD) + +install(DIRECTORY ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libXrd*") +install(DIRECTORY ${XROOTD_ROOTDIR}/include/xrootd/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers) +if(APPLE) + # XRootD libraries on mac need the LC_RPATH variable set. The build process already takes care of setting + # * BUILD_RPATH = build/XROOTD-prefix/../src + # * INSTALL_RPATH = build/lib + # Since the install directory for the builtin_xrootd target corresponds to the build directory of the main project. + # Use a post install script to change the LC_RPATH variable of the libraries in the ROOT install folder. + install(SCRIPT ${CMAKE_CURRENT_LIST_DIR}/XROOTDApplePostInstall.cmake + CODE "xrootd_libs_change_rpath(${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} ${CMAKE_INSTALL_FULL_LIBDIR})" + ) +endif() diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 863289b12f2e2..6234b936b134a 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -981,65 +981,11 @@ if(builtin_xrootd AND NO_CONNECTION) endif() endif() if(builtin_xrootd) - set(XROOTD_VERSION 4.12.8) - set(XROOTD_VERSIONNUM 400120008) - set(XROOTD_SRC_URI ${lcgpackages}/xrootd-${XROOTD_VERSION}.tar.gz) - set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}) - set(XROOTD_ROOTDIR ${XROOTD_DESTDIR}) - message(STATUS "Downloading and building XROOTD version ${xrootd_version}") - - # Guess under which directory XRootD will install its libraires - set(XROOTD_LIBDIR "lib") - if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 8 - AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version") - set(XROOTD_LIBDIR "lib64") - endif() - - set(XROOTD_LIBRARIES ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdUtils${CMAKE_SHARED_LIBRARY_SUFFIX} - ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdClient${CMAKE_SHARED_LIBRARY_SUFFIX} - ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdCl${CMAKE_SHARED_LIBRARY_SUFFIX}) - ExternalProject_Add( - XROOTD - URL ${XROOTD_SRC_URI} - URL_HASH SHA256=86d8e4bd7382fb3053002cf3d58b997623d1d26db93c8891080603827f01b4cd - INSTALL_DIR ${XROOTD_ROOTDIR} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS} - -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} - -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} - -DENABLE_PYTHON=OFF - -DENABLE_CEPH=OFF - -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install - COMMAND ${CMAKE_COMMAND} -E copy_directory /include/xrootd /include - LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 - BUILD_BYPRODUCTS ${XROOTD_LIBRARIES} - TIMEOUT 600 - ) - # We cannot call find_package(XROOTD) becuase the package is not yet built. So, we need to emulate what it defines.... - - set(XROOTD_INCLUDE_DIRS ${XROOTD_ROOTDIR}/include/xrootd ${XROOTD_ROOTDIR}/include/xrootd/private) - set(XROOTD_NOMAIN TRUE) - set(XROOTD_CFLAGS "-DROOTXRDVERS=${XROOTD_VERSIONNUM}") - install(DIRECTORY ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libXrd*") - install(DIRECTORY ${XROOTD_ROOTDIR}/include/xrootd/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers) - if(APPLE) - # XRootD libraries on mac need the LC_RPATH variable set. The build process already takes care of setting - # * BUILD_RPATH = build/XROOTD-prefix/../src - # * INSTALL_RPATH = build/lib - # Since the install directory for the builtin_xrootd target corresponds to the build directory of the main project. - # Use a post install script to change the LC_RPATH variable of the libraries in the ROOT install folder. - install(SCRIPT ${CMAKE_CURRENT_LIST_DIR}/XROOTDApplePostInstall.cmake - CODE "xrootd_libs_change_rpath(${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} ${CMAKE_INSTALL_FULL_LIBDIR})" - ) - endif() - set(XROOTD_TARGET XROOTD) + list(APPEND ROOT_BUILTINS XROOTD) + add_subdirectory(builtins/xrootd) set(xrootd ON CACHE BOOL "Enabled because builtin_xrootd requested (${xrootd_description})" FORCE) endif() + if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER 300030005) set(netxng ON) else() From 046957a87f6c6e873cb4ac07e64c22a22b3d8945 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Wed, 3 Mar 2021 17:55:18 +0100 Subject: [PATCH 02/15] Cache xrootd version --- builtins/xrootd/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index 846818457c20f..f6adfb7c15cbf 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -9,11 +9,11 @@ include(ExternalProject) find_package(OpenSSL REQUIRED) set(XROOTD_VERSION "5.1.0") -set(XROOTD_VERSIONNUM 500010000) +set(XROOTD_VERSIONNUM 500010000 CACHE INTERNAL "" FORCE) set(XROOTD_SRC_URI https://github.com/xrootd/xrootd/archive/v${XROOTD_VERSION}.tar.gz) set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}/XROOTD-prefix) set(XROOTD_ROOTDIR ${XROOTD_DESTDIR}) -message(STATUS "Downloading and building XROOTD version ${xrootd_version}") +message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") # Guess under which directory XRootD will install its libraires set(XROOTD_LIBDIR "lib") From b899d29fe52a5409e2079793e726166205fc81c4 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Thu, 4 Mar 2021 10:07:25 +0100 Subject: [PATCH 03/15] Thanks to Sergei for nice catch: XrdClient is not anymore available in xrootd 5 --- builtins/xrootd/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index f6adfb7c15cbf..1814659d551c3 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -23,7 +23,6 @@ message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") endif() set(XROOTD_LIBRARIES ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdUtils${CMAKE_SHARED_LIBRARY_SUFFIX} - ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdClient${CMAKE_SHARED_LIBRARY_SUFFIX} ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdCl${CMAKE_SHARED_LIBRARY_SUFFIX}) ExternalProject_Add( XROOTD From 477eb939c8849c0f3d46ab3904401a2c972acf25 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Thu, 4 Mar 2021 16:53:16 +0100 Subject: [PATCH 04/15] Move XROOTDApplePostInstall.cmake in xrootd builtins directory --- {cmake/modules => builtins/xrootd}/XROOTDApplePostInstall.cmake | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {cmake/modules => builtins/xrootd}/XROOTDApplePostInstall.cmake (100%) diff --git a/cmake/modules/XROOTDApplePostInstall.cmake b/builtins/xrootd/XROOTDApplePostInstall.cmake similarity index 100% rename from cmake/modules/XROOTDApplePostInstall.cmake rename to builtins/xrootd/XROOTDApplePostInstall.cmake From 4793be26419ea648442f447d6f58fcc75fee3898 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Thu, 4 Mar 2021 17:02:02 +0100 Subject: [PATCH 05/15] Apply suggestion of Sergei: move xrootd version constraints directly in 'net' CMakeLists --- cmake/modules/SearchInstalledSoftware.cmake | 10 ---------- net/CMakeLists.txt | 4 ++-- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 6234b936b134a..9fa63d2fda77a 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -986,16 +986,6 @@ if(builtin_xrootd) set(xrootd ON CACHE BOOL "Enabled because builtin_xrootd requested (${xrootd_description})" FORCE) endif() -if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER 300030005) - set(netxng ON) -else() - set(netxng OFF) -endif() -if(xrootd AND XROOTD_VERSIONNUM VERSION_LESS 500000000) - set(netx ON) -else() - set(netx OFF) -endif() if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER_EQUAL 500000000) if(xproofd) if(fail-on-missing) diff --git a/net/CMakeLists.txt b/net/CMakeLists.txt index 676eb63672753..bb86c3db8c701 100644 --- a/net/CMakeLists.txt +++ b/net/CMakeLists.txt @@ -11,7 +11,7 @@ if(NOT WIN32 AND ssl) add_subdirectory(rpdutils) endif() -if(netx) +if(xrootd AND XROOTD_VERSIONNUM VERSION_LESS 500000000) add_subdirectory(netx) endif() @@ -27,7 +27,7 @@ if(davix) add_subdirectory(davix) endif() -if(netxng) +if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER 300030005) add_subdirectory(netxng) endif() From c496e602731f86f267d0b451432f9d37e1cc161f Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Thu, 20 May 2021 15:56:22 +0200 Subject: [PATCH 06/15] Update xrootd builtins to latest 5.2.0 version --- builtins/xrootd/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index 1814659d551c3..d5e8a3ad603bc 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -8,8 +8,8 @@ include(ExternalProject) find_package(OpenSSL REQUIRED) -set(XROOTD_VERSION "5.1.0") -set(XROOTD_VERSIONNUM 500010000 CACHE INTERNAL "" FORCE) +set(XROOTD_VERSION "5.2.0") +set(XROOTD_VERSIONNUM 500020000 CACHE INTERNAL "" FORCE) set(XROOTD_SRC_URI https://github.com/xrootd/xrootd/archive/v${XROOTD_VERSION}.tar.gz) set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}/XROOTD-prefix) set(XROOTD_ROOTDIR ${XROOTD_DESTDIR}) @@ -27,7 +27,7 @@ message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") ExternalProject_Add( XROOTD URL ${XROOTD_SRC_URI} - URL_HASH SHA256=356473ac1652080440c1c2ec80dd8e749ee569003594c3b38869a38999299c5e + URL_HASH SHA256=43c8346d04bd9e4ff699db48a87fff06920235a2a8c90ddda8c94bb98fdfce96 INSTALL_DIR ${XROOTD_ROOTDIR} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH:STRING=${OPENSSL_PREFIX} From 1dda741a30b32099af48bd4c1a3f61e860e85e0d Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Thu, 2 Sep 2021 16:00:58 +0200 Subject: [PATCH 07/15] Try to update to xrootd 5.3.0 as a last released version --- builtins/xrootd/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index d5e8a3ad603bc..2c96d67fca932 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -8,7 +8,7 @@ include(ExternalProject) find_package(OpenSSL REQUIRED) -set(XROOTD_VERSION "5.2.0") +set(XROOTD_VERSION "5.3.0") set(XROOTD_VERSIONNUM 500020000 CACHE INTERNAL "" FORCE) set(XROOTD_SRC_URI https://github.com/xrootd/xrootd/archive/v${XROOTD_VERSION}.tar.gz) set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}/XROOTD-prefix) @@ -27,7 +27,7 @@ message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") ExternalProject_Add( XROOTD URL ${XROOTD_SRC_URI} - URL_HASH SHA256=43c8346d04bd9e4ff699db48a87fff06920235a2a8c90ddda8c94bb98fdfce96 + URL_HASH SHA256=2fbec7bbeaed3f29902f527a72965d6b6158ffe982ef86d9f44fa86649ba5ced INSTALL_DIR ${XROOTD_ROOTDIR} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH:STRING=${OPENSSL_PREFIX} From 014813007e27318d925da4b375ed9438c8458d50 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Thu, 2 Sep 2021 16:51:30 +0200 Subject: [PATCH 08/15] Update xrootd to 5.3.1 to include fixes fro https://github.com/root-project/root/issues/8767 --- builtins/xrootd/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index 2c96d67fca932..6271cd91b85d2 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -8,7 +8,7 @@ include(ExternalProject) find_package(OpenSSL REQUIRED) -set(XROOTD_VERSION "5.3.0") +set(XROOTD_VERSION "5.3.1") set(XROOTD_VERSIONNUM 500020000 CACHE INTERNAL "" FORCE) set(XROOTD_SRC_URI https://github.com/xrootd/xrootd/archive/v${XROOTD_VERSION}.tar.gz) set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}/XROOTD-prefix) @@ -27,7 +27,7 @@ message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") ExternalProject_Add( XROOTD URL ${XROOTD_SRC_URI} - URL_HASH SHA256=2fbec7bbeaed3f29902f527a72965d6b6158ffe982ef86d9f44fa86649ba5ced + URL_HASH SHA256=1194ba435dc1e243f3cdb8273f6385407183799faf7622a582a828f4aff6807d INSTALL_DIR ${XROOTD_ROOTDIR} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH:STRING=${OPENSSL_PREFIX} @@ -39,6 +39,7 @@ message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -DENABLE_PYTHON=OFF + -DENABLE_CEPH=OFF -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install COMMAND ${CMAKE_COMMAND} -E copy_directory /include/xrootd /include From be21e1c552b1eb97c481e44fef35b8e6aa8fd4c0 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Mon, 6 Sep 2021 16:26:34 +0200 Subject: [PATCH 09/15] Update XROOTD_VERSIONNUM to match 500030001 --- builtins/xrootd/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index 6271cd91b85d2..3af39b8383bf5 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -9,7 +9,7 @@ include(ExternalProject) find_package(OpenSSL REQUIRED) set(XROOTD_VERSION "5.3.1") -set(XROOTD_VERSIONNUM 500020000 CACHE INTERNAL "" FORCE) +set(XROOTD_VERSIONNUM 500030001 CACHE INTERNAL "" FORCE) set(XROOTD_SRC_URI https://github.com/xrootd/xrootd/archive/v${XROOTD_VERSION}.tar.gz) set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}/XROOTD-prefix) set(XROOTD_ROOTDIR ${XROOTD_DESTDIR}) From 67779e5c720e76fe8e4519063d97950e025029eb Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Tue, 7 Sep 2021 14:47:58 +0200 Subject: [PATCH 10/15] Fix rpath handling on Mac OS and improve Xrootd target hangling --- builtins/xrootd/CMakeLists.txt | 42 +++++++++++---------- cmake/modules/FindXROOTD.cmake | 6 +++ cmake/modules/SearchInstalledSoftware.cmake | 5 +++ net/netxng/CMakeLists.txt | 4 +- 4 files changed, 34 insertions(+), 23 deletions(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index 3af39b8383bf5..1cf3dc7909a3d 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -11,24 +11,26 @@ find_package(OpenSSL REQUIRED) set(XROOTD_VERSION "5.3.1") set(XROOTD_VERSIONNUM 500030001 CACHE INTERNAL "" FORCE) set(XROOTD_SRC_URI https://github.com/xrootd/xrootd/archive/v${XROOTD_VERSION}.tar.gz) -set(XROOTD_DESTDIR ${CMAKE_BINARY_DIR}/XROOTD-prefix) -set(XROOTD_ROOTDIR ${XROOTD_DESTDIR}) +set(XROOTD_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/XROOTD-prefix) message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") - # Guess under which directory XRootD will install its libraires - set(XROOTD_LIBDIR "lib") - if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 8 - AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version") - set(XROOTD_LIBDIR "lib64") - endif() +# Guess under which directory XRootD will install its libraires +set(XROOTD_LIBDIR "lib") +if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 8 +AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version") + set(XROOTD_LIBDIR "lib64") +endif() + +foreach(lib XrdUtils XrdCl) + set(libname ${CMAKE_SHARED_LIBRARY_PREFIX}${lib}${CMAKE_SHARED_LIBRARY_SUFFIX}) + list(APPEND XROOTD_LIBRARIES ${XROOTD_PREFIX}/lib/${libname}) +endforeach() - set(XROOTD_LIBRARIES ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdUtils${CMAKE_SHARED_LIBRARY_SUFFIX} - ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/libXrdCl${CMAKE_SHARED_LIBRARY_SUFFIX}) - ExternalProject_Add( +ExternalProject_Add( XROOTD URL ${XROOTD_SRC_URI} URL_HASH SHA256=1194ba435dc1e243f3cdb8273f6385407183799faf7622a582a828f4aff6807d - INSTALL_DIR ${XROOTD_ROOTDIR} + INSTALL_DIR ${XROOTD_PREFIX} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH:STRING=${OPENSSL_PREFIX} -DCMAKE_BUILD_TYPE=Release @@ -40,13 +42,13 @@ message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}") -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -DENABLE_PYTHON=OFF -DENABLE_CEPH=OFF - -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} + -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_PREFIX} INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install COMMAND ${CMAKE_COMMAND} -E copy_directory /include/xrootd /include LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 BUILD_BYPRODUCTS ${XROOTD_LIBRARIES} TIMEOUT 600 - ) +) if(builtin_openssl) add_dependencies(XROOTD OPENSSL) @@ -58,12 +60,12 @@ unset(XROOTD_FOUND CACHE) unset(XROOTD_FOUND PARENT_SCOPE) set(XROOTD_FOUND TRUE CACHE BOOL "" FORCE) -set(XROOTD_INCLUDE_DIRS ${XROOTD_ROOTDIR}/include/xrootd ${XROOTD_ROOTDIR}/include/xrootd/private) +set(XROOTD_INCLUDE_DIRS ${XROOTD_PREFIX}/include/xrootd ${XROOTD_DESTDIR}/include/xrootd/private) set(XROOTD_NOMAIN TRUE) set(XROOTD_CFLAGS "-DROOTXRDVERS=${XROOTD_VERSIONNUM}") -set(XROOTD_INCLUDE_DIR ${XROOTD_ROOTDIR}/include/xrootd ${XROOTD_ROOTDIR}/include/xrootd/private CACHE INTERNAL "" FORCE) -set(XROOTD_INCLUDE_DIRS ${XROOTD_ROOTDIR}/include/xrootd ${XROOTD_ROOTDIR}/include/xrootd/private CACHE INTERNAL "" FORCE) +set(XROOTD_INCLUDE_DIR ${XROOTD_PREFIX}/include/xrootd ${XROOTD_PREFIX}/include/xrootd/private CACHE INTERNAL "" FORCE) +set(XROOTD_INCLUDE_DIRS ${XROOTD_PREFIX}/include/xrootd ${XROOTD_PREFIX}/include/xrootd/private CACHE INTERNAL "" FORCE) set(XROOTD_LIBRARY ${XROOTD_PREFIX}/lib/${XROOTD_LIBNAME} CACHE INTERNAL "" FORCE) set(XROOTD_LIBRARIES ${XROOTD_LIBRARIES} CACHE INTERNAL "" FORCE) @@ -76,8 +78,8 @@ add_library(Xrootd::Xrootd ALIAS xrootd) set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS XROOTD) -install(DIRECTORY ${XROOTD_ROOTDIR}/${XROOTD_LIBDIR}/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libXrd*") -install(DIRECTORY ${XROOTD_ROOTDIR}/include/xrootd/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers) +install(DIRECTORY ${XROOTD_PREFIX}/${XROOTD_LIBDIR}/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libXrd*") +install(DIRECTORY ${XROOTD_PREFIX}/include/xrootd/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers) if(APPLE) # XRootD libraries on mac need the LC_RPATH variable set. The build process already takes care of setting # * BUILD_RPATH = build/XROOTD-prefix/../src @@ -85,6 +87,6 @@ if(APPLE) # Since the install directory for the builtin_xrootd target corresponds to the build directory of the main project. # Use a post install script to change the LC_RPATH variable of the libraries in the ROOT install folder. install(SCRIPT ${CMAKE_CURRENT_LIST_DIR}/XROOTDApplePostInstall.cmake - CODE "xrootd_libs_change_rpath(${XROOTD_ROOTDIR}/${XROOTD_LIBDIR} ${CMAKE_INSTALL_FULL_LIBDIR})" + CODE "xrootd_libs_change_rpath(${XROOTD_PREFIX}/${XROOTD_LIBDIR} ${CMAKE_INSTALL_FULL_LIBDIR})" ) endif() diff --git a/cmake/modules/FindXROOTD.cmake b/cmake/modules/FindXROOTD.cmake index 838c41c3c03d5..fe48c0162a8d8 100644 --- a/cmake/modules/FindXROOTD.cmake +++ b/cmake/modules/FindXROOTD.cmake @@ -169,6 +169,12 @@ if(XROOTD_FOUND) endif () endif() +if(XROOTD_FOUND AND NOT TARGET Xrootd::Xrootd) + add_library(Xrootd::Xrootd INTERFACE IMPORTED) + set_property(TARGET Xrootd::Xrootd PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${XROOTD_INCLUDE_DIRS}") + set_property(TARGET Xrootd::Xrootd PROPERTY INTERFACE_LINK_LIBRARIES "${XROOTD_LIBRARIES}") +endif() + mark_as_advanced(XROOTD_INCLUDE_DIR XROOTD_XrdMain_LIBRARY XROOTD_XrdUtils_LIBRARY diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 9fa63d2fda77a..cf737bce83169 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -954,6 +954,11 @@ if(monalisa) endif() #---Check for Xrootd support--------------------------------------------------------- + +foreach(suffix FOUND INCLUDE_DIR INCLUDE_DIRS LIBRARY LIBRARIES) + unset(XROOTD_${suffix} CACHE) +endforeach() + if(xrootd AND NOT builtin_xrootd) message(STATUS "Looking for XROOTD") find_package(XROOTD) diff --git a/net/netxng/CMakeLists.txt b/net/netxng/CMakeLists.txt index fec022f6b2686..425c4623f6d08 100644 --- a/net/netxng/CMakeLists.txt +++ b/net/netxng/CMakeLists.txt @@ -19,13 +19,11 @@ ROOT_STANDARD_LIBRARY_PACKAGE(NetxNG src/TNetXNGFileStager.cxx src/TNetXNGSystem.cxx LIBRARIES - ${XROOTD_LIBRARIES} + Xrootd::Xrootd DEPENDENCIES Net RIO Thread - BUILTINS - XROOTD ) target_include_directories(NetxNG PRIVATE ${XROOTD_INCLUDE_DIRS}) From 99933b38255c7b8831b3c12d46bdfb8d7208eb11 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Tue, 7 Sep 2021 15:51:29 +0200 Subject: [PATCH 11/15] Reverting changes back: according ROOT build system logic netx and netxng needs to be defined before --- cmake/modules/RootBuildOptions.cmake | 1 - cmake/modules/SearchInstalledSoftware.cmake | 12 ++++++++++++ net/CMakeLists.txt | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index d90367761460d..7a63f1b38f4c1 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -399,7 +399,6 @@ if(webgui) endif() endif() - #---Removed options------------------------------------------------------------ foreach(opt afdsmgrd afs bonjour castor chirp geocad glite globus hdfs ios krb5 ldap memstat qt qtgsi rfio ruby sapdb srp table python vmc) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index cf737bce83169..ebe69811dbcdd 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -1002,6 +1002,18 @@ if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER_EQUAL 500000000) endif() endif() +#---check if netxng and netx can be built------------------------------- +if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER 300030005) + set(netxng ON) +else() + set(netxng OFF) +endif() +if(xrootd AND XROOTD_VERSIONNUM VERSION_LESS 500000000) + set(netx ON) +else() + set(netx OFF) +endif() + #---Alien support---------------------------------------------------------------- if(alien) find_package(Alien) diff --git a/net/CMakeLists.txt b/net/CMakeLists.txt index bb86c3db8c701..676eb63672753 100644 --- a/net/CMakeLists.txt +++ b/net/CMakeLists.txt @@ -11,7 +11,7 @@ if(NOT WIN32 AND ssl) add_subdirectory(rpdutils) endif() -if(xrootd AND XROOTD_VERSIONNUM VERSION_LESS 500000000) +if(netx) add_subdirectory(netx) endif() @@ -27,7 +27,7 @@ if(davix) add_subdirectory(davix) endif() -if(xrootd AND XROOTD_VERSIONNUM VERSION_GREATER 300030005) +if(netxng) add_subdirectory(netxng) endif() From 06a9e88601c196774493d5f1ff2ddad01b03b96e Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Tue, 7 Sep 2021 16:19:11 +0200 Subject: [PATCH 12/15] Use autodetected XROOTD_LIBDIR instead of hardcoded lib directory --- builtins/xrootd/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index 1cf3dc7909a3d..eef543afeea98 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -23,7 +23,7 @@ endif() foreach(lib XrdUtils XrdCl) set(libname ${CMAKE_SHARED_LIBRARY_PREFIX}${lib}${CMAKE_SHARED_LIBRARY_SUFFIX}) - list(APPEND XROOTD_LIBRARIES ${XROOTD_PREFIX}/lib/${libname}) + list(APPEND XROOTD_LIBRARIES ${XROOTD_PREFIX}/${XROOTD_LIBDIR}/${libname}) endforeach() ExternalProject_Add( @@ -66,7 +66,7 @@ set(XROOTD_CFLAGS "-DROOTXRDVERS=${XROOTD_VERSIONNUM}") set(XROOTD_INCLUDE_DIR ${XROOTD_PREFIX}/include/xrootd ${XROOTD_PREFIX}/include/xrootd/private CACHE INTERNAL "" FORCE) set(XROOTD_INCLUDE_DIRS ${XROOTD_PREFIX}/include/xrootd ${XROOTD_PREFIX}/include/xrootd/private CACHE INTERNAL "" FORCE) -set(XROOTD_LIBRARY ${XROOTD_PREFIX}/lib/${XROOTD_LIBNAME} CACHE INTERNAL "" FORCE) +set(XROOTD_LIBRARY ${XROOTD_PREFIX}/${XROOTD_LIBDIR}/${XROOTD_LIBNAME} CACHE INTERNAL "" FORCE) set(XROOTD_LIBRARIES ${XROOTD_LIBRARIES} CACHE INTERNAL "" FORCE) add_library(xrootd INTERFACE) From d8de6a6f8f3f4186ab65917975981b393059b6c0 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Fri, 17 Sep 2021 13:27:53 +0200 Subject: [PATCH 13/15] Fix INSTALL_RPATH for xrootd --- builtins/xrootd/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index eef543afeea98..31635a19004ef 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -42,7 +42,7 @@ ExternalProject_Add( -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -DENABLE_PYTHON=OFF -DENABLE_CEPH=OFF - -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_PREFIX} + -DCMAKE_INSTALL_RPATH:STRING=${XROOTD_PREFIX}/${XROOTD_LIBDIR} INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install COMMAND ${CMAKE_COMMAND} -E copy_directory /include/xrootd /include LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 From 01998bd314076c48e44bac0d4fe46392055b4b14 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Tue, 21 Sep 2021 14:43:30 +0200 Subject: [PATCH 14/15] Revert back changes connnected adding dependency for xrootd builtin for NetxNG --- net/netxng/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/netxng/CMakeLists.txt b/net/netxng/CMakeLists.txt index 425c4623f6d08..a57702eafcc8a 100644 --- a/net/netxng/CMakeLists.txt +++ b/net/netxng/CMakeLists.txt @@ -24,6 +24,8 @@ ROOT_STANDARD_LIBRARY_PACKAGE(NetxNG Net RIO Thread + BUILTINS + XROOTD ) target_include_directories(NetxNG PRIVATE ${XROOTD_INCLUDE_DIRS}) From 8f61668da3e728e1c7774ab6cc42c36f788b9bf0 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Fri, 24 Sep 2021 14:34:43 +0200 Subject: [PATCH 15/15] Add patch from M.K.Simon to handle properly BUILD_RPATH for dummy Xrootd target --- builtins/xrootd/CMakeLists.txt | 1 + cmake/modules/RootMacros.cmake | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/builtins/xrootd/CMakeLists.txt b/builtins/xrootd/CMakeLists.txt index 31635a19004ef..ab0820a3808c4 100644 --- a/builtins/xrootd/CMakeLists.txt +++ b/builtins/xrootd/CMakeLists.txt @@ -72,6 +72,7 @@ set(XROOTD_LIBRARIES ${XROOTD_LIBRARIES} CACHE INTERNAL "" FORCE) add_library(xrootd INTERFACE) target_include_directories(xrootd INTERFACE $) target_link_libraries(xrootd INTERFACE $) +set_property(TARGET xrootd PROPERTY INTERFACE_BUILD_RPATH ${XROOTD_PREFIX}/${XROOTD_LIBDIR}) add_dependencies(xrootd XROOTD) add_library(Xrootd::Xrootd ALIAS xrootd) diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake index c536c5999b6ae..b2a2410a2165f 100644 --- a/cmake/modules/RootMacros.cmake +++ b/cmake/modules/RootMacros.cmake @@ -914,8 +914,10 @@ function(ROOT_LINKER_LIBRARY library) get_target_property(_target_type ${lib} TYPE) if(${_target_type} STREQUAL "INTERFACE_LIBRARY") get_target_property(lib_incdirs ${lib} INTERFACE_INCLUDE_DIRECTORIES) + get_target_property(lib_rpath ${lib} INTERFACE_BUILD_RPATH) else() get_target_property(lib_incdirs ${lib} INCLUDE_DIRECTORIES) + get_target_property(lib_rpath ${lib} BUILD_RPATH) endif() if(lib_incdirs) foreach(dir ${lib_incdirs}) @@ -923,6 +925,9 @@ function(ROOT_LINKER_LIBRARY library) list(APPEND dep_inc_list ${dir}) endforeach() endif() + if(lib_rpath) + set_target_properties(${library} PROPERTIES BUILD_RPATH ${lib_rpath}) + endif() endif() endforeach() endif()