> 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! > I only looked at this superficially, but upon closer inspection it looks as though it's the `setuptools` version that's leading to the failing `easy_install` > moreover setuptools 59.6.0 is the last one to work on python 3.6 so we will have to take into account different behaviors (depending on platform + python version) Issue #1579 and PR #1586 were meant to address most of this, and in CI we can see that they are working as expected. Though these focused on CMake builds, and the only builds that test the install purely from the sdist are for CentOS 7. Though this seems to be an issue with what is actually getting packaged and put up on PyPI (which if you look is just a tarfile of the whole repo, and not a normal sdist). There is something wrong with the PyPI version, as compare the following builds on Ubuntu where you install from PyPI <details> <summary>Dockerfile with PyPI install:</summary> ```Dockerfile ARG BASE_IMAGE=ubuntu:20.04 FROM ${BASE_IMAGE} as base SHELL [ "/bin/bash", "-c" ] RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ g++ \ git \ cmake \ uuid-dev \ dpkg-dev \ libssl-dev \ libx11-dev \ libxml2-dev \ libkrb5-dev \ libgsl0-dev \ pkg-config \ tree \ python3 \ python3-pip \ python3-venv \ python3-dev && \ apt-get autoclean -y && \ python3 -m pip --no-cache-dir install --upgrade pip setuptools wheel && \ python3 -m pip list WORKDIR / # Set PATH to pickup virtualenv by default ENV PATH=/usr/local/venv/bin:"${PATH}" ENV LD_LIBRARY_PATH="/usr/local/venv/lib/python3.8/site-packages/pyxrootd/lib:${LD_LIBRARY_PATH}" RUN python3 -m venv /usr/local/venv && \ . /usr/local/venv/bin/activate && \ python3 -m pip --no-cache-dir install --upgrade pip setuptools wheel && \ python3 -m pip install --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; print(client.FileSystem("root://someserver:1094"))' WORKDIR / CMD ["/bin/bash"] ``` </details> <details> <summary>layout with egg:</summary> ``` root@486091e0fdac:/# ls /usr/local/venv/lib/python3.8/site-packages/ _distutils_hack pip pkg_resources-0.0.0.dist-info setuptools-62.0.0.dist-info xrootd-5.4.2-py3.8-linux-x86_64.egg distutils-precedence.pth pip-22.0.4.dist-info pyxrootd wheel easy-install.pth pkg_resources setuptools wheel-0.37.1.dist-info ``` </details> and where you install from the tarball you make with the `publish.sh` script. <details> <summary>Dockerfile for install from sdist from publish.sh:</summary> ```Dockerfile ARG BASE_IMAGE=ubuntu:20.04 FROM ${BASE_IMAGE} as base SHELL [ "/bin/bash", "-c" ] ENV PATH=/usr/local/venv/bin:"${PATH}" RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ g++ \ git \ cmake \ uuid-dev \ dpkg-dev \ libssl-dev \ libx11-dev \ libxml2-dev \ libkrb5-dev \ libgsl0-dev \ pkg-config \ tree \ python3 \ python3-pip \ python3-venv \ python3-dev && \ apt-get autoclean -y && \ python3 -m pip --no-cache-dir install --upgrade pip setuptools wheel && \ python3 -m pip list # Set PATH to pickup virtualenv by default ENV PATH=/usr/local/venv/bin:"${PATH}" RUN python3 -m venv /usr/local/venv && \ . /usr/local/venv/bin/activate WORKDIR /code RUN git clone https://github.com/xrootd/xrootd \ --branch v5.4.2 \ --single-branch && \ cd xrootd && \ cp packaging/wheel/* . && \ ./publish.sh && \ cd .. && \ python3 -m pip --verbose install xrootd/dist/xrootd-*.tar.gz && \ 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; print(client.FileSystem("root://someserver:1094"))' WORKDIR /code CMD ["/bin/bash"] ``` </details> <details> <summary>site-packages layout:</summary> ```console root@257f1f5fa793:~# ls /usr/local/venv/lib/python3.8/site-packages/ XRootD packaging pip-20.0.2.dist-info pyxrootd wheel __pycache__ packaging-21.3.dist-info pkg_resources setuptools wheel-0.37.1.dist-info build pep517 pkg_resources-0.0.0.dist-info setuptools-44.0.0.dist-info xrootd-5.4.2_.dist-info build-0.7.0.dist-info pep517-0.12.0.dist-info pyparsing tomli easy_install.py pip root@257f1f5fa793:~# tree /usr/local/venv/lib/python3.8/site-packages/xrootd-5.4.2_.dist-info/ /usr/local/venv/lib/python3.8/site-packages/xrootd-5.4.2_.dist-info/ |-- METADATA |-- RECORD `-- WHEEL 0 directories, 3 files root@257f1f5fa793:~# tree /usr/local/venv/lib/python3.8/site-packages/XRootD/ /usr/local/venv/lib/python3.8/site-packages/XRootD/ |-- __init__.py |-- __pycache__ | `-- __init__.cpython-38.pyc `-- client |-- __init__.py |-- __pycache__ | |-- __init__.cpython-38.pyc | |-- _version.cpython-38.pyc | |-- copyprocess.cpython-38.pyc | |-- env.cpython-38.pyc | |-- file.cpython-38.pyc | |-- filesystem.cpython-38.pyc | |-- finalize.cpython-38.pyc | |-- flags.cpython-38.pyc | |-- glob_funcs.cpython-38.pyc | |-- responses.cpython-38.pyc | |-- url.cpython-38.pyc | `-- utils.cpython-38.pyc |-- _version.py |-- copyprocess.py |-- env.py |-- file.py |-- filesystem.py |-- finalize.py |-- flags.py |-- glob_funcs.py |-- responses.py |-- url.py `-- utils.py 3 directories, 26 files root@257f1f5fa793:~# tree /usr/local/venv/lib/python3.8/site-packages/pyxrootd/ /usr/local/venv/lib/python3.8/site-packages/pyxrootd/ |-- __init__.py |-- __pycache__ | `-- __init__.cpython-38.pyc |-- client.cpython-38-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 |-- lib | |-- 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 27 directories, 161 files root@257f1f5fa793:~# ``` </details> So for debugging I'd suggest not trying to use the files on PyPI given that they are somehow different from what the publish.sh script builds. (To be clear, this should all be redone, but to make sure we're testing against the thing that matters (the source we can control now)). -- Reply to this email directly or view it on GitHub: https://github.com/xrootd/xrootd/issues/1668#issuecomment-1090425023 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