Print

Print


> 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