Compare commits

..

No commits in common. "rawhide" and "f37" have entirely different histories.

19 changed files with 1126 additions and 441 deletions

171
0001-Avoid-bus-errors.patch Normal file
View file

@ -0,0 +1,171 @@
From 9fddb12566049e6e89d06b94a28d60ff5409b27c Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Mon, 4 Dec 2023 13:00:07 +0100
Subject: [PATCH] Avoid bus errors
Do not dereference unaligned pointers.
---
src/XProtocol/XProtocol.cc | 4 ++--
src/XrdCl/XrdClXRootDMsgHandler.cc | 4 ++--
src/XrdZip/XrdZipCDFH.hh | 32 +++++++++++++++---------------
src/XrdZip/XrdZipEOCD.hh | 14 ++++++-------
src/XrdZip/XrdZipZIP64EOCD.hh | 18 ++++++++---------
src/XrdZip/XrdZipZIP64EOCDL.hh | 6 +++---
6 files changed, 39 insertions(+), 39 deletions(-)
diff --git a/src/XProtocol/XProtocol.cc b/src/XProtocol/XProtocol.cc
index e5a7df3dd..da9e74613 100644
--- a/src/XProtocol/XProtocol.cc
+++ b/src/XProtocol/XProtocol.cc
@@ -204,7 +204,7 @@ char* ClientFattrRequest::VVecInsert( const char *value, char *buffer )
//
char* ClientFattrRequest::NVecRead( char* buffer, kXR_unt16 &rc )
{
- rc = *reinterpret_cast<const kXR_unt16*>( buffer );
+ memcpy(&rc, buffer, sizeof(kXR_unt16));
rc = htons( rc );
buffer += sizeof( kXR_unt16 );
return buffer;
@@ -223,7 +223,7 @@ char* ClientFattrRequest::NVecRead( char* buffer, char *&name )
//
char* ClientFattrRequest::VVecRead( char* buffer, kXR_int32 &len )
{
- len = *reinterpret_cast<const kXR_int32*>( buffer );
+ memcpy(&len, buffer, sizeof(kXR_int32));
len = htonl( len );
buffer += sizeof( kXR_int32 );
return buffer;
diff --git a/src/XrdCl/XrdClXRootDMsgHandler.cc b/src/XrdCl/XrdClXRootDMsgHandler.cc
index 81e41d21b..da6513872 100644
--- a/src/XrdCl/XrdClXRootDMsgHandler.cc
+++ b/src/XrdCl/XrdClXRootDMsgHandler.cc
@@ -2445,10 +2445,10 @@ namespace XrdCl
{
if( sizeof( T ) > buflen ) return Status( stError, errDataError );
- result = *reinterpret_cast<T*>( buffer );
+ memcpy(&result, buffer, sizeof(T));
buffer += sizeof( T );
- buflen -= sizeof( T );
+ buflen -= sizeof( T );
return Status();
}
diff --git a/src/XrdZip/XrdZipCDFH.hh b/src/XrdZip/XrdZipCDFH.hh
index 96851ea35..e6dbb36f2 100644
--- a/src/XrdZip/XrdZipCDFH.hh
+++ b/src/XrdZip/XrdZipCDFH.hh
@@ -194,22 +194,22 @@ namespace XrdZip
//-------------------------------------------------------------------------
CDFH( const char *buffer, const uint32_t maxSize = 0 )
{
- zipVersion = *reinterpret_cast<const uint16_t*>( buffer + 4 );
- minZipVersion = *reinterpret_cast<const uint16_t*>( buffer + 6 );
- generalBitFlag = *reinterpret_cast<const uint16_t*>( buffer + 8 );
- compressionMethod = *reinterpret_cast<const uint16_t*>( buffer + 10 );
- timestmp.time = *reinterpret_cast<const uint16_t*>( buffer + 12 );
- timestmp.date = *reinterpret_cast<const uint16_t*>( buffer + 14 );
- ZCRC32 = *reinterpret_cast<const uint32_t*>( buffer + 16 );
- compressedSize = *reinterpret_cast<const uint32_t*>( buffer + 20 );
- uncompressedSize = *reinterpret_cast<const uint32_t*>( buffer + 24 );
- filenameLength = *reinterpret_cast<const uint16_t*>( buffer + 28 );
- extraLength = *reinterpret_cast<const uint16_t*>( buffer + 30 );
- commentLength = *reinterpret_cast<const uint16_t*>( buffer + 32 );
- nbDisk = *reinterpret_cast<const uint16_t*>( buffer + 34 );
- internAttr = *reinterpret_cast<const uint16_t*>( buffer + 36 );
- externAttr = *reinterpret_cast<const uint32_t*>( buffer + 38 );
- offset = *reinterpret_cast<const uint32_t*>( buffer + 42 );
+ zipVersion = to<uint16_t>(buffer + 4);
+ minZipVersion = to<uint16_t>(buffer + 6);
+ generalBitFlag = to<uint16_t>(buffer + 8);
+ compressionMethod = to<uint16_t>(buffer + 10);
+ timestmp.time = to<uint16_t>(buffer + 12);
+ timestmp.date = to<uint16_t>(buffer + 14);
+ ZCRC32 = to<uint32_t>(buffer + 16);
+ compressedSize = to<uint32_t>(buffer + 20);
+ uncompressedSize = to<uint32_t>(buffer + 24);
+ filenameLength = to<uint16_t>(buffer + 28);
+ extraLength = to<uint16_t>(buffer + 30);
+ commentLength = to<uint16_t>(buffer + 32);
+ nbDisk = to<uint16_t>(buffer + 34);
+ internAttr = to<uint16_t>(buffer + 36);
+ externAttr = to<uint32_t>(buffer + 38);
+ offset = to<uint32_t>(buffer + 42);
if(maxSize > 0 && (uint32_t)(cdfhBaseSize+filenameLength + extraLength + commentLength) > maxSize){
throw bad_data();
}
diff --git a/src/XrdZip/XrdZipEOCD.hh b/src/XrdZip/XrdZipEOCD.hh
index d38a6a1c8..575a300bc 100644
--- a/src/XrdZip/XrdZipEOCD.hh
+++ b/src/XrdZip/XrdZipEOCD.hh
@@ -53,13 +53,13 @@ namespace XrdZip
//-------------------------------------------------------------------------
EOCD( const char *buffer, uint32_t maxSize = 0 )
{
- nbDisk = *reinterpret_cast<const uint16_t*>( buffer + 4 );
- nbDiskCd = *reinterpret_cast<const uint16_t*>( buffer + 6 );
- nbCdRecD = *reinterpret_cast<const uint16_t*>( buffer + 8 );
- nbCdRec = *reinterpret_cast<const uint16_t*>( buffer + 10 );
- cdSize = *reinterpret_cast<const uint32_t*>( buffer + 12 );
- cdOffset = *reinterpret_cast<const uint32_t*>( buffer + 16 );
- commentLength = *reinterpret_cast<const uint16_t*>( buffer + 20 );
+ nbDisk = to<uint16_t>(buffer + 4);
+ nbDiskCd = to<uint16_t>(buffer + 6);
+ nbCdRecD = to<uint16_t>(buffer + 8);
+ nbCdRec = to<uint16_t>(buffer + 10);
+ cdSize = to<uint32_t>(buffer + 12);
+ cdOffset = to<uint32_t>(buffer + 16);
+ commentLength = to<uint16_t>(buffer + 20);
if(maxSize > 0 && (uint32_t)(eocdBaseSize + commentLength) > maxSize)
throw bad_data();
comment = std::string( buffer + 22, commentLength );
diff --git a/src/XrdZip/XrdZipZIP64EOCD.hh b/src/XrdZip/XrdZipZIP64EOCD.hh
index c7ab0a3bb..09e5ecc4f 100644
--- a/src/XrdZip/XrdZipZIP64EOCD.hh
+++ b/src/XrdZip/XrdZipZIP64EOCD.hh
@@ -28,15 +28,15 @@ namespace XrdZip
ZIP64_EOCD( const char* buffer ):
extensibleDataLength( 0 )
{
- zip64EocdSize = *reinterpret_cast<const uint64_t*>( buffer + 4 );
- zipVersion = *reinterpret_cast<const uint16_t*>( buffer + 12 );
- minZipVersion = *reinterpret_cast<const uint16_t*>( buffer + 14 );
- nbDisk = *reinterpret_cast<const uint32_t*>( buffer + 16 );
- nbDiskCd = *reinterpret_cast<const uint32_t*>( buffer + 20 );
- nbCdRecD = *reinterpret_cast<const uint64_t*>( buffer + 24 );
- nbCdRec = *reinterpret_cast<const uint64_t*>( buffer + 32 );
- cdSize = *reinterpret_cast<const uint64_t*>( buffer + 40 );
- cdOffset = *reinterpret_cast<const uint64_t*>( buffer + 48 );
+ zip64EocdSize = to<uint64_t>(buffer + 4);
+ zipVersion = to<uint16_t>(buffer + 12);
+ minZipVersion = to<uint16_t>(buffer + 14);
+ nbDisk = to<uint32_t>(buffer + 16);
+ nbDiskCd = to<uint32_t>(buffer + 20);
+ nbCdRecD = to<uint64_t>(buffer + 24);
+ nbCdRec = to<uint64_t>(buffer + 32);
+ cdSize = to<uint64_t>(buffer + 40);
+ cdOffset = to<uint64_t>(buffer + 48);
zip64EocdTotalSize = zip64EocdBaseSize + extensibleDataLength;
}
diff --git a/src/XrdZip/XrdZipZIP64EOCDL.hh b/src/XrdZip/XrdZipZIP64EOCDL.hh
index d2cea2edc..cceca756a 100644
--- a/src/XrdZip/XrdZipZIP64EOCDL.hh
+++ b/src/XrdZip/XrdZipZIP64EOCDL.hh
@@ -26,9 +26,9 @@ namespace XrdZip
//-------------------------------------------------------------------------
ZIP64_EOCDL( const char *buffer )
{
- nbDiskZip64Eocd = *reinterpret_cast<const uint32_t*>( buffer + 4 );
- zip64EocdOffset = *reinterpret_cast<const uint64_t*>( buffer + 8 );
- totalNbDisks = *reinterpret_cast<const uint32_t*>( buffer + 16 );
+ nbDiskZip64Eocd = to<uint32_t>(buffer + 4);
+ zip64EocdOffset = to<uint64_t>(buffer + 8);
+ totalNbDisks = to<uint32_t>(buffer + 16);
}
//-------------------------------------------------------------------------
--
2.43.0

View file

@ -0,0 +1,105 @@
From 2c256ffaf44d8d811398c6dfe0ea754ae55672eb Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Wed, 22 Nov 2023 06:20:19 +0100
Subject: [PATCH] Avoid /tmp when running some tests
Many features in xrootd require file system support for extended file
attributes. Tests that run tests on these features fail if the file
system does not support them. The /tmp directory in many Linux
installations is using a tmpfs partition. The tmpfs file system does
not support extended file attributes, so some tests that use /tmp to
store files fail.
This commit changes some affected tests so that they create the
temporary directory containing the test files in the current working
directory instead of /tmp.
Example of failure:
17/34 Test #20: XrdEc::AlignedWriteTest ...................................................***Failed 0.07 sec
You have selected:
Selected tests/
Selected tests/MicroTest::AlignedWriteTest
Running:
.F
MicroTest.cc:506:Assertion
Test name: MicroTest::AlignedWriteTest
assertion failed
- Expression: _st.IsOK()
- [*status]: [ERROR] Internal error: std::bad_alloc
Failures !!!
Run: 1 Failure total: 1 Failures: 1 Errors: 0
The following tests FAILED:
20 - XrdEc::AlignedWriteTest (Failed)
21 - XrdEc::SmallWriteTest (Failed)
22 - XrdEc::BigWriteTest (Failed)
23 - XrdEc::VectorReadTest (Failed)
24 - XrdEc::IllegalVectorReadTest (Failed)
25 - XrdEc::AlignedWrite1MissingTest (Failed)
26 - XrdEc::AlignedWrite2MissingTest (Failed)
27 - XrdEc::AlignedWriteTestIsalCrcNoMt (Failed)
28 - XrdEc::SmallWriteTestIsalCrcNoMt (Failed)
29 - XrdEc::BigWriteTestIsalCrcNoMt (Failed)
30 - XrdEc::AlignedWrite1MissingTestIsalCrcNoMt (Failed)
31 - XrdEc::AlignedWrite2MissingTestIsalCrcNoMt (Failed)
In addition to addressing the above failures, the commit also
addresses the following warnings during the XRootD::smoke-test test:
34: setfattr: /tmp/xrdfs-test-ChGSEb/01.ref: Operation not supported
34: Extended attributes not supported, using downloaded checksums for server checks
34: setfattr: /tmp/xrdfs-test-ChGSEb/02.ref: Operation not supported
34: Extended attributes not supported, using downloaded checksums for server checks
34: setfattr: /tmp/xrdfs-test-ChGSEb/03.ref: Operation not supported
34: Extended attributes not supported, using downloaded checksums for server checks
---
tests/XRootD/smoke.sh | 2 +-
tests/XrdEcTests/MicroTest.cc | 6 +++++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/tests/XRootD/smoke.sh b/tests/XRootD/smoke.sh
index 58e0f93f0..76ae67fd9 100755
--- a/tests/XRootD/smoke.sh
+++ b/tests/XRootD/smoke.sh
@@ -39,7 +39,7 @@ ${XRDFS} ${HOST} statvfs /
${XRDFS} ${HOST} spaceinfo /
# create local temporary directory
-TMPDIR=$(mktemp -d /tmp/xrdfs-test-XXXXXX)
+TMPDIR=$(mktemp -d ${PWD}/xrdfs-test-XXXXXX)
# cleanup after ourselves if something fails
trap "rm -rf ${TMPDIR}" EXIT
diff --git a/tests/XrdEcTests/MicroTest.cc b/tests/XrdEcTests/MicroTest.cc
index d02743351..5b375c6fe 100644
--- a/tests/XrdEcTests/MicroTest.cc
+++ b/tests/XrdEcTests/MicroTest.cc
@@ -34,6 +34,8 @@
#include "XrdZip/XrdZipCDFH.hh"
+#include "XrdSys/XrdSysPlatform.hh"
+
#include <string>
#include <memory>
#include <limits>
@@ -280,7 +282,9 @@ void MicroTest::Init( bool usecrc32c )
objcfg.reset( new ObjCfg( "test.txt", nbdata, nbparity, chsize, usecrc32c, true ) );
rawdata.clear();
- char tmpdir[32] = "/tmp/xrootd-xrdec-XXXXXX";
+ char tmpdir[MAXPATHLEN];
+ CPPUNIT_ASSERT( getcwd(tmpdir, MAXPATHLEN - 21) );
+ strcat(tmpdir, "/xrootd-xrdec-XXXXXX");
// create the data directory
CPPUNIT_ASSERT( mkdtemp(tmpdir) );
datadir = tmpdir;
--
2.42.0

View file

@ -0,0 +1,27 @@
From 896f95c382b3bde7d7c6d184649a7e145d9f3419 Mon Sep 17 00:00:00 2001
From: Jonas Hahnfeld <jonas.hahnfeld@cern.ch>
Date: Mon, 4 Dec 2023 11:51:44 +0100
Subject: [PATCH 1/2] [CMake] Trace actual variables
---
cmake/XRootDConfig.cmake.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/cmake/XRootDConfig.cmake.in b/cmake/XRootDConfig.cmake.in
index 971b415a7..0f95a8f54 100644
--- a/cmake/XRootDConfig.cmake.in
+++ b/cmake/XRootDConfig.cmake.in
@@ -174,8 +174,8 @@ message(TRACE "XRootD_VERSION_NUMBER = '${XRootD_VERSION_NUMBER}'")
message(TRACE "XRootD_FOUND = '${XRootD_FOUND}'")
message(TRACE "XRootD_INSTALL_PREFIX = '@CMAKE_INSTALL_PREFIX@'")
-message(TRACE "XRootD_INCLUDE_DIR = '@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@'")
-message(TRACE "XRootD_LIBRARY_DIR = '@PACKAGE_CMAKE_INSTALL_LIBDIR@'")
+message(TRACE "XRootD_INCLUDE_DIR = '${XRootD_INCLUDE_DIR}'")
+message(TRACE "XRootD_LIBRARY_DIR = '${XRootD_LIBRARY_DIR}'")
message(TRACE "XRootD_LIBRARIES = '${XRootD_LIBRARIES}'")
foreach(COMPONENT UTILS CLIENT SERVER HTTP POSIX SSI)
--
2.43.0

View file

@ -0,0 +1,34 @@
From b853ff8e86ecc82fc5be87d95fe6bcf28bfaa469 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Sun, 19 Nov 2023 09:55:54 +0100
Subject: [PATCH] Fix maybe-uninitialized warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
.../src/XrdEc/XrdEcReader.cc:934:72: error: info may be used uninitialized [-Werror=maybe-uninitialized]
934 | blockMap[blkid]->stripes[strpid].resize( info ->GetSize() );
| ^
.../src/XrdEc/XrdEcReader.cc:932:42: note: info was declared here
932 | XrdCl::StatInfo* info;
| ^
---
src/XrdEc/XrdEcReader.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/XrdEc/XrdEcReader.cc b/src/XrdEc/XrdEcReader.cc
index 62dcb0461..9ac55b538 100644
--- a/src/XrdEc/XrdEcReader.cc
+++ b/src/XrdEc/XrdEcReader.cc
@@ -929,7 +929,7 @@ namespace XrdEc
}
blockMap[blkid]->state[strpid] = block_t::Loading;
- XrdCl::StatInfo* info;
+ XrdCl::StatInfo* info = nullptr;
if(dataarchs[url]->Stat(objcfg.GetFileName(blkid, strpid), info).IsOK())
blockMap[blkid]->stripes[strpid].resize( info ->GetSize() );
--
2.42.0

View file

@ -0,0 +1,34 @@
From fde7669ff9006495034a493386c72d080158f027 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Wed, 22 Nov 2023 19:29:12 +0100
Subject: [PATCH] If extended attributes are not supported xattr->Get() returns
-ENOTSUP. When this small negative value is cast to a size_t in the call to
new on the following line it becomes a very large integer and the request to
allocate this enormous memory block fails with a std::bad_alloc exception.
This commit adds a check on the returned size and returns an error if
it is negative avoiding triggering the std::bad_alloc exception.
---
src/XrdCl/XrdClLocalFileHandler.cc | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/XrdCl/XrdClLocalFileHandler.cc b/src/XrdCl/XrdClLocalFileHandler.cc
index e25d8f2a2..42cce9a30 100644
--- a/src/XrdCl/XrdClLocalFileHandler.cc
+++ b/src/XrdCl/XrdClLocalFileHandler.cc
@@ -664,6 +664,12 @@ namespace XrdCl
std::unique_ptr<char[]> buffer;
int size = xattr->Get( name.c_str(), 0, 0, 0, fd );
+ if( size < 0 )
+ {
+ XRootDStatus status( stError, errLocalError, -size );
+ response.push_back( XAttr( *itr, "", status ) );
+ continue;
+ }
buffer.reset( new char[size] );
int ret = xattr->Get( name.c_str(), buffer.get(), size, 0, fd );
--
2.43.0

View file

@ -1,30 +0,0 @@
From 8b924dbc92d3cce474421fbd7974f3d22d64d51c Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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)
-
<p align="center">
- <img src="https://xrootd.org/images/xrootd-logo.png"/>
+ <img src="xrootd-logo.png"/>
</p>
## XRootD: eXtended ROOT Daemon
--
2.55.0

View file

@ -0,0 +1,80 @@
From 190c09059122542971530169746effff769e583a Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Sat, 28 Oct 2023 15:54:24 +0200
Subject: [PATCH 1/3] Posix open() called with wrong flags in test
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
OpenFlags::Flags should not be used for the flags argument in a posix
open() call, since they use different values.
The OpenFlags::Flags values are defined in src/XrdCl/XrdClFileSystem.hh:
MakePath = kXR_mkpath, //!< Create directory path if it does not
//!< already exist
New = kXR_new, //!< Open the file only if it does not already
Update = kXR_open_updt, //!< Open for reading and writing
The kXR_* values are defined in src/XProtocol/XProtocol.hh:
kXR_new = 0x0008, // 8
kXR_mkpath = 0x0100, // 256
kXR_open_updt= 0x0020, // 32
As can be seen these do not correspond to the O_* values used in the
posix open() call. What they actually mean depends on the system and
varies between architectures.
On hppa Linux O_CREAT is defind in /usr/include/hppa-linux-gnu/asm/fcntl.h:
#define O_CREAT 000000400 /* not fcntl */
Since 0o400 = 0x100 = 256 this by chance matches kXR_mkpath and
triggers the error below. On other architectures the wrong flags are
just silently accepted.
In file included from /usr/include/fcntl.h:342,
from /<<PKGBUILDDIR>>/tests/XrdClTests/LocalFileHandlerTest.cc:25:
In function int open(const char*, int, ...),
inlined from void LocalFileHandlerTest::WriteMkdirTest() at /<<PKGBUILDDIR>>/tests/XrdClTests/LocalFileHandlerTest.cc:210:17:
/usr/include/hppa-linux-gnu/bits/fcntl2.h:50:31: error: call to __open_missing_mode declared with attribute error: open with O_CREAT or O_TMPFILE in second argument needs 3 arguments
50 | __open_missing_mode ();
| ~~~~~~~~~~~~~~~~~~~~^~
---
tests/XrdClTests/LocalFileHandlerTest.cc | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/XrdClTests/LocalFileHandlerTest.cc b/tests/XrdClTests/LocalFileHandlerTest.cc
index 0a58ed6ef..f8618c14f 100644
--- a/tests/XrdClTests/LocalFileHandlerTest.cc
+++ b/tests/XrdClTests/LocalFileHandlerTest.cc
@@ -142,7 +142,7 @@ void LocalFileHandlerTest::WriteTest(){
//----------------------------------------------------------------------------
// Read file with POSIX calls to confirm correct write
//----------------------------------------------------------------------------
- int fd = open( targetURL.c_str(), flags );
+ int fd = open( targetURL.c_str(), O_RDWR );
int rc = read( fd, buffer, int( writeSize ) );
CPPUNIT_ASSERT_EQUAL( rc, int( writeSize ) );
std::string read( (char *)buffer, writeSize );
@@ -176,7 +176,7 @@ void LocalFileHandlerTest::WriteWithOffsetTest(){
//----------------------------------------------------------------------------
// Read file with POSIX calls to confirm correct write
//----------------------------------------------------------------------------
- int fd = open( targetURL.c_str(), flags );
+ int fd = open( targetURL.c_str(), O_RDWR );
int rc = read( fd, buffer, offset );
CPPUNIT_ASSERT_EQUAL( rc, int( offset ) );
std::string read( (char *)buffer, offset );
@@ -207,7 +207,7 @@ void LocalFileHandlerTest::WriteMkdirTest(){
//----------------------------------------------------------------------------
// Read file with POSIX calls to confirm correct write
//----------------------------------------------------------------------------
- int fd = open( targetURL.c_str(), flags );
+ int fd = open( targetURL.c_str(), O_RDWR );
int rc = read( fd, buffer, writeSize );
CPPUNIT_ASSERT_EQUAL( rc, int( writeSize ) );
std::string read( buffer, writeSize );
--
2.41.0

View file

@ -0,0 +1,36 @@
From fe2224d33b0c310e19d497e6e795f779c8e88001 Mon Sep 17 00:00:00 2001
From: Guilherme Amadio <amadio@cern.ch>
Date: Thu, 30 Nov 2023 10:02:03 +0100
Subject: [PATCH] Reapply "[XrdCl] Make sure error message does not include a
null-character."
This reverts commit 5a832596a59d1055f59620d43fbb740955ce6787.
Even though commit 9987b4b41990df69ae611a523acb76c69eeccbbb did fix
an error message that had a second null termination character, reverting
this change was a mistake, as this change is actually still needed to
avoid the single terminating null byte in error messages from appearing
in the output of the client.
Closes: #2138
---
src/XrdCl/XrdClXRootDMsgHandler.cc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/XrdCl/XrdClXRootDMsgHandler.cc b/src/XrdCl/XrdClXRootDMsgHandler.cc
index 1bd60a3e3..81e41d21b 100644
--- a/src/XrdCl/XrdClXRootDMsgHandler.cc
+++ b/src/XrdCl/XrdClXRootDMsgHandler.cc
@@ -1202,7 +1202,9 @@ namespace XrdCl
if( pStatus.code == errErrorResponse )
{
st->errNo = rsp->body.error.errnum;
- std::string errmsg( rsp->body.error.errmsg, rsp->hdr.dlen-4 );
+ // omit the last character as the string returned from the server
+ // (acording to protocol specs) should be null-terminated
+ std::string errmsg( rsp->body.error.errmsg, rsp->hdr.dlen-5 );
if( st->errNo == kXR_noReplicas && !pLastError.IsOK() )
errmsg += " Last seen error: " + pLastError.ToString();
st->SetErrorMessage( errmsg );
--
2.43.0

View file

@ -0,0 +1,64 @@
From e00f462610c8d0b1798a79ebbab7bc7561b42d2b Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 31 Oct 2023 09:45:58 +0100
Subject: [PATCH] The installed cmake files are now generated and contain
architecture dependent information. Installing them in datadir (/usr/share)
now results in conflicts if packages for more than one architecture is
installed in parallel. Move the installed cmake files to libdir
(/usr/lib(64)?, /usr/lib/<architecture>).
Found by Debian's MultiArch hinter.
---
CMakeLists.txt | 4 ++--
packaging/debian/libxrootd-dev.install | 2 +-
packaging/rhel/xrootd.spec.in | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 36a7f62b5..438ff5666 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,7 +68,7 @@ configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in cmake/${PROJE
INSTALL_PREFIX
${CMAKE_INSTALL_PREFIX}
INSTALL_DESTINATION
- ${CMAKE_INSTALL_DATADIR}/xrootd/cmake
+ ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
PATH_VARS
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_LIBDIR
@@ -76,7 +76,7 @@ configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in cmake/${PROJE
)
install(DIRECTORY ${PROJECT_BINARY_DIR}/cmake/
- DESTINATION ${CMAKE_INSTALL_DATADIR}/xrootd/cmake)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
#-------------------------------------------------------------------------------
# Configure an 'uninstall' target
diff --git a/packaging/debian/libxrootd-dev.install b/packaging/debian/libxrootd-dev.install
index c92412235..e6ffeaa6b 100644
--- a/packaging/debian/libxrootd-dev.install
+++ b/packaging/debian/libxrootd-dev.install
@@ -13,4 +13,4 @@ usr/lib/*/libXrdCrypto.so
usr/lib/*/libXrdCryptoLite.so
usr/lib/*/libXrdUtils.so
usr/lib/*/libXrdXml.so
-usr/share/xrootd/cmake/XRootDConfig.cmake
+usr/lib/*/cmake/XRootD
diff --git a/packaging/rhel/xrootd.spec.in b/packaging/rhel/xrootd.spec.in
index 449de06a3..4a6af8f18 100644
--- a/packaging/rhel/xrootd.spec.in
+++ b/packaging/rhel/xrootd.spec.in
@@ -919,7 +919,7 @@ fi
%{_libdir}/libXrdUtils.so
%{_libdir}/libXrdXml.so
%{_includedir}/xrootd/XrdXml/XrdXmlReader.hh
-%{_datadir}/xrootd/cmake
+%{_libdir}/cmake/XRootD
%files client-libs
%defattr(-,root,root,-)
--
2.41.0

View file

@ -1,25 +0,0 @@
From cd11f615e749a1fcdd353edd30505c4e8da897db Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,62 +0,0 @@
From bd81e2e922bd44c755ad77cf29ca45570cc934ec Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
+
+endif()
--
2.53.0

View file

@ -0,0 +1,61 @@
From d414b2951855d2dbcba952ec9f271d918865e391 Mon Sep 17 00:00:00 2001
From: Guilherme Amadio <amadio@cern.ch>
Date: Thu, 2 Nov 2023 17:09:28 +0100
Subject: [PATCH] [XrdZip] Include <cstdint> for standard int types
---
src/XrdZip/XrdZipDataDescriptor.hh | 2 ++
src/XrdZip/XrdZipExtra.hh | 3 +++
src/XrdZip/XrdZipUtils.hh | 6 +++---
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/XrdZip/XrdZipDataDescriptor.hh b/src/XrdZip/XrdZipDataDescriptor.hh
index 22e76b5e1..9e48b2446 100644
--- a/src/XrdZip/XrdZipDataDescriptor.hh
+++ b/src/XrdZip/XrdZipDataDescriptor.hh
@@ -25,6 +25,8 @@
#ifndef SRC_XRDZIP_XRDZIPDATADESCRIPTOR_HH_
#define SRC_XRDZIP_XRDZIPDATADESCRIPTOR_HH_
+#include <cstdint>
+
namespace XrdZip
{
//---------------------------------------------------------------------------
diff --git a/src/XrdZip/XrdZipExtra.hh b/src/XrdZip/XrdZipExtra.hh
index c415faa7e..041b50ec2 100644
--- a/src/XrdZip/XrdZipExtra.hh
+++ b/src/XrdZip/XrdZipExtra.hh
@@ -27,6 +27,9 @@
#include "XrdZip/XrdZipUtils.hh"
+#include <cstdint>
+#include <sys/types.h>
+
namespace XrdZip
{
//---------------------------------------------------------------------------
diff --git a/src/XrdZip/XrdZipUtils.hh b/src/XrdZip/XrdZipUtils.hh
index 1d48e543d..619f16daf 100644
--- a/src/XrdZip/XrdZipUtils.hh
+++ b/src/XrdZip/XrdZipUtils.hh
@@ -25,12 +25,12 @@
#ifndef SRC_XRDZIP_XRDZIPUTILS_HH_
#define SRC_XRDZIP_XRDZIPUTILS_HH_
+#include <algorithm>
+#include <cstdint>
#include <cstring>
-
#include <ctime>
-#include <vector>
-#include <algorithm>
#include <iterator>
+#include <vector>
namespace XrdZip
{
--
2.43.0

View file

@ -0,0 +1,102 @@
From 8764acdd57aa98a1fa48706ddb1bc857ae021299 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Mon, 4 Dec 2023 19:07:19 +0100
Subject: [PATCH] [XrdZip] Support Big Endian
---
src/XrdZip/XrdZipLFH.hh | 3 ++-
src/XrdZip/XrdZipUtils.hh | 35 ++++++++++++++++++++++++++++++++++-
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/src/XrdZip/XrdZipLFH.hh b/src/XrdZip/XrdZipLFH.hh
index 972f373a4..aac99848e 100644
--- a/src/XrdZip/XrdZipLFH.hh
+++ b/src/XrdZip/XrdZipLFH.hh
@@ -80,7 +80,8 @@ namespace XrdZip
from_buffer( minZipVersion, buffer );
from_buffer( generalBitFlag, buffer );
from_buffer( compressionMethod, buffer );
- from_buffer( timestmp, buffer );
+ from_buffer( timestmp.time, buffer );
+ from_buffer( timestmp.date, buffer );
from_buffer( ZCRC32, buffer );
from_buffer( compressedSize, buffer );
from_buffer( uncompressedSize, buffer );
diff --git a/src/XrdZip/XrdZipUtils.hh b/src/XrdZip/XrdZipUtils.hh
index 619f16daf..892771875 100644
--- a/src/XrdZip/XrdZipUtils.hh
+++ b/src/XrdZip/XrdZipUtils.hh
@@ -27,13 +27,36 @@
#include <algorithm>
#include <cstdint>
+#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iterator>
#include <vector>
+#if defined(__APPLE__)
+#include <libkern/OSByteOrder.h>
+#else
+#include <byteswap.h>
+#endif
+
+#if defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || \
+ defined(__IEEE_BIG_ENDIAN) || \
+ (defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN)
+#define XrdZip_Big_Endian
+#endif
+
namespace XrdZip
{
+#if defined(__APPLE__)
+ inline static uint16_t BSwap(uint16_t x) { return OSSwapInt16(x); }
+ inline static uint32_t BSwap(uint32_t x) { return OSSwapInt32(x); }
+ inline static uint64_t BSwap(uint64_t x) { return OSSwapInt64(x); }
+#else
+ inline static uint16_t BSwap(uint16_t x) { return bswap_16(x); }
+ inline static uint32_t BSwap(uint32_t x) { return bswap_32(x); }
+ inline static uint64_t BSwap(uint64_t x) { return bswap_64(x); }
+#endif
+
//---------------------------------------------------------------------------
// Exception indicating corrupted data
//---------------------------------------------------------------------------
@@ -61,7 +84,11 @@ namespace XrdZip
{
const char *begin = reinterpret_cast<const char*>( &value );
const char *end = begin + sizeof( INT );
+#ifdef XrdZip_Big_Endian
+ std::reverse_copy( begin, end, std::back_inserter( buffer ) );
+#else
std::copy( begin, end, std::back_inserter( buffer ) );
+#endif
}
//---------------------------------------------------------------------------
@@ -72,6 +99,9 @@ namespace XrdZip
inline static void from_buffer( INT &var, const char *&buffer )
{
memcpy( &var, buffer, sizeof( INT ) );
+#ifdef XrdZip_Big_Endian
+ var = BSwap(var);
+#endif
buffer += sizeof( INT );
}
@@ -82,7 +112,10 @@ namespace XrdZip
inline static INT to( const char *buffer )
{
INT value;
- memcpy( &value, buffer, sizeof( INT) );
+ memcpy( &value, buffer, sizeof( INT ) );
+#ifdef XrdZip_Big_Endian
+ value = BSwap(value);
+#endif
return value;
}
--
2.43.0

View file

@ -0,0 +1,28 @@
From ccedaabc377e668280eec8bb22f0dbb76550beec Mon Sep 17 00:00:00 2001
From: Jonas Hahnfeld <jonas.hahnfeld@cern.ch>
Date: Mon, 4 Dec 2023 11:52:44 +0100
Subject: [PATCH 2/2] [CMake] Fix include path in XRootDConfig.cmake
Headers are installed into the subdirectory xrootd/. This was broken
with commit c6e0e598ce ("[CMake] Find only XRootD matching
XRootDConfig.cmake installation path") released with version 5.6.3.
---
cmake/XRootDConfig.cmake.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cmake/XRootDConfig.cmake.in b/cmake/XRootDConfig.cmake.in
index 0f95a8f54..0a4ce3fe5 100644
--- a/cmake/XRootDConfig.cmake.in
+++ b/cmake/XRootDConfig.cmake.in
@@ -50,7 +50,7 @@ SET( XROOTD_SSI_FOUND FALSE )
set_and_check(XRootD_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set_and_check(XRootD_DATA_DIR "@PACKAGE_CMAKE_INSTALL_DATADIR@")
-set_and_check(XRootD_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
+set_and_check(XRootD_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@/xrootd")
set_and_check(XRootD_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
set(XRootD_INCLUDE_DIRS "${XRootD_INCLUDE_DIR};${XRootD_INCLUDE_DIR}/private")
--
2.43.0

View file

@ -0,0 +1,64 @@
From 08e2bede433a2f513aba0b28686a31cb0b769079 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Sat, 28 Oct 2023 17:55:58 +0200
Subject: [PATCH 2/3] PATH_MAX / MAXPATHLEN might be undefined
XrdSys/XrdSysPlatform.hh defines MAXPATHLEN if needed.
/<<PKGBUILDDIR>>/tests/XrdCl/XrdClURL.cc: In member function 'virtual void URLTest_LocalURLs_Test::TestBody()':
/<<PKGBUILDDIR>>/tests/XrdCl/XrdClURL.cc:17:12: error: 'PATH_MAX' was not declared in this scope
17 | char url[PATH_MAX];
| ^~~~~~~~
/<<PKGBUILDDIR>>/tests/XrdCl/XrdClURL.cc:21:18: error: 'url' was not declared in this scope
21 | snprintf(url, sizeof(url), "%s%s%s", protocol, path, params);
| ^~~
/<<PKGBUILDDIR>>/tests/XrdCl/XrdClURL.cc: In member function 'virtual void URLTest_RemoteURLs_Test::TestBody()':
/<<PKGBUILDDIR>>/tests/XrdCl/XrdClURL.cc:47:12: error: 'PATH_MAX' was not declared in this scope
47 | char url[PATH_MAX];
| ^~~~~~~~
/<<PKGBUILDDIR>>/tests/XrdCl/XrdClURL.cc:57:26: error: 'url' was not declared in this scope
57 | snprintf(url, sizeof(url), "%s%s%s%s%s%s%s%s%s%s%s%s",
| ^~~
/<<PKGBUILDDIR>>/tests/XrdCl/XrdClURL.cc:63:26: error: 'path_params' was not declared in this scope
63 | snprintf(path_params, sizeof(path_params), "%s%s", *path == '/' ? path+1 : path, params);
| ^~~~~~~~~~~
---
tests/XrdCl/XrdClURL.cc | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/tests/XrdCl/XrdClURL.cc b/tests/XrdCl/XrdClURL.cc
index 24e7fdc2a..046f41a8c 100644
--- a/tests/XrdCl/XrdClURL.cc
+++ b/tests/XrdCl/XrdClURL.cc
@@ -1,6 +1,8 @@
#undef NDEBUG
#include <XrdCl/XrdClURL.hh>
+#include "XrdSys/XrdSysPlatform.hh"
+
#include <gtest/gtest.h>
#include <climits>
@@ -14,7 +16,7 @@ class URLTest : public ::testing::Test {};
TEST(URLTest, LocalURLs)
{
- char url[PATH_MAX];
+ char url[MAXPATHLEN];
for (const auto& protocol : { "", "file://" }) {
for (const auto& path : { "/dev", "/dev/", "/dev/null" }) {
for (const auto& params : { "", "?param=value", "?param1=value1&param2=value2" }) {
@@ -44,8 +46,8 @@ TEST(URLTest, LocalURLs)
TEST(URLTest, RemoteURLs)
{
- char url[PATH_MAX];
- char path_params[PATH_MAX];
+ char url[MAXPATHLEN];
+ char path_params[MAXPATHLEN];
for (const char *protocol : { "", "http", "root", "https", "roots" }) {
int default_port = *protocol == 'h' ? (strlen(protocol) == 4 ? 80 : 443) : 1094;
for (const char *user : { "", "alice", "bob", "user_123", "xrootd" }) {
--
2.41.0

View file

@ -0,0 +1,63 @@
From 6a381c776976c21161fa279c75b6fa2c0ce4774f Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 31 Oct 2023 18:17:23 +0100
Subject: [PATCH 3/3] Don't try to enable TCP_CORK in GNU/Hurd
The "man tcp" says about TCP_CORK: "This option should not be used in
code intended to be portable". So, it should not be expected to be
working everywhere.
The failure below is from Debian GNU/Hurd:
test 22
Start 22: XRootD::smoke-test
22: Test command: /usr/bin/sh "-c" "/<<PKGBUILDDIR>>/tests/XRootD/smoke.sh"
22: Working Directory: /<<PKGBUILDDIR>>/obj-i686-gnu/tests/XRootD
22: Environment variables:
22: XRDCP=/<<PKGBUILDDIR>>/obj-i686-gnu/src/XrdCl/xrdcp
22: XRDFS=/<<PKGBUILDDIR>>/obj-i686-gnu/src/XrdCl/xrdfs
22: CRC32C=/<<PKGBUILDDIR>>/obj-i686-gnu/src/xrdcrc32c
22: ADLER32=/<<PKGBUILDDIR>>/obj-i686-gnu/src/xrdadler32
22: HOST=root://localhost:10940
22: Test timeout computed to be: 10000000
22: Using /usr/bin/openssl: OpenSSL 3.0.12 24 Oct 2023 (Library: OpenSSL 3.0.12 24 Oct 2023)
22: v5.6.3
22: Using /<<PKGBUILDDIR>>/obj-i686-gnu/src/XrdCl/xrdcp:
22: [FATAL] Socket opt error: no message of desired type
21/22 Test #22: XRootD::smoke-test ........................................................***Failed 0.13 sec
Using /usr/bin/openssl: OpenSSL 3.0.12 24 Oct 2023 (Library: OpenSSL 3.0.12 24 Oct 2023)
v5.6.3
Using /<<PKGBUILDDIR>>/obj-i686-gnu/src/XrdCl/xrdcp:
[FATAL] Socket opt error: no message of desired type
---
src/XrdCl/XrdClSocket.cc | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/XrdCl/XrdClSocket.cc b/src/XrdCl/XrdClSocket.cc
index a94eb4b48..a2cb47c12 100644
--- a/src/XrdCl/XrdClSocket.cc
+++ b/src/XrdCl/XrdClSocket.cc
@@ -781,7 +781,8 @@ namespace XrdCl
//------------------------------------------------------------------------
XRootDStatus Socket::Cork()
{
-#if defined(TCP_CORK) // it's not defined on mac, we might want explore the possibility of using TCP_NOPUSH
+#if defined(TCP_CORK) && !defined(__GNU__)
+ // it's not defined on mac, we might want explore the possibility of using TCP_NOPUSH
if( pCorked ) return XRootDStatus();
int state = 1;
@@ -798,7 +799,8 @@ namespace XrdCl
//------------------------------------------------------------------------
XRootDStatus Socket::Uncork()
{
-#if defined(TCP_CORK) // it's not defined on mac, we might want explore the possibility of using TCP_NOPUSH
+#if defined(TCP_CORK) && !defined(__GNU__)
+ // it's not defined on mac, we might want explore the possibility of using TCP_NOPUSH
if( !pCorked ) return XRootDStatus();
int state = 0;
--
2.41.0

View file

@ -1 +1 @@
SHA512 (xrootd-6.1.1.tar.gz) = ac1286cc54c60611bf17b6140b8cd7ef17a8318a4082cae38e5da040199ce4405490e583b376074c3ed29cf2d87c9bbda5da15c6a3091c83c7877abdc3343ebf
SHA512 (xrootd-5.6.3.tar.gz) = 72a875064181225deef57eae89c651696a083896d7bd26099c7dd321097c2b90acef42dc1c4ef55334f0ff9b6d33bf0a82e3c9d92511b69b955fbdadeff4b625

View file

@ -1,2 +0,0 @@
# Name ID GECOS Home directory Shell
u xrootd 194 "XRootD runtime user" /var/spool/xrootd -

View file

@ -8,25 +8,66 @@
%global ceph 0
%endif
%undefine __cmake_in_source_build
%undefine __cmake3_in_source_build
Name: xrootd
Epoch: 1
Version: 6.1.1
Release: 1%{?dist}
Version: 5.6.3
Release: 3%{?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 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
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/
Source0: https://xrootd.slac.stanford.edu/download/v%{version}/%{name}-%{version}.tar.gz
# 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
# Fixes for test issues
# https://github.com/xrootd/xrootd/pull/2115
Patch0: 0001-Posix-open-called-with-wrong-flags-in-test.patch
Patch1: 0002-PATH_MAX-MAXPATHLEN-might-be-undefined.patch
Patch2: 0003-Don-t-try-to-enable-TCP_CORK-in-GNU-Hurd.patch
# Installed CMake files are architecture dependent
# https://github.com/xrootd/xrootd/pull/2116
Patch3: 0001-The-installed-cmake-files-are-now-generated-and-cont.patch
# Fix maybe-uninitialized warning
# https://github.com/xrootd/xrootd/pull/2124
Patch4: 0001-Fix-maybe-uninitialized-warning.patch
# Avoid /tmp when running some tests
# https://github.com/xrootd/xrootd/pull/2129
Patch5: 0001-Avoid-tmp-when-running-some-tests.patch
# Fail gracefully in case of unsupported extended file attributes
# https://github.com/xrootd/xrootd/pull/2130
Patch6: 0001-If-extended-attributes-are-not-supported-xattr-Get-r.patch
# Avoid null bytes in error message strings
# https://github.com/xrootd/xrootd/pull/2138
Patch7: 0001-Reapply-XrdCl-Make-sure-error-message-does-not-inclu.patch
# Fix include path in XRootDConfig.cmake
# https://github.com/root-project/root/issues/12631
# https://github.com/xrootd/xrootd/pull/2142
Patch8: 0001-CMake-Trace-actual-variables.patch
Patch9: 0002-CMake-Fix-include-path-in-XRootDConfig.cmake.patch
# Avoid dereferencing unaligned pointers
# https://github.com/xrootd/xrootd/pull/2144
Patch10: 0001-Avoid-bus-errors.patch
# Support big endian in XrdZip
# https://github.com/xrootd/xrootd/pull/2145
Patch11: 0001-XrdZip-Include-cstdint-for-standard-int-types.patch
Patch12: 0001-XrdZip-Support-Big-Endian.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
@ -34,30 +75,41 @@ 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: libxcrypt-devel
BuildRequires: davix-devel
%if %{ceph}
BuildRequires: librados-devel
BuildRequires: libradosstriper-devel
@ -65,21 +117,10 @@ BuildRequires: libradosstriper-devel
%ifnarch %{ix86}
BuildRequires: isa-l-devel
%endif
# For documentation
BuildRequires: doxygen
BuildRequires: graphviz
BuildRequires: python3-sphinx
# For tests
BuildRequires: attr
BuildRequires: curl
BuildRequires: cppunit-devel
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}
@ -104,7 +145,7 @@ Requires: %{name}-client-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-server-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: expect
Requires: logrotate
%{?sysusers_requires_compat}
Requires(pre): shadow-utils
%{?systemd_requires}
%description server
@ -141,8 +182,6 @@ 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
@ -237,26 +276,58 @@ 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
%package -n python3-%{name}
Summary: Python 3 bindings for xrootd
%py_provides python3-%{name}
%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 python3-%{name}
%description -n python2-%{name}
This package contains Python 2 bindings for xrootd.
%endif
%package -n python%{python3_pkgversion}-%{name}
Summary: Python 3 bindings for xrootd
%py_provides python%{python3_pkgversion}-%{name}
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-client-libs%{?_isa} = %{epoch}:%{version}-%{release}
%description -n python%{python3_pkgversion}-%{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
@ -266,50 +337,67 @@ This package contains the API documentation of the xrootd libraries.
%prep
%setup -q
%patch -P0 -p1
%patch -P1 -p1
%patch -P2 -p1
# 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
%patch -P 0 -p1
%patch -P 1 -p1
%patch -P 2 -p1
%patch -P 3 -p1
%patch -P 4 -p1
%patch -P 5 -p1
%patch -P 6 -p1
%patch -P 7 -p1
%patch -P 8 -p1
%patch -P 9 -p1
%patch -P 10 -p1
%patch -P 11 -p1
%patch -P 12 -p1
%build
%cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
%if %{?rhel}%{!?rhel:0} == 7
. /opt/rh/devtoolset-7/enable
%endif
%cmake3 \
-DFORCE_ENABLED:BOOL=ON \
-DENABLE_TESTS:BOOL=ON \
%if %{ceph}
-DENABLE_CEPH:BOOL=ON \
-DXRDCEPH_SUBMODULE: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}
%cmake_build
%endif
%cmake3_build
make -C config -f /usr/share/selinux/devel/Makefile
make -C packaging/common -f /usr/share/selinux/devel/Makefile
doxygen Doxyfile
cp -p docs/images/xrootd-logo.png doxydoc/html
%install
%cmake_install
%if %{?rhel}%{!?rhel:0} == 7
. /opt/rh/devtoolset-7/enable
%endif
%cmake3_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
@ -317,48 +405,62 @@ rm -f %{buildroot}%{python3_sitearch}/xrootd-*.*-info/RECORD
sed s/pip/rpm/ \
-i %{buildroot}%{python3_sitearch}/xrootd-*.*-info/INSTALLER
rm -f %{buildroot}%{_libdir}/cmake/XRootD/uninstall.cmake
%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
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
LD_LIBRARY_PATH=%{buildroot}%{_libdir} \
PYTHONPATH=%{buildroot}%{python3_sitearch} \
PYTHONDONTWRITEBYTECODE=1 \
make -C python/docs html
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
# Service unit files
mkdir -p %{buildroot}%{_unitdir}
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
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
# Server config
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
install -m 644 -p config/%{name}-clustered.cfg \
install -m 644 -p packaging/common/%{name}-clustered.cfg \
%{buildroot}%{_sysconfdir}/%{name}/%{name}-clustered.cfg
install -m 644 -p config/%{name}-standalone.cfg \
install -m 644 -p packaging/common/%{name}-standalone.cfg \
%{buildroot}%{_sysconfdir}/%{name}/%{name}-standalone.cfg
install -m 644 -p config/%{name}-filecache-clustered.cfg \
install -m 644 -p packaging/common/%{name}-filecache-clustered.cfg \
%{buildroot}%{_sysconfdir}/%{name}/%{name}-filecache-clustered.cfg
install -m 644 -p config/%{name}-filecache-standalone.cfg \
install -m 644 -p packaging/common/%{name}-filecache-standalone.cfg \
%{buildroot}%{_sysconfdir}/%{name}/%{name}-filecache-standalone.cfg
install -m 644 -p config/%{name}-http.cfg \
sed 's!/usr/lib64/!!' packaging/common/%{name}-http.cfg > \
%{buildroot}%{_sysconfdir}/%{name}/%{name}-http.cfg
# Client config
mkdir -p %{buildroot}%{_sysconfdir}/%{name}/client.plugins.d
install -m 644 -p config/client.conf \
install -m 644 -p packaging/common/client.conf \
%{buildroot}%{_sysconfdir}/%{name}/client.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 \
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 > \
%{buildroot}%{_sysconfdir}/%{name}/client.plugins.d/recorder.conf
install -m 644 -p config/client.plugins.d/s3.conf \
%{buildroot}%{_sysconfdir}/%{name}/client.plugins.d/s3.conf
sed 's!/usr/lib64/!!' packaging/common/http.client.conf.example > \
%{buildroot}%{_sysconfdir}/%{name}/client.plugins.d/xrdcl-http-plugin.conf
chmod 644 %{buildroot}%{_datadir}/%{name}/utils/XrdCmsNotify.pm
@ -373,61 +475,35 @@ 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 config/%{name}.logrotate \
install -m 644 -p packaging/common/%{name}.logrotate \
%{buildroot}%{_sysconfdir}/logrotate.d/%{name}
mkdir -p %{buildroot}%{_datadir}/selinux/packages/%{name}
install -m 644 -p config/%{name}.pp \
install -m 644 -p packaging/common/%{name}.pp \
%{buildroot}%{_datadir}/selinux/packages/%{name}
# Documentation
mkdir -p %{buildroot}%{_pkgdocdir}
cp -pr doxydoc/html %{buildroot}%{_pkgdocdir}
cp -pr python/docs/build/html %{buildroot}%{_pkgdocdir}/python
cp -pr bindings/python/docs/build/html %{buildroot}%{_pkgdocdir}/python
rm %{buildroot}%{_pkgdocdir}/python/.buildinfo
%check
export HOSTNAME=localhost
%ctest3
# 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
%ldconfig_scriptlets libs
sed "s!all.adminpath .*!all.adminpath ${adminpath}/XRootD!" \
-i tests/XRootD/common.cfg
%ldconfig_scriptlets client-libs
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
%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 "*** NOT RUNNING TESTS ***"
fi
rm testfile
%ldconfig_scriptlets server-libs
%pre server
%sysusers_create_compat %{SOURCE1}
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}
%post server
if [ $1 -eq 1 ] ; then
@ -445,6 +521,8 @@ if [ $1 -eq 0 ] ; then
fi
%postun server
%tmpfiles_create %{_tmpfilesdir}/%{name}.conf
if [ $1 -ge 1 ] ; then
systemctl daemon-reload >/dev/null 2>&1 || :
for DAEMON in xrootd cmsd frm_purged frm_xfrd; do
@ -492,7 +570,7 @@ fi
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/utils
%{_unitdir}/*
%{_sysusersdir}/%{name}.conf
%{_tmpfilesdir}/%{name}.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%dir %{_sysconfdir}/%{name}/config.d
%attr(-,xrootd,xrootd) %config(noreplace) %{_sysconfdir}/%{name}/*.cfg
@ -511,18 +589,18 @@ fi
%{_libdir}/libXrdUtils.so.*
%{_libdir}/libXrdXml.so.*
# Plugins
%{_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
%{_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
%license COPYING* LICENSE
%files devel
@ -543,7 +621,6 @@ fi
%{_libdir}/libXrdUtils.so
%{_libdir}/libXrdXml.so
%{_libdir}/cmake/XRootD
%{_mandir}/man1/xrootd-config.1*
%files client-libs
%{_libdir}/libXrdCl.so.*
@ -558,20 +635,16 @@ fi
%{_libdir}/libXrdSsiLib.so.*
%{_libdir}/libXrdSsiShMap.so.*
# Plugins
%{_libdir}/libXrdClHttp-6.so
%{_libdir}/libXrdClProxyPlugin-6.so
%{_libdir}/libXrdClRecorder-6.so
%{_libdir}/libXrdClS3-6.so
%{_libdir}/libXrdClProxyPlugin-5.so
%{_libdir}/libXrdClRecorder-5.so
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/client.conf
%dir %{_sysconfdir}/%{name}/client.plugins.d
%config(noreplace) %{_sysconfdir}/%{name}/client.plugins.d/http.conf
%config(noreplace) %{_sysconfdir}/%{name}/client.plugins.d/client-plugin.conf.example
%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
@ -581,28 +654,23 @@ fi
%{_libdir}/libXrdHttpUtils.so.*
%{_libdir}/libXrdServer.so.*
# Plugins
%{_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
%{_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
%files server-devel
%{_includedir}/%{name}/XrdAcc
@ -649,184 +717,51 @@ fi
%{_mandir}/man1/xrootdfs.1*
%files voms
%{_libdir}/libXrdVoms-6.so
%{_libdir}/libXrdHttpVOMS-6.so
%{_libdir}/libXrdSecgsiVOMS-6.so
%{_libdir}/libXrdVoms-5.so
%{_libdir}/libXrdHttpVOMS-5.so
%{_libdir}/libXrdSecgsiVOMS-5.so
%doc %{_mandir}/man1/libXrdVoms.1*
%doc %{_mandir}/man1/libXrdSecgsiVOMS.1*
%doc src/XrdVoms/README.md
%files scitokens
%{_libdir}/libXrdAccSciTokens-6.so
%{_libdir}/libXrdAccSciTokens-5.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-6.so
%{_libdir}/libXrdCephXattr-6.so
%{_libdir}/libXrdCeph-5.so
%{_libdir}/libXrdCephXattr-5.so
%{_libdir}/libXrdCephPosix.so.*
%endif
%files -n python3-%{name}
%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}
%{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 <mattias.ellert@physics.uu.se> - 1:6.1.1-1
- Update to version 6.1.1
* Wed Jul 22 2026 Python Maint <python-maint@redhat.com> - 1:6.1.0-3
- Rebuilt for Python 3.15.0b4 ABI change
* Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1:6.1.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Tue Jun 23 2026 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:6.1.0-1
- Update to version 6.1.0
- Drop patches accepted upstream
* Sat Jun 13 2026 Yaakov Selkowitz <yselkowi@redhat.com> - 1:6.0.3-3
- Rebuilt for openssl 4.0
* Thu Jun 04 2026 Python Maint <python-maint@redhat.com> - 1:6.0.3-2
- Rebuilt for Python 3.15
* Tue Jun 02 2026 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:6.0.3-1
- Update to version 6.0.3
* Thu May 21 2026 Mattias Ellert <mattias.ellert@physics.uu.se> - 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 <mattias.ellert@physics.uu.se> - 1:6.0.0-1
- Update to version 6.0.0
* Fri Mar 27 2026 Mattias Ellert <mattias.ellert@physics.uu.se> - 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 <releng@fedoraproject.org> - 1:5.9.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Tue Nov 18 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.9.1-1
- Update to version 5.9.1
* Fri Oct 10 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.9.0-1
- Update to version 5.9.0
* Fri Sep 19 2025 Python Maint <python-maint@redhat.com> - 1:5.8.4-4
- Rebuilt for Python 3.14.0rc3 bytecode
* Fri Aug 15 2025 Python Maint <python-maint@redhat.com> - 1:5.8.4-3
- Rebuilt for Python 3.14.0rc2 bytecode
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.8.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Sun Jul 13 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.8.4-1
- Update to version 5.8.4
* Fri Jun 06 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.8.3-1
- Update to version 5.8.3
* Tue Jun 03 2025 Python Maint <python-maint@redhat.com> - 1:5.8.2-2
- Rebuilt for Python 3.14
* Sun May 11 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 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 <mattias.ellert@physics.uu.se> - 1:5.8.1-1
- Update to version 5.8.1
* Sat Mar 22 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.8.0-1
- Update to version 5.8.0
* Sat Mar 08 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.3-4
- Move user/group creation logic to sysusers.d fragment
* Wed Feb 19 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.3-3
- Set HOSTNAME to localhost during testing
* Sat Feb 01 2025 Björn Esser <besser82@fedoraproject.org> - 1:5.7.3-2
- Add explicit BR: libxcrypt-devel
* Wed Jan 29 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.3-1
- Update to version 5.7.3
- Drop patches accepted upstream
* Thu Jan 23 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.2-4
- Use CMAKE_BUILD_TYPE RelWithDebInfo to avoid -Werror in compiler flags
* Sun Jan 19 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.2-3
- Fix compilation errors with GCC 15
* Sun Dec 08 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.2-2
- Fix errors in format strings
* Fri Nov 29 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.2-1
- Update to version 5.7.2
- Drop patches accepted upstream
* Mon Sep 16 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 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 <mattias.ellert@physics.uu.se> - 1:5.7.1-1
- Update to version 5.7.1
- Drop patches accepted upstream
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.7.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Thu Jul 04 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 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 <mattias.ellert@physics.uu.se> - 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 <python-maint@redhat.com> - 1:5.6.9-3
- Rebuilt for Python 3.13
* Mon Jun 03 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 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 <mattias.ellert@physics.uu.se> - 1:5.6.9-1
- Update to version 5.6.9
* Sat Feb 24 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.6.8-1
- Update to version 5.6.8
- Disable tests that require file attributes if the file system doesn't
support them
* Tue Feb 06 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.6.7-1
- Update to version 5.6.7
* Fri Jan 26 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.6.6-1
- Update to version 5.6.6
* Mon Jan 22 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.6.5-1
- Update to version 5.6.5
- Drop patches accepted upstream
* Wed Jan 17 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.6.4-2
- Fix printf null pointer error
* Mon Dec 11 2023 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.6.4-1
- Update to version 5.6.4
- Drop patches accepted upstream or previously backported
* Tue Dec 05 2023 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.6.3-3
- Avoid /tmp when running some tests
- Fail gracefully in case of unsupported extended file attributes