I think `RUNPATH` is fine - it does mean that users *could* override the library if they wanted to (and when installing on a host which has xrootd, *maybe* that's a good thing, ignoring versioning issues?). `$ORIGIN` is Unix-specific, and refers to the current library for which external symbols are being resolved. In a "typical" install, setting `RUNPATH=$ORIGIN/lib` would allow the developer to bundle dependencies into the `lib` folder. The problem here is (I think) that the extension module (`client`) is placed in the wrong location with respect to its `RUNPATH`. Of course it could be that the `RUNPATH` is wrong, but I'm not so sure. On Scientific Linux the layout on disk is what I expect, the `RPATH` points to the correct place (` RPATH $ORIGIN/lib64`) and given the legacy build chain I am inclined to assume that the issue lies there rather than in a Python packaging platform-dependency, but I could be wrong! <details> <summary><pre>tree</pre> of <pre>site-packages</pre></summary> /home/user/.local/lib/python3.6/site-packages |-- XRootD | |-- __init__.py | |-- __pycache__ | | `-- __init__.cpython-36.pyc | `-- client | |-- __init__.py | |-- __pycache__ | | |-- __init__.cpython-36.pyc | | |-- _version.cpython-36.pyc | | |-- copyprocess.cpython-36.pyc | | |-- env.cpython-36.pyc | | |-- file.cpython-36.pyc | | |-- filesystem.cpython-36.pyc | | |-- finalize.cpython-36.pyc | | |-- flags.cpython-36.pyc | | |-- glob_funcs.cpython-36.pyc | | |-- responses.cpython-36.pyc | | |-- url.cpython-36.pyc | | `-- utils.cpython-36.pyc | |-- _version.py | |-- copyprocess.py | |-- env.py | |-- file.py | |-- filesystem.py | |-- finalize.py | |-- flags.py | |-- glob_funcs.py | |-- responses.py | |-- url.py | `-- utils.py |-- pyxrootd | |-- __init__.py | |-- __pycache__ | | `-- __init__.cpython-36.pyc | |-- client.cpython-36m-x86_64-linux-gnu.so | |-- include | | `-- xrootd | | |-- XProtocol | | | |-- XProtocol.hh | | | `-- XPtypes.hh | | |-- Xrd | | | |-- XrdBuffer.hh | | | |-- XrdJob.hh | | | |-- XrdLink.hh | | | |-- XrdLinkMatch.hh | | | |-- XrdProtocol.hh | | | |-- XrdScheduler.hh | | | `-- XrdTcpMonPin.hh | | |-- XrdCl | | | |-- XrdClAnyObject.hh | | | |-- XrdClBuffer.hh | | | |-- XrdClConstants.hh | | | |-- XrdClCopyProcess.hh | | | |-- XrdClDefaultEnv.hh | | | |-- XrdClEnv.hh | | | |-- XrdClFile.hh | | | |-- XrdClFileSystem.hh | | | |-- XrdClFileSystemUtils.hh | | | |-- XrdClLog.hh | | | |-- XrdClMonitor.hh | | | |-- XrdClOptional.hh | | | |-- XrdClPlugInInterface.hh | | | |-- XrdClPlugInManager.hh | | | |-- XrdClPropertyList.hh | | | |-- XrdClStatus.hh | | | |-- XrdClURL.hh | | | `-- XrdClXRootDResponses.hh | | |-- XrdHttp | | | `-- XrdHttpSecXtractor.hh | | |-- XrdNet | | | |-- XrdNet.hh | | | |-- XrdNetAddr.hh | | | |-- XrdNetAddrInfo.hh | | | |-- XrdNetCmsNotify.hh | | | |-- XrdNetConnect.hh | | | |-- XrdNetOpts.hh | | | |-- XrdNetSockAddr.hh | | | |-- XrdNetSocket.hh | | | `-- XrdNetUtils.hh | | |-- XrdOuc | | | |-- XrdOucBuffer.hh | | | |-- XrdOucCRC.hh | | | |-- XrdOucCacheCM.hh | | | |-- XrdOucCacheStats.hh | | | |-- XrdOucCallBack.hh | | | |-- XrdOucChain.hh | | | |-- XrdOucCompiler.hh | | | |-- XrdOucDLlist.hh | | | |-- XrdOucEnum.hh | | | |-- XrdOucEnv.hh | | | |-- XrdOucErrInfo.hh | | | |-- XrdOucGMap.hh | | | |-- XrdOucHash.hh | | | |-- XrdOucHash.icc | | | |-- XrdOucIOVec.hh | | | |-- XrdOucLock.hh | | | |-- XrdOucName2Name.hh | | | |-- XrdOucPinObject.hh | | | |-- XrdOucPinPath.hh | | | |-- XrdOucRash.hh | | | |-- XrdOucRash.icc | | | |-- XrdOucSFVec.hh | | | |-- XrdOucStream.hh | | | |-- XrdOucString.hh | | | |-- XrdOucTList.hh | | | |-- XrdOucTable.hh | | | |-- XrdOucTokenizer.hh | | | |-- XrdOucTrace.hh | | | |-- XrdOucUtils.hh | | | `-- XrdOuca2x.hh | | |-- XrdSec | | | |-- XrdSecAttr.hh | | | |-- XrdSecEntity.hh | | | |-- XrdSecEntityAttr.hh | | | |-- XrdSecEntityPin.hh | | | `-- XrdSecInterface.hh | | |-- XrdSys | | | |-- XrdSysAtomics.hh | | | |-- XrdSysError.hh | | | |-- XrdSysFD.hh | | | |-- XrdSysHeaders.hh | | | |-- XrdSysLogPI.hh | | | |-- XrdSysLogger.hh | | | |-- XrdSysPageSize.hh | | | |-- XrdSysPlatform.hh | | | |-- XrdSysPlugin.hh | | | |-- XrdSysPthread.hh | | | |-- XrdSysSemWait.hh | | | |-- XrdSysTimer.hh | | | |-- XrdSysXAttr.hh | | | `-- XrdSysXSLock.hh | | |-- XrdVersion.hh | | |-- XrdXml | | | `-- XrdXmlReader.hh | | |-- XrdXrootd | | | |-- XrdXrootdBridge.hh | | | |-- XrdXrootdGStream.hh | | | `-- XrdXrootdMonData.hh | | `-- private | | |-- Xrd | | | `-- XrdPoll.hh | | |-- XrdCl | | | |-- XrdClArg.hh | | | |-- XrdClCtx.hh | | | |-- XrdClFileOperations.hh | | | |-- XrdClFileSystemOperations.hh | | | |-- XrdClFinalOperation.hh | | | |-- XrdClFwd.hh | | | |-- XrdClMessage.hh | | | |-- XrdClOperationHandlers.hh | | | |-- XrdClOperationTimeout.hh | | | |-- XrdClOperations.hh | | | |-- XrdClParallelOperation.hh | | | |-- XrdClPostMaster.hh | | | |-- XrdClPostMasterInterfaces.hh | | | |-- XrdClResponseJob.hh | | | |-- XrdClTransportManager.hh | | | |-- XrdClZipArchive.hh | | | |-- XrdClZipCache.hh | | | `-- XrdClZipOperations.hh | | |-- XrdNet | | | |-- XrdNetBuffer.hh | | | |-- XrdNetIF.hh | | | `-- XrdNetPeer.hh | | |-- XrdOuc | | | |-- XrdOucExport.hh | | | |-- XrdOucGatherConf.hh | | | |-- XrdOucN2NLoader.hh | | | `-- XrdOucPList.hh | | |-- XrdPosix | | | `-- XrdPosixMap.hh | | |-- XrdSecsss | | | `-- XrdSecsssID.hh | | |-- XrdSys | | | `-- XrdSysPriv.hh | | `-- XrdZip | | |-- XrdZipCDFH.hh | | |-- XrdZipEOCD.hh | | |-- XrdZipExtra.hh | | |-- XrdZipLFH.hh | | |-- XrdZipUtils.hh | | |-- XrdZipZIP64EOCD.hh | | `-- XrdZipZIP64EOCDL.hh | |-- lib64 | | |-- libXrdAppUtils.so -> libXrdAppUtils.so.2 | | |-- libXrdAppUtils.so.2 -> libXrdAppUtils.so.2.0.0 | | |-- libXrdAppUtils.so.2.0.0 | | |-- libXrdCl.so -> libXrdCl.so.3 | | |-- libXrdCl.so.3 -> libXrdCl.so.3.0.0 | | |-- libXrdCl.so.3.0.0 | | |-- libXrdClProxyPlugin-5.so | | |-- libXrdCrypto.so -> libXrdCrypto.so.2 | | |-- libXrdCrypto.so.2 -> libXrdCrypto.so.2.0.0 | | |-- libXrdCrypto.so.2.0.0 | | |-- libXrdCryptoLite.so -> libXrdCryptoLite.so.2 | | |-- libXrdCryptoLite.so.2 -> libXrdCryptoLite.so.2.0.0 | | |-- libXrdCryptoLite.so.2.0.0 | | |-- libXrdCryptossl-5.so | | |-- libXrdSec-5.so | | |-- libXrdSecProt-5.so | | |-- libXrdSecgsi-5.so | | |-- libXrdSecgsiAUTHZVO-5.so | | |-- libXrdSecgsiGMAPDN-5.so | | |-- libXrdSeckrb5-5.so | | |-- libXrdSecpwd-5.so | | |-- libXrdSecsss-5.so | | |-- libXrdSecunix-5.so | | |-- libXrdUtils.so -> libXrdUtils.so.3 | | |-- libXrdUtils.so.3 -> libXrdUtils.so.3.0.0 | | |-- libXrdUtils.so.3.0.0 | | |-- libXrdXml.so -> libXrdXml.so.3 | | |-- libXrdXml.so.3 -> libXrdXml.so.3.0.0 | | `-- libXrdXml.so.3.0.0 | `-- share | `-- man | |-- man1 | | `-- xrdadler32.1 | `-- man8 | `-- mpxstats.8 `-- xrootd-5.4.2-py3.6.egg-info |-- METADATA |-- RECORD `-- WHEEL </details> <details> <summary> SL7 Dockerfile </summary> FROM scientificlinux/sl:7 RUN yum update -y && \ yum install -y yum-conf-repos && \ yum install -y yum-conf-softwarecollections epel-release && \ yum install -y \ cmake3 \ make \ libuuid-devel \ libxml2-devel \ openssl-devel \ systemd-devel \ zlib-devel \ devtoolset-7-gcc-c++ \ python3-devel \ python3-setuptools \ yum clean all && \ python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel WORKDIR / RUN useradd -m user USER user RUN source scl_source enable devtoolset-7 && \ python3 -m pip install --user --verbose 'xrootd==5.4.2' && \ python3 -m pip list RUN python3 -m pip list && \ python3 -m pip show xrootd && \ python3 -c 'import XRootD; print(XRootD)' && \ python3 -c 'import pyxrootd; print(pyxrootd)' && \ python3 -c 'from XRootD import client' # Set PATH to pickup virtualenv by default </details> -- Reply to this email directly or view it on GitHub: https://github.com/xrootd/xrootd/issues/1668#issuecomment-1090082291 You are receiving this because you are subscribed to this thread. Message ID: <[log in to unmask]> ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the XROOTD-DEV list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1