diff --git a/0001-Fixes-for-64-bit-time_t-on-32-bit-systems.patch b/0001-Fixes-for-64-bit-time_t-on-32-bit-systems.patch deleted file mode 100644 index 8ce0b8a..0000000 --- a/0001-Fixes-for-64-bit-time_t-on-32-bit-systems.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 0b99a31c5813a34ea3a09c067203f7802291b42e Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 16 Mar 2024 21:43:38 +0100 -Subject: [PATCH] Fixes for 64 bit time_t on 32 bit systems - ---- - src/XrdApps/Xrdadler32.cc | 2 +- - src/XrdBwm/XrdBwmLogger.cc | 5 +++-- - src/XrdHttp/XrdHttpReq.cc | 2 +- - src/XrdPfc/XrdPfcConfiguration.cc | 2 +- - src/XrdPosix/XrdPosixPreload32.cc | 4 ++++ - src/XrdSecsss/XrdSecsssKT.cc | 5 +++-- - src/XrdXrootd/XrdXrootdPrepare.cc | 3 ++- - src/XrdXrootd/XrdXrootdProtocol.cc | 9 +++++---- - 8 files changed, 20 insertions(+), 12 deletions(-) - -diff --git a/src/XrdApps/Xrdadler32.cc b/src/XrdApps/Xrdadler32.cc -index 4c4e0068b..ab333656e 100644 ---- a/src/XrdApps/Xrdadler32.cc -+++ b/src/XrdApps/Xrdadler32.cc -@@ -88,7 +88,7 @@ int fGetXattrAdler32(int fd, const char* attr, char *value) - int rc; - - if (fstat(fd, &st)) return 0; -- sprintf(mtime, "%ld", st.st_mtime); -+ sprintf(mtime, "%lld", (long long) st.st_mtime); - - #if defined(__linux__) || defined(__GNU__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) - rc = fgetxattr(fd, attr, attr_val, 25); -diff --git a/src/XrdBwm/XrdBwmLogger.cc b/src/XrdBwm/XrdBwmLogger.cc -index 0064f8b7e..ee0788396 100644 ---- a/src/XrdBwm/XrdBwmLogger.cc -+++ b/src/XrdBwm/XrdBwmLogger.cc -@@ -146,11 +146,12 @@ void XrdBwmLogger::Event(Info &eInfo) - tp->Tlen = snprintf(tp->Text, XrdBwmLoggerMsg::msgSize, - "%s%s" - "%s%s%c" -- "%ld%ld%ld" -+ "%lld%lld%lld" - "%d%d%d" - "%lld%d%c", - eInfo.Tident, eInfo.Lfn, eInfo.lclNode, eInfo.rmtNode, -- eInfo.Flow, eInfo.ATime, eInfo.BTime, eInfo.CTime, -+ eInfo.Flow, (long long) eInfo.ATime, -+ (long long) eInfo.BTime, (long long) eInfo.CTime, - eInfo.numqIn, eInfo.numqOut, eInfo.numqXeq, eInfo.Size, - eInfo.ESec, theEOL); - -diff --git a/src/XrdHttp/XrdHttpReq.cc b/src/XrdHttp/XrdHttpReq.cc -index 9a54293b5..b61587118 100644 ---- a/src/XrdHttp/XrdHttpReq.cc -+++ b/src/XrdHttp/XrdHttpReq.cc -@@ -656,7 +656,7 @@ void XrdHttpReq::appendOpaque(XrdOucString &s, XrdSecEntity *secent, char *hash, - - s += "&xrdhttptime="; - char buf[256]; -- sprintf(buf, "%ld", tnow); -+ sprintf(buf, "%lld", (long long) tnow); - s += buf; - - if (secent) { -diff --git a/src/XrdPfc/XrdPfcConfiguration.cc b/src/XrdPfc/XrdPfcConfiguration.cc -index 8f4bcd064..2cdb58693 100644 ---- a/src/XrdPfc/XrdPfcConfiguration.cc -+++ b/src/XrdPfc/XrdPfcConfiguration.cc -@@ -477,7 +477,7 @@ bool Cache::Config(const char *config_filename, const char *parameters) - if (m_configuration.m_cs_UVKeep < 0) - strcpy(uvk, "lru"); - else -- sprintf(uvk, "%ld", m_configuration.m_cs_UVKeep); -+ sprintf(uvk, "%lld", (long long) m_configuration.m_cs_UVKeep); - float rg = (m_configuration.m_RamAbsAvailable) / float(1024*1024*1024); - loff = snprintf(buff, sizeof(buff), "Config effective %s pfc configuration:\n" - " pfc.cschk %s uvkeep %s\n" -diff --git a/src/XrdPosix/XrdPosixPreload32.cc b/src/XrdPosix/XrdPosixPreload32.cc -index 3d99ba9d2..28c0cacef 100644 ---- a/src/XrdPosix/XrdPosixPreload32.cc -+++ b/src/XrdPosix/XrdPosixPreload32.cc -@@ -44,6 +44,10 @@ - #ifdef _FILE_OFFSET_BITS - #undef _FILE_OFFSET_BITS - #endif -+ -+#ifdef _TIME_BITS -+#undef _TIME_BITS -+#endif - #endif - - #define XRDPOSIXPRELOAD32 -diff --git a/src/XrdSecsss/XrdSecsssKT.cc b/src/XrdSecsss/XrdSecsssKT.cc -index 38b1ada15..0071b20f1 100644 ---- a/src/XrdSecsss/XrdSecsssKT.cc -+++ b/src/XrdSecsss/XrdSecsssKT.cc -@@ -371,10 +371,11 @@ int XrdSecsssKT::Rewrite(int Keep, int &numKeys, int &numTot, int &numExp) - if (ktP->Data.Exp && ktP->Data.Exp <= time(0)) {numExp++; continue;} - if (!isKey(ktCurr, ktP, 0)) {ktCurr.NUG(ktP); numID = 0;} - else if (Keep && numID >= Keep) continue; -- n = sprintf(buff, "%s0 u:%s g:%s n:%s N:%lld c:%ld e:%ld f:%lld k:", -+ n = sprintf(buff, "%s0 u:%s g:%s n:%s N:%lld c:%lld e:%lld f:%lld k:", - (numKeys ? "\n" : ""), - ktP->Data.User,ktP->Data.Grup,ktP->Data.Name,ktP->Data.ID, -- ktP->Data.Crt, ktP->Data.Exp, ktP->Data.Flags); -+ (long long) ktP->Data.Crt, (long long) ktP->Data.Exp, -+ ktP->Data.Flags); - numID++; numKeys++; keyB2X(ktP, kbuff); - if (write(ktFD, buff, n) < 0 - || write(ktFD, kbuff, ktP->Data.Len*2) < 0) break; -diff --git a/src/XrdXrootd/XrdXrootdPrepare.cc b/src/XrdXrootd/XrdXrootdPrepare.cc -index 8ce494c07..947009362 100644 ---- a/src/XrdXrootd/XrdXrootdPrepare.cc -+++ b/src/XrdXrootd/XrdXrootdPrepare.cc -@@ -129,7 +129,8 @@ int XrdXrootdPrepare::List(XrdXrootdPrepArgs &pargs, char *resp, int resplen) - else continue; - if ((up = (char *) index((const char *)(up+1), (int)'_'))) *up = ' '; - else continue; -- return snprintf(resp, resplen-1, "%s %ld", dp->d_name, buf.st_mtime); -+ return snprintf(resp, resplen-1, "%s %lld", -+ dp->d_name, (long long) buf.st_mtime); - } - - // Completed -diff --git a/src/XrdXrootd/XrdXrootdProtocol.cc b/src/XrdXrootd/XrdXrootdProtocol.cc -index e0e50e75d..ec98d7d1e 100644 ---- a/src/XrdXrootd/XrdXrootdProtocol.cc -+++ b/src/XrdXrootd/XrdXrootdProtocol.cc -@@ -798,8 +798,8 @@ int XrdXrootdProtocol::StatGen(struct stat &buf, char *xxBuff, int xxLen, - - // Format the default response: - // -- m = snprintf(xxBuff, xxLen, "%lld %lld %d %ld", -- Dev.uuid, fsz, flags, buf.st_mtime); -+ m = snprintf(xxBuff, xxLen, "%lld %lld %d %lld", -+ Dev.uuid, fsz, flags, (long long) buf.st_mtime); - // if (!xtnd || m >= xxLen) return xxLen; - // - -@@ -808,8 +808,9 @@ int XrdXrootdProtocol::StatGen(struct stat &buf, char *xxBuff, int xxLen, - char *origP = xxBuff; - char *nullP = xxBuff + m++; - xxBuff += m; xxLen -= m; -- n = snprintf(xxBuff, xxLen, "%ld %ld %04o ", -- buf.st_ctime, buf.st_atime, buf.st_mode&07777); -+ n = snprintf(xxBuff, xxLen, "%lld %lld %04o ", -+ (long long) buf.st_ctime, (long long) buf.st_atime, -+ buf.st_mode&07777); - if (n >= xxLen) return m; - xxBuff += n; xxLen -= n; - --- -2.44.0 - diff --git a/0001-Make-documentation-self-contained.patch b/0001-Make-documentation-self-contained.patch new file mode 100644 index 0000000..bba4217 --- /dev/null +++ b/0001-Make-documentation-self-contained.patch @@ -0,0 +1,30 @@ +From 8b924dbc92d3cce474421fbd7974f3d22d64d51c Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 12 Aug 2026 17:00:45 +0200 +Subject: [PATCH] Make documentation self-contained + +--- + README.md | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +diff --git a/README.md b/README.md +index bafd1112d..167d476e0 100644 +--- a/README.md ++++ b/README.md +@@ -1,12 +1,5 @@ +-[![Repology](https://img.shields.io/badge/repology-xrootd-blue)](https://repology.org/project/xrootd/packages) +-[![CDash](https://img.shields.io/badge/CDash-XRootD-limegreen)](https://my.cdash.org/index.php?project=XRootD) +-[![ABI](https://github.com/xrootd/xrootd/actions/workflows/ABI.yml/badge.svg)](https://github.com/xrootd/xrootd/actions/workflows/ABI.yml) +-[![CI](https://github.com/xrootd/xrootd/actions/workflows/CI.yml/badge.svg)](https://github.com/xrootd/xrootd/actions/workflows/CI.yml) +-[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11900/badge)](https://www.bestpractices.dev/projects/11900) +-[![LFX Health Score](https://insights.linuxfoundation.org/api/badge/health-score?project=xrootd)](https://insights.linuxfoundation.org/project/xrootd) +- +

+- ++ +

+ + ## XRootD: eXtended ROOT Daemon +-- +2.55.0 + diff --git a/0001-Unbundle-gtest.patch b/0001-Unbundle-gtest.patch new file mode 100644 index 0000000..1bbac2e --- /dev/null +++ b/0001-Unbundle-gtest.patch @@ -0,0 +1,25 @@ +From cd11f615e749a1fcdd353edd30505c4e8da897db Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 11 Aug 2026 23:53:15 +0200 +Subject: [PATCH] Unbundle gtest + +--- + cmake/XRootDFindLibs.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/XRootDFindLibs.cmake b/cmake/XRootDFindLibs.cmake +index e47dfb83e..3788f5ed4 100644 +--- a/cmake/XRootDFindLibs.cmake ++++ b/cmake/XRootDFindLibs.cmake +@@ -89,7 +89,7 @@ if( ENABLE_XRDOSSARC ) + endif() + + if( ENABLE_TESTS ) +- add_subdirectory(vendor/googletest EXCLUDE_FROM_ALL) ++ find_package( GTest REQUIRED ) + + set( BUILD_TESTS TRUE ) + +-- +2.55.0 + diff --git a/0001-Unbundle-tinyxml.patch b/0001-Unbundle-tinyxml.patch new file mode 100644 index 0000000..9c98c2c --- /dev/null +++ b/0001-Unbundle-tinyxml.patch @@ -0,0 +1,62 @@ +From bd81e2e922bd44c755ad77cf29ca45570cc934ec Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 21 Apr 2026 00:38:07 +0200 +Subject: [PATCH] Unbundle tinyxml + +--- + cmake/FindTinyXml.cmake | 18 ++++++++++++++++++ + src/XrdXml/tinyxml/CMakeLists.txt | 12 ++++++++++++ + 2 files changed, 30 insertions(+) + create mode 100644 cmake/FindTinyXml.cmake + +diff --git a/cmake/FindTinyXml.cmake b/cmake/FindTinyXml.cmake +new file mode 100644 +index 000000000..75c752707 +--- /dev/null ++++ b/cmake/FindTinyXml.cmake +@@ -0,0 +1,18 @@ ++FIND_PATH(TINYXML_INCLUDE_DIR tinyxml.h ++ HINTS ++ ${TINYXML_DIR} ++ $ENV{TINYXML_DIR} ++ /usr ++ PATH_SUFFIXES include ++) ++ ++FIND_LIBRARY(TINYXML_LIBRARIES tinyxml ++ HINTS ++ ${TINYXML_DIR} ++ $ENV{TINYXML_DIR} ++ /usr ++ PATH_SUFFIXES lib ++) ++ ++INCLUDE(FindPackageHandleStandardArgs) ++FIND_PACKAGE_HANDLE_STANDARD_ARGS(TinyXml DEFAULT_MSG TINYXML_LIBRARIES TINYXML_INCLUDE_DIR) +diff --git a/src/XrdXml/tinyxml/CMakeLists.txt b/src/XrdXml/tinyxml/CMakeLists.txt +index db7d4924e..f87ed8f46 100644 +--- a/src/XrdXml/tinyxml/CMakeLists.txt ++++ b/src/XrdXml/tinyxml/CMakeLists.txt +@@ -1,3 +1,13 @@ ++find_package(TinyXml) ++ ++if(TINYXML_FOUND) ++ ++add_library(XrdTinyXml INTERFACE IMPORTED GLOBAL) ++set_property(TARGET XrdTinyXml PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${TINYXML_INCLUDE_DIR}") ++set_property(TARGET XrdTinyXml PROPERTY INTERFACE_LINK_LIBRARIES "${TINYXML_LIBRARIES}") ++ ++else() ++ + add_library(XrdTinyXml OBJECT + tinystr.cpp tinystr.h + tinyxml.cpp tinyxml.h +@@ -13,3 +23,5 @@ set_target_properties(XrdTinyXml + target_include_directories(XrdTinyXml + PUBLIC $ + ) ++ ++endif() +-- +2.53.0 + diff --git a/sources b/sources index c940a38..a960b85 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xrootd-5.6.9.tar.gz) = 9ba15524451ebe7ee12d689f9c56d85508996285d01885236d396b7742ff6cc03036a6b4bd1424b0e1553cbf382c0954c10cec76fa1a99a7dfff330686bad0cd +SHA512 (xrootd-6.1.1.tar.gz) = ac1286cc54c60611bf17b6140b8cd7ef17a8318a4082cae38e5da040199ce4405490e583b376074c3ed29cf2d87c9bbda5da15c6a3091c83c7877abdc3343ebf diff --git a/xrootd-sysusers.conf b/xrootd-sysusers.conf new file mode 100644 index 0000000..e5e19f0 --- /dev/null +++ b/xrootd-sysusers.conf @@ -0,0 +1,2 @@ +# Name ID GECOS Home directory Shell +u xrootd 194 "XRootD runtime user" /var/spool/xrootd - diff --git a/xrootd.spec b/xrootd.spec index bbc684d..d2d55a4 100644 --- a/xrootd.spec +++ b/xrootd.spec @@ -8,28 +8,25 @@ %global ceph 0 %endif -%undefine __cmake_in_source_build -%undefine __cmake3_in_source_build - Name: xrootd Epoch: 1 -Version: 5.6.9 +Version: 6.1.1 Release: 1%{?dist} Summary: Extended ROOT file server -License: LGPL-3.0-or-later AND BSD-2-Clause AND BSD-3-Clause AND curl AND MIT AND Zlib -URL: https://xrootd.slac.stanford.edu/ +License: LGPL-3.0-or-later AND BSD-2-Clause AND BSD-3-Clause AND curl AND MIT AND Zlib AND Apache-2.0 AND MPL-2.0 +URL: https://xrootd.web.cern.ch Source0: %{url}/download/v%{version}/%{name}-%{version}.tar.gz +Source1: %{name}-sysusers.conf -# https://github.com/xrootd/xrootd/pull/2213 -Patch0: 0001-Fixes-for-64-bit-time_t-on-32-bit-systems.patch +# Unbundle tinyxml library +Patch0: 0001-Unbundle-tinyxml.patch +# Unbundle googletest/googlemock +Patch1: 0001-Unbundle-gtest.patch +# Make documentation self-contained +Patch2: 0001-Make-documentation-self-contained.patch -%if %{?rhel}%{!?rhel:0} == 7 -BuildRequires: cmake3 -BuildRequires: devtoolset-7-toolchain -%else BuildRequires: cmake BuildRequires: gcc-c++ -%endif BuildRequires: make BuildRequires: pkgconfig BuildRequires: fuse-devel @@ -37,41 +34,30 @@ BuildRequires: krb5-devel BuildRequires: libcurl-devel BuildRequires: tinyxml-devel BuildRequires: libxml2-devel +BuildRequires: libzip-devel BuildRequires: ncurses-devel BuildRequires: openssl-devel BuildRequires: perl-generators +%if %{?fedora}%{!?fedora:0} +# picojson not in RHEL/EPEL +BuildRequires: picojson-devel +%endif BuildRequires: readline-devel BuildRequires: zlib-devel -BuildRequires: doxygen -BuildRequires: graphviz BuildRequires: selinux-policy-devel BuildRequires: systemd-rpm-macros BuildRequires: systemd-devel -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 BuildRequires: python3-devel BuildRequires: python3-pip BuildRequires: python3-setuptools BuildRequires: python3-wheel -BuildRequires: python3-sphinx -%endif -%if %{?rhel}%{!?rhel:0} == 7 -BuildRequires: python2-devel -BuildRequires: python2-pip -BuildRequires: python2-setuptools -BuildRequires: python%{python3_pkgversion}-devel -BuildRequires: python%{python3_pkgversion}-pip -BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: python%{python3_other_pkgversion}-devel -BuildRequires: python%{python3_other_pkgversion}-pip -BuildRequires: python%{python3_other_pkgversion}-setuptools -BuildRequires: python2-sphinx -%endif BuildRequires: json-c-devel +BuildRequires: json-devel BuildRequires: libmacaroons-devel BuildRequires: libuuid-devel BuildRequires: voms-devel BuildRequires: scitokens-cpp-devel -BuildRequires: davix-devel +BuildRequires: libxcrypt-devel %if %{ceph} BuildRequires: librados-devel BuildRequires: libradosstriper-devel @@ -79,10 +65,21 @@ BuildRequires: libradosstriper-devel %ifnarch %{ix86} BuildRequires: isa-l-devel %endif +# For documentation +BuildRequires: doxygen +BuildRequires: graphviz +BuildRequires: python3-sphinx +# For tests BuildRequires: attr -BuildRequires: cppunit-devel +BuildRequires: curl BuildRequires: gtest-devel +BuildRequires: gmock-devel +BuildRequires: jq +BuildRequires: krb5-server +BuildRequires: krb5-workstation BuildRequires: openssl +BuildRequires: procps +BuildRequires: sqlite Requires: %{name}-server%{?_isa} = %{epoch}:%{version}-%{release} Requires: %{name}-selinux = %{epoch}:%{version}-%{release} @@ -107,7 +104,7 @@ Requires: %{name}-client-libs%{?_isa} = %{epoch}:%{version}-%{release} Requires: %{name}-server-libs%{?_isa} = %{epoch}:%{version}-%{release} Requires: expect Requires: logrotate -Requires(pre): shadow-utils +%{?sysusers_requires_compat} %{?systemd_requires} %description server @@ -144,6 +141,8 @@ development. %package client-libs Summary: Libraries used by xrootd clients +Provides: xrdcl-http = %{epoch}:%{version}-%{release} +Obsoletes: xrdcl-http < 1:6.0.0 Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} %description client-libs @@ -238,58 +237,26 @@ SciToken passed during a transfer. Configured appropriately, this allows the XRootD server admin to delegate authorization decisions for a subset of the namespace to an external issuer. -%package -n xrdcl-http -Summary: HTTP client plugin for XRootD -Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} -Requires: %{name}-client-libs%{?_isa} = %{epoch}:%{version}-%{release} - -%description -n xrdcl-http -xrdcl-http is an XRootD client plugin which allows XRootD to interact -with HTTP repositories. - %if %{ceph} %package ceph Summary: XRootD plugin for interfacing with the Ceph storage platform Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} +Requires: %{name}-server-libs%{?_isa} = %{epoch}:%{version}-%{release} %description ceph The xrootd-ceph is an OSS layer plugin for the XRootD server for interfacing with the Ceph storage platform. %endif -%if %{?rhel}%{!?rhel:0} == 7 -%package -n python2-%{name} -Summary: Python 2 bindings for xrootd -%py_provides python2-%{name} -Provides: %{name}-python = %{epoch}:%{version}-%{release} -Obsoletes: %{name}-python < 1:4.6.1-6 -Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} -Requires: %{name}-client-libs%{?_isa} = %{epoch}:%{version}-%{release} - -%description -n python2-%{name} -This package contains Python 2 bindings for xrootd. -%endif - -%package -n python%{python3_pkgversion}-%{name} +%package -n python3-%{name} Summary: Python 3 bindings for xrootd -%py_provides python%{python3_pkgversion}-%{name} +%py_provides python3-%{name} Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} Requires: %{name}-client-libs%{?_isa} = %{epoch}:%{version}-%{release} -%description -n python%{python3_pkgversion}-%{name} +%description -n python3-%{name} This package contains Python 3 bindings for xrootd. -%if %{?rhel}%{!?rhel:0} == 7 -%package -n python%{?python3_other_pkgversion}-%{name} -Summary: Python 3 bindings for xrootd -%py_provides python%{python3_other_pkgversion}-%{name} -Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} -Requires: %{name}-client-libs%{?_isa} = %{epoch}:%{version}-%{release} - -%description -n python%{?python3_other_pkgversion}-%{name} -This package contains Python 3 bindings for xrootd. -%endif - %package doc Summary: Developer documentation for the xrootd libraries BuildArch: noarch @@ -300,55 +267,49 @@ This package contains the API documentation of the xrootd libraries. %prep %setup -q -%patch -P 0 -p 1 +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 -%build -%if %{?rhel}%{!?rhel:0} == 7 -. /opt/rh/devtoolset-7/enable +# Delete bundled dependencies +rm src/XrdXml/tinyxml/tiny* +rm -r vendor/bats +rm -r vendor/googletest +%if %{?fedora}%{!?fedora:0} +# picojson not in RHEL/EPEL +rm -r vendor/picojson %endif -%cmake3 \ +%build +%cmake \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DFORCE_ENABLED:BOOL=ON \ -DENABLE_TESTS:BOOL=ON \ %if %{ceph} - -DXRDCEPH_SUBMODULE:BOOL=ON \ + -DENABLE_CEPH:BOOL=ON \ %endif %ifnarch %{ix86} -DENABLE_XRDEC:BOOL=ON \ - -DUSE_SYSTEM_ISAL:BOOL=ON \ %endif %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -DPIP_OPTIONS="--no-deps --use-pep517 --no-build-isolation --disable-pip-version-check --verbose" \ %else -DPIP_OPTIONS="--no-deps --disable-pip-version-check --verbose" \ %endif -%if %{?rhel}%{!?rhel:0} == 7 - -DXRD_PYTHON_REQ_VERSION=%{python2_version} -%else -DXRD_PYTHON_REQ_VERSION=%{python3_version} -%endif -%cmake3_build +%cmake_build -make -C packaging/common -f /usr/share/selinux/devel/Makefile +make -C config -f /usr/share/selinux/devel/Makefile doxygen Doxyfile +cp -p docs/images/xrootd-logo.png doxydoc/html %install -%if %{?rhel}%{!?rhel:0} == 7 -. /opt/rh/devtoolset-7/enable -%endif - -%cmake3_install +%cmake_install rm -f %{buildroot}%{_libdir}/libXrdCephPosix.so -rm -f %{buildroot}%{_bindir}/test-runner rm -f %{buildroot}%{_bindir}/xrdshmap -rm -f %{buildroot}%{_libdir}/libXrdCephTests.so -rm -f %{buildroot}%{_libdir}/libXrdClTestMonitor-5.so -rm -f %{buildroot}%{_libdir}/libXrdClTests.so -rm -f %{buildroot}%{_libdir}/libXrdClTestsHelper.so -rm -f %{buildroot}%{_libdir}/libXrdEcTests.so rm -f %{buildroot}%{python3_sitearch}/xrootd-*.*-info/direct_url.json rm -f %{buildroot}%{python3_sitearch}/xrootd-*.*-info/RECORD @@ -356,62 +317,48 @@ rm -f %{buildroot}%{python3_sitearch}/xrootd-*.*-info/RECORD sed s/pip/rpm/ \ -i %{buildroot}%{python3_sitearch}/xrootd-*.*-info/INSTALLER -%if %{?rhel}%{!?rhel:0} == 7 -%{__python3} -m pip install \ - --no-deps --disable-pip-version-check --verbose \ - --prefix %{buildroot}%{_prefix} %{_vpath_builddir}/bindings/python -%{__python3_other} -m pip install \ - --no-deps --disable-pip-version-check --verbose \ - --prefix %{buildroot}%{_prefix} %{_vpath_builddir}/bindings/python -%endif +rm -f %{buildroot}%{_libdir}/cmake/XRootD/uninstall.cmake -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 LD_LIBRARY_PATH=%{buildroot}%{_libdir} \ PYTHONPATH=%{buildroot}%{python3_sitearch} \ PYTHONDONTWRITEBYTECODE=1 \ -make -C bindings/python/docs html SPHINXBUILD=sphinx-build-3 -%endif -%if %{?rhel}%{!?rhel:0} == 7 -LD_LIBRARY_PATH=%{buildroot}%{_libdir} \ -PYTHONPATH=%{buildroot}%{python2_sitearch} \ -PYTHONDONTWRITEBYTECODE=1 \ -make -C bindings/python/docs html -%endif +make -C python/docs html # Service unit files mkdir -p %{buildroot}%{_unitdir} -install -m 644 packaging/common/xrootd@.service %{buildroot}%{_unitdir} -install -m 644 packaging/common/xrootd@.socket %{buildroot}%{_unitdir} -install -m 644 packaging/common/xrdhttp@.socket %{buildroot}%{_unitdir} -install -m 644 packaging/common/cmsd@.service %{buildroot}%{_unitdir} -install -m 644 packaging/common/frm_xfrd@.service %{buildroot}%{_unitdir} -install -m 644 packaging/common/frm_purged@.service %{buildroot}%{_unitdir} -mkdir -p %{buildroot}%{_tmpfilesdir} -install -m 644 packaging/rhel/xrootd.tmpfiles %{buildroot}%{_tmpfilesdir}/%{name}.conf +install -m 644 -p systemd/xrootd@.service %{buildroot}%{_unitdir} +install -m 644 -p systemd/xrootd@.socket %{buildroot}%{_unitdir} +install -m 644 -p systemd/xrdhttp@.socket %{buildroot}%{_unitdir} +install -m 644 -p systemd/cmsd@.service %{buildroot}%{_unitdir} +install -m 644 -p systemd/frm_xfrd@.service %{buildroot}%{_unitdir} +install -m 644 -p systemd/frm_purged@.service %{buildroot}%{_unitdir} + +mkdir -p %{buildroot}%{_sysusersdir} +install -m 644 -p %{SOURCE1} %{buildroot}%{_sysusersdir}/%{name}.conf # Server config mkdir -p %{buildroot}%{_sysconfdir}/%{name} -install -m 644 -p packaging/common/%{name}-clustered.cfg \ +install -m 644 -p config/%{name}-clustered.cfg \ %{buildroot}%{_sysconfdir}/%{name}/%{name}-clustered.cfg -install -m 644 -p packaging/common/%{name}-standalone.cfg \ +install -m 644 -p config/%{name}-standalone.cfg \ %{buildroot}%{_sysconfdir}/%{name}/%{name}-standalone.cfg -install -m 644 -p packaging/common/%{name}-filecache-clustered.cfg \ +install -m 644 -p config/%{name}-filecache-clustered.cfg \ %{buildroot}%{_sysconfdir}/%{name}/%{name}-filecache-clustered.cfg -install -m 644 -p packaging/common/%{name}-filecache-standalone.cfg \ +install -m 644 -p config/%{name}-filecache-standalone.cfg \ %{buildroot}%{_sysconfdir}/%{name}/%{name}-filecache-standalone.cfg -sed 's!/usr/lib64/!!' packaging/common/%{name}-http.cfg > \ +install -m 644 -p config/%{name}-http.cfg \ %{buildroot}%{_sysconfdir}/%{name}/%{name}-http.cfg # Client config mkdir -p %{buildroot}%{_sysconfdir}/%{name}/client.plugins.d -install -m 644 -p packaging/common/client.conf \ +install -m 644 -p config/client.conf \ %{buildroot}%{_sysconfdir}/%{name}/client.conf -sed 's!/usr/lib/!!' packaging/common/client-plugin.conf.example > \ - %{buildroot}%{_sysconfdir}/%{name}/client.plugins.d/client-plugin.conf.example -sed -e 's!/usr/lib64/!!' -e 's!-5!!' packaging/common/recorder.conf > \ +install -m 644 -p config/client.plugins.d/http.conf \ + %{buildroot}%{_sysconfdir}/%{name}/client.plugins.d/http.conf +install -m 644 -p config/client.plugins.d/recorder.conf \ %{buildroot}%{_sysconfdir}/%{name}/client.plugins.d/recorder.conf -sed 's!/usr/lib64/!!' packaging/common/http.client.conf.example > \ - %{buildroot}%{_sysconfdir}/%{name}/client.plugins.d/xrdcl-http-plugin.conf +install -m 644 -p config/client.plugins.d/s3.conf \ + %{buildroot}%{_sysconfdir}/%{name}/client.plugins.d/s3.conf chmod 644 %{buildroot}%{_datadir}/%{name}/utils/XrdCmsNotify.pm @@ -426,60 +373,63 @@ mkdir -p %{buildroot}%{_sysconfdir}/%{name}/config.d mkdir -p %{buildroot}%{_localstatedir}/log/%{name} mkdir -p %{buildroot}%{_localstatedir}/spool/%{name} +mkdir -p %{buildroot}%{_rundir}/%{name} mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d -install -m 644 -p packaging/common/%{name}.logrotate \ +install -m 644 -p config/%{name}.logrotate \ %{buildroot}%{_sysconfdir}/logrotate.d/%{name} mkdir -p %{buildroot}%{_datadir}/selinux/packages/%{name} -install -m 644 -p packaging/common/%{name}.pp \ +install -m 644 -p config/%{name}.pp \ %{buildroot}%{_datadir}/selinux/packages/%{name} # Documentation mkdir -p %{buildroot}%{_pkgdocdir} cp -pr doxydoc/html %{buildroot}%{_pkgdocdir} -cp -pr bindings/python/docs/build/html %{buildroot}%{_pkgdocdir}/python +cp -pr python/docs/build/html %{buildroot}%{_pkgdocdir}/python rm %{buildroot}%{_pkgdocdir}/python/.buildinfo %check +export HOSTNAME=localhost + +# Reduce socket path lengths used during tests +# rpm 4.20 uses a longer path to the build directory than earlier versions +# Tests fail with sockets in the build directory with rpm 4.20 +adminpath=$(mktemp -d -p /var/tmp) +trap "rm -rf ${adminpath}" EXIT + +sed "s!all.adminpath .*!all.adminpath ${adminpath}/XRootD!" \ + -i tests/XRootD/common.cfg + +for x in authenticated_cluster badredir cluster TPCTests xcachewithcsi ; do + sed "s!all.adminpath .*!all.adminpath ${adminpath}/${x}!" \ + -i %{_vpath_builddir}/tests/${x}/common.cfg +done + +# The badredir test fails when there is no network - exclude +# The posix test is broken for 32 bit archs ... +# https://github.com/xrootd/xrootd/issues/2559 + touch testfile if ( setfattr -n user.testattr -v testvalue testfile ) ; then - %ctest3 + %ctest -- -E \ +XRootD::badredir\|\ +%ifarch %{ix86} %{arm} +XRootD::posix\|\ +%endif +XrdCl::FileSystemTest.PlugInTest\|\ +XrdCl::FileTest.PlugInTest else echo "Extended file attributes not supported by file system" - echo "Don't run tests that require them" - exclude="\ -XrdCl::FileCopyTest|\ -XrdCl::FileSystemTest.PlugInTest|\ -XrdCl::FileSystemTest.ServerQueryTest|\ -XrdCl::FileSystemTest.XAttrTest|\ -XrdCl::FileTest.XAttrTest|\ -XrdCl::LocalFileHandlerTest.XAttrTest|\ -XrdCl::ThreadingTest|\ -XrdCl::WorkflowTest.CheckpointTest|\ -XrdCl::WorkflowTest.XAttrWorkflowTest|\ -XrdCl::XrdEcTests|\ -XrdEc::|\ -XRootD::cluster::test" - %ctest3 -- -E $exclude + echo "*** NOT RUNNING TESTS ***" fi rm testfile -%ldconfig_scriptlets libs - -%ldconfig_scriptlets client-libs - -%ldconfig_scriptlets server-libs - %pre server -getent group %{name} >/dev/null || groupadd -r %{name} -getent passwd %{name} >/dev/null || useradd -r -g %{name} -s /sbin/nologin \ - -d %{_localstatedir}/spool/%{name} -c "XRootD runtime user" %{name} +%sysusers_create_compat %{SOURCE1} %post server -%tmpfiles_create %{_tmpfilesdir}/%{name}.conf - if [ $1 -eq 1 ] ; then systemctl daemon-reload >/dev/null 2>&1 || : fi @@ -542,7 +492,7 @@ fi %dir %{_datadir}/%{name} %{_datadir}/%{name}/utils %{_unitdir}/* -%{_tmpfilesdir}/%{name}.conf +%{_sysusersdir}/%{name}.conf %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %dir %{_sysconfdir}/%{name}/config.d %attr(-,xrootd,xrootd) %config(noreplace) %{_sysconfdir}/%{name}/*.cfg @@ -561,18 +511,18 @@ fi %{_libdir}/libXrdUtils.so.* %{_libdir}/libXrdXml.so.* # Plugins -%{_libdir}/libXrdCksCalczcrc32-5.so -%{_libdir}/libXrdCryptossl-5.so -%{_libdir}/libXrdSec-5.so -%{_libdir}/libXrdSecProt-5.so -%{_libdir}/libXrdSecgsi-5.so -%{_libdir}/libXrdSecgsiAUTHZVO-5.so -%{_libdir}/libXrdSecgsiGMAPDN-5.so -%{_libdir}/libXrdSeckrb5-5.so -%{_libdir}/libXrdSecpwd-5.so -%{_libdir}/libXrdSecsss-5.so -%{_libdir}/libXrdSecunix-5.so -%{_libdir}/libXrdSecztn-5.so +%{_libdir}/libXrdCksCalczcrc32-6.so +%{_libdir}/libXrdCryptossl-6.so +%{_libdir}/libXrdSec-6.so +%{_libdir}/libXrdSecProt-6.so +%{_libdir}/libXrdSecgsi-6.so +%{_libdir}/libXrdSecgsiAUTHZVO-6.so +%{_libdir}/libXrdSecgsiGMAPDN-6.so +%{_libdir}/libXrdSeckrb5-6.so +%{_libdir}/libXrdSecpwd-6.so +%{_libdir}/libXrdSecsss-6.so +%{_libdir}/libXrdSecunix-6.so +%{_libdir}/libXrdSecztn-6.so %license COPYING* LICENSE %files devel @@ -593,6 +543,7 @@ fi %{_libdir}/libXrdUtils.so %{_libdir}/libXrdXml.so %{_libdir}/cmake/XRootD +%{_mandir}/man1/xrootd-config.1* %files client-libs %{_libdir}/libXrdCl.so.* @@ -607,16 +558,20 @@ fi %{_libdir}/libXrdSsiLib.so.* %{_libdir}/libXrdSsiShMap.so.* # Plugins -%{_libdir}/libXrdClProxyPlugin-5.so -%{_libdir}/libXrdClRecorder-5.so +%{_libdir}/libXrdClHttp-6.so +%{_libdir}/libXrdClProxyPlugin-6.so +%{_libdir}/libXrdClRecorder-6.so +%{_libdir}/libXrdClS3-6.so %dir %{_sysconfdir}/%{name} %config(noreplace) %{_sysconfdir}/%{name}/client.conf %dir %{_sysconfdir}/%{name}/client.plugins.d -%config(noreplace) %{_sysconfdir}/%{name}/client.plugins.d/client-plugin.conf.example +%config(noreplace) %{_sysconfdir}/%{name}/client.plugins.d/http.conf %config(noreplace) %{_sysconfdir}/%{name}/client.plugins.d/recorder.conf +%config(noreplace) %{_sysconfdir}/%{name}/client.plugins.d/s3.conf %files client-devel %{_includedir}/%{name}/XrdCl +%{_includedir}/%{name}/XrdClHttp %{_includedir}/%{name}/XrdPosix %{_libdir}/libXrdCl.so %{_libdir}/libXrdFfs.so @@ -626,23 +581,28 @@ fi %{_libdir}/libXrdHttpUtils.so.* %{_libdir}/libXrdServer.so.* # Plugins -%{_libdir}/libXrdBlacklistDecision-5.so -%{_libdir}/libXrdBwm-5.so -%{_libdir}/libXrdCmsRedirectLocal-5.so -%{_libdir}/libXrdFileCache-5.so -%{_libdir}/libXrdHttp-5.so -%{_libdir}/libXrdHttpTPC-5.so -%{_libdir}/libXrdMacaroons-5.so -%{_libdir}/libXrdN2No2p-5.so -%{_libdir}/libXrdOfsPrepGPI-5.so -%{_libdir}/libXrdOssCsi-5.so -%{_libdir}/libXrdOssSIgpfsT-5.so -%{_libdir}/libXrdPfc-5.so -%{_libdir}/libXrdPss-5.so -%{_libdir}/libXrdSsi-5.so -%{_libdir}/libXrdSsiLog-5.so -%{_libdir}/libXrdThrottle-5.so -%{_libdir}/libXrdXrootd-5.so +%{_libdir}/libXrdBlacklistDecision-6.so +%{_libdir}/libXrdBwm-6.so +%{_libdir}/libXrdCmsRedirectLocal-6.so +%{_libdir}/libXrdFileCache-6.so +%{_libdir}/libXrdHttp-6.so +%{_libdir}/libXrdHttpCors-6.so +%{_libdir}/libXrdHttpTPC-6.so +%{_libdir}/libXrdMacaroons-6.so +%{_libdir}/libXrdN2No2p-6.so +%{_libdir}/libXrdOfsPrepGPI-6.so +%{_libdir}/libXrdOssArc-6.so +%{_libdir}/libXrdOssCsi-6.so +%{_libdir}/libXrdOssMirage-6.so +%{_libdir}/libXrdOssSIgpfsT-6.so +%{_libdir}/libXrdOssStats-6.so +%{_libdir}/libXrdPfc-6.so +%{_libdir}/libXrdPfcPurgeQuota-6.so +%{_libdir}/libXrdPss-6.so +%{_libdir}/libXrdSsi-6.so +%{_libdir}/libXrdSsiLog-6.so +%{_libdir}/libXrdThrottle-6.so +%{_libdir}/libXrdXrootd-6.so %files server-devel %{_includedir}/%{name}/XrdAcc @@ -689,51 +649,159 @@ fi %{_mandir}/man1/xrootdfs.1* %files voms -%{_libdir}/libXrdVoms-5.so -%{_libdir}/libXrdHttpVOMS-5.so -%{_libdir}/libXrdSecgsiVOMS-5.so +%{_libdir}/libXrdVoms-6.so +%{_libdir}/libXrdHttpVOMS-6.so +%{_libdir}/libXrdSecgsiVOMS-6.so %doc %{_mandir}/man1/libXrdVoms.1* %doc %{_mandir}/man1/libXrdSecgsiVOMS.1* %doc src/XrdVoms/README.md %files scitokens -%{_libdir}/libXrdAccSciTokens-5.so +%{_libdir}/libXrdAccSciTokens-6.so %doc src/XrdSciTokens/README.md -%files -n xrdcl-http -%{_libdir}/libXrdClHttp-5.so -%config(noreplace) %{_sysconfdir}/%{name}/client.plugins.d/xrdcl-http-plugin.conf - %if %{ceph} %files ceph -%{_libdir}/libXrdCeph-5.so -%{_libdir}/libXrdCephXattr-5.so +%{_libdir}/libXrdCeph-6.so +%{_libdir}/libXrdCephXattr-6.so %{_libdir}/libXrdCephPosix.so.* %endif -%if %{?rhel}%{!?rhel:0} == 7 -%files -n python2-%{name} -%{python2_sitearch}/xrootd-*.*-info -%{python2_sitearch}/pyxrootd -%{python2_sitearch}/XRootD -%endif - -%files -n python%{python3_pkgversion}-%{name} +%files -n python3-%{name} %{python3_sitearch}/xrootd-*.*-info %{python3_sitearch}/pyxrootd %{python3_sitearch}/XRootD -%if %{?rhel}%{!?rhel:0} == 7 -%files -n python%{?python3_other_pkgversion}-%{name} -%{python3_other_sitearch}/xrootd-*.*-info -%{python3_other_sitearch}/pyxrootd -%{python3_other_sitearch}/XRootD -%endif - %files doc %doc %{_pkgdocdir} %changelog +* Wed Aug 12 2026 Mattias Ellert - 1:6.1.1-1 +- Update to version 6.1.1 + +* Wed Jul 22 2026 Python Maint - 1:6.1.0-3 +- Rebuilt for Python 3.15.0b4 ABI change + +* Fri Jul 17 2026 Fedora Release Engineering - 1:6.1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Tue Jun 23 2026 Mattias Ellert - 1:6.1.0-1 +- Update to version 6.1.0 +- Drop patches accepted upstream + +* Sat Jun 13 2026 Yaakov Selkowitz - 1:6.0.3-3 +- Rebuilt for openssl 4.0 + +* Thu Jun 04 2026 Python Maint - 1:6.0.3-2 +- Rebuilt for Python 3.15 + +* Tue Jun 02 2026 Mattias Ellert - 1:6.0.3-1 +- Update to version 6.0.3 + +* Thu May 21 2026 Mattias Ellert - 1:6.0.2-1 +- Update to version 6.0.2 +- Adapt to OpenSSL 4.0 +- Drop patches accepted upstream + +* Sat Apr 11 2026 Mattias Ellert - 1:6.0.0-1 +- Update to version 6.0.0 + +* Fri Mar 27 2026 Mattias Ellert - 1:5.9.2-1 +- Update to version 5.9.2 +- Drop patches accepted upstream or previously backported + +* Sat Jan 17 2026 Fedora Release Engineering - 1:5.9.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Tue Nov 18 2025 Mattias Ellert - 1:5.9.1-1 +- Update to version 5.9.1 + +* Fri Oct 10 2025 Mattias Ellert - 1:5.9.0-1 +- Update to version 5.9.0 + +* Fri Sep 19 2025 Python Maint - 1:5.8.4-4 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Fri Aug 15 2025 Python Maint - 1:5.8.4-3 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Fri Jul 25 2025 Fedora Release Engineering - 1:5.8.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jul 13 2025 Mattias Ellert - 1:5.8.4-1 +- Update to version 5.8.4 + +* Fri Jun 06 2025 Mattias Ellert - 1:5.8.3-1 +- Update to version 5.8.3 + +* Tue Jun 03 2025 Python Maint - 1:5.8.2-2 +- Rebuilt for Python 3.14 + +* Sun May 11 2025 Mattias Ellert - 1:5.8.2-1 +- Update to version 5.8.2 +- Use reserved uid and gid 194 for the xrootd user + - https://pagure.io/packaging-committee/issue/1444 + - https://src.fedoraproject.org/rpms/setup/pull-request/27 + +* Wed Apr 16 2025 Mattias Ellert - 1:5.8.1-1 +- Update to version 5.8.1 + +* Sat Mar 22 2025 Mattias Ellert - 1:5.8.0-1 +- Update to version 5.8.0 + +* Sat Mar 08 2025 Mattias Ellert - 1:5.7.3-4 +- Move user/group creation logic to sysusers.d fragment + +* Wed Feb 19 2025 Mattias Ellert - 1:5.7.3-3 +- Set HOSTNAME to localhost during testing + +* Sat Feb 01 2025 Björn Esser - 1:5.7.3-2 +- Add explicit BR: libxcrypt-devel + +* Wed Jan 29 2025 Mattias Ellert - 1:5.7.3-1 +- Update to version 5.7.3 +- Drop patches accepted upstream + +* Thu Jan 23 2025 Mattias Ellert - 1:5.7.2-4 +- Use CMAKE_BUILD_TYPE RelWithDebInfo to avoid -Werror in compiler flags + +* Sun Jan 19 2025 Mattias Ellert - 1:5.7.2-3 +- Fix compilation errors with GCC 15 + +* Sun Dec 08 2024 Mattias Ellert - 1:5.7.2-2 +- Fix errors in format strings + +* Fri Nov 29 2024 Mattias Ellert - 1:5.7.2-1 +- Update to version 5.7.2 +- Drop patches accepted upstream + +* Mon Sep 16 2024 Mattias Ellert - 1:5.7.1-2 +- Workaround doxygen non-reproducibility - make doc package noarch again +- Increase client timeouts for XRootD server tests + +* Wed Sep 04 2024 Mattias Ellert - 1:5.7.1-1 +- Update to version 5.7.1 +- Drop patches accepted upstream + +* Sat Jul 20 2024 Fedora Release Engineering - 1:5.7.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Jul 04 2024 Mattias Ellert - 1:5.7.0-2 +- Fix compilation error due to hidden overloaded virtual +- Make documentation package not noarch due to non-reproducible filenames + +* Wed Jul 03 2024 Mattias Ellert - 1:5.7.0-1 +- Update to version 5.7.0 +- Drop patches accepted upstream +- Drop EPEL 7 support from spec file (EOL) + +* Fri Jun 07 2024 Python Maint - 1:5.6.9-3 +- Rebuilt for Python 3.13 + +* Mon Jun 03 2024 Mattias Ellert - 1:5.6.9-2 +- Reduce socket path lengths used by tests for rpm 4.20 compatibility +- Avoid test failures due to using the same port numbers in different tests + * Sat Mar 16 2024 Mattias Ellert - 1:5.6.9-1 - Update to version 5.6.9