Print

Print


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