MagicStack / MagicStack/uvloop

0.17.0: pep517 based build fails

Ouverte
#546 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Cython
Étoiles
11.9k
Forks
616
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.
- `python3 -sBm build -w --no-isolation`
- because I'm calling `build` with `--no-isolation` I'm using during all processes only locally installed modules
- install .whl file in using 'installer` module
- run pytest with $PYTHONPATH pointing to sitearch and sitelib inside
- build is performed in env which is *`cut off from access to the public network`* (pytest is executed with `-m "not network"`)

Here is pytest output:

```console
+ cd uvloop-0.17.0
+ ASMFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none'
+ CFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none'
+ CXXFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none'
+ FFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -I/usr/lib64/gfortran/modules'
+ FCFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -I/usr/lib64/gfortran/modules'
+ LDFLAGS='-Wl,--gc-sections -Wl,--as-needed -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--build-id=sha1'
+ RUSTFLAGS='-C codegen-units=1 -C debuginfo=2 -C opt-level=2 -C link-arg=-fdata-sections -C link-arg=-ffunction-sections -C link-arg=-Wl,--as-needed -C link-arg=-Wl,-z,now -C link-arg=-Wl,-z,relro --cap-lints=warn'
+ VALAFLAGS=-g
+ CC=/usr/bin/gcc
+ CXX=/usr/bin/g++
+ FC=/usr/bin/gfortran
+ AR=/usr/bin/gcc-ar
+ NM=/usr/bin/gcc-nm
+ RANLIB=/usr/bin/gcc-ranlib
+ export ASMFLAGS CFLAGS CXXFLAGS FFLAGS FCFLAGS LDFLAGS VALAFLAGS CC CXX FC AR NM RANLIB RUSTFLAGS VALAFLAGS
+ PBR_VERSION=0.17.0
+ PDM_PEP517_SCM_VERSION=0.17.0
+ PDM_BUILD_SCM_VERSION=0.17.0
+ SETUPTOOLS_SCM_PRETEND_VERSION=0.17.0
+ /usr/bin/python3 -sBm build -w --no-isolation
* Getting build dependencies for wheel...
* Building wheel...
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-cpython-38
creating build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/__init__.py -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/_noop.py -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/_testbase.py -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/_version.py -> build/lib.linux-x86_64-cpython-38/uvloop
running egg_info
creating uvloop.egg-info
writing uvloop.egg-info/PKG-INFO
writing dependency_links to uvloop.egg-info/dependency_links.txt
writing requirements to uvloop.egg-info/requires.txt
writing top-level names to uvloop.egg-info/top_level.txt
writing manifest file 'uvloop.egg-info/SOURCES.txt'
Compiling uvloop/loop.pyx because it changed.
[1/1] Cythonizing uvloop/loop.pyx
reading manifest file 'uvloop.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
:144: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
warning: no files found matching '*' under directory 'vendor/libuv'
warning: no previously-included files matching '*' found under directory 'vendor/libuv/.git'
warning: no previously-included files matching '*' found under directory 'vendor/libuv/docs'
warning: no previously-included files matching '*' found under directory 'vendor/libuv/img'
adding license file 'LICENSE-APACHE'
adding license file 'LICENSE-MIT'
writing manifest file 'uvloop.egg-info/SOURCES.txt'
copying uvloop/cbhandles.pxd -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/cbhandles.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/dns.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/errors.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/loop.c -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/loop.pxd -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/loop.pyi -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/loop.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/lru.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/pseudosock.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/py.typed -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/request.pxd -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/request.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/server.pxd -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/server.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/sslproto.pxd -> build/lib.linux-x86_64-cpython-38/uvloop
copying uvloop/sslproto.pyx -> build/lib.linux-x86_64-cpython-38/uvloop
creating build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/async_.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/async_.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/basetransport.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/basetransport.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/check.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/check.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/fsevent.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/fsevent.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/handle.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/handle.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/idle.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/idle.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/pipe.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/pipe.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/poll.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/poll.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/process.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/process.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/stream.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/stream.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/streamserver.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/streamserver.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/tcp.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/tcp.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/timer.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/timer.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/udp.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/handles
copying uvloop/handles/udp.pyx -> build/lib.linux-x86_64-cpython-38/uvloop/handles
creating build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/__init__.py -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/compat.h -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/consts.pxi -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/debug.h -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/debug.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/flowcontrol.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/fork_handler.h -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/python.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/stdlib.pxi -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/system.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/includes
copying uvloop/includes/uv.pxd -> build/lib.linux-x86_64-cpython-38/uvloop/includes
running build_ext
building 'uvloop.loop' extension
creating build/temp.linux-x86_64-cpython-38
creating build/temp.linux-x86_64-cpython-38/uvloop
/usr/bin/gcc -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -fno-semantic-interposition -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -fno-semantic-interposition -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -fno-semantic-interposition -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -fPIC -I/usr/include/python3.8 -c uvloop/loop.c -o build/temp.linux-x86_64-cpython-38/uvloop/loop.o ""
gcc: warning: : linker input file unused because linking not done
gcc: error: : linker input file not found: No such file or directory
/usr/lib/python3.8/site-packages/setuptools/command/build_py.py:201: _Warning: Package 'uvloop.handles' is absent from the `packages` configuration.
!!

********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'uvloop.handles' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.

This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'uvloop.handles' is explicitly added
to the `packages` configuration field.

Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).

You can read more about "package discovery" on setuptools documentation page:

- https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

If you don't want 'uvloop.handles' to be distributed and are
already explicitly excluding 'uvloop.handles' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.

You can read more about "package data files" on setuptools documentation page:

- https://setuptools.pypa.io/en/latest/userguide/datafiles.html

[^1]: For Python, any directory (with suitable naming) can be imported,
even if it does not contain any `.py` files.
On the other hand, currently there is no concept of package data
directory, all directories are treated like packages.
********************************************************************************

!!
check.warn(importable)
/usr/lib/python3.8/site-packages/setuptools/command/build_py.py:201: _Warning: Package 'uvloop.includes' is absent from the `packages` configuration.
!!

********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'uvloop.includes' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.

This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'uvloop.includes' is explicitly added
to the `packages` configuration field.

Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).

You can read more about "package discovery" on setuptools documentation page:

- https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

If you don't want 'uvloop.includes' to be distributed and are
already explicitly excluding 'uvloop.includes' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.

You can read more about "package data files" on setuptools documentation page:

- https://setuptools.pypa.io/en/latest/userguide/datafiles.html

[^1]: For Python, any directory (with suitable naming) can be imported,
even if it does not contain any `.py` files.
On the other hand, currently there is no concept of package data
directory, all directories are treated like packages.
********************************************************************************

!!
check.warn(importable)
error: command '/usr/bin/gcc' failed with exit code 1

ERROR Backend subprocess exited when trying to invoke build_wheel
```

Here is list of installed modules in build env

```console
Package Version
----------------------------- -------
aiohttp 3.8.4
aiosignal 1.3.1
alabaster 0.7.13
asttokens 2.2.1
async-timeout 4.0.2
attrs 23.1.0
Babel 2.12.1
backcall 0.2.0
build 0.10.0
cffi 1.15.1
charset-normalizer 3.1.0
cryptography 40.0.2
Cython 0.29.35
decorator 5.1.1
distro 1.8.0
docutils 0.19
exceptiongroup 1.1.1
executing 1.2.0
frozenlist 1.3.3
gpg 1.20.0
idna 3.4
imagesize 1.4.1
importlib-metadata 6.7.0
iniconfig 2.0.0
installer 0.7.0
ipython 8.12.0
jedi 0.18.2
Jinja2 3.1.2
libcomps 0.1.19
MarkupSafe 2.1.2
matplotlib-inline 0.1.6
multidict 6.0.4
packaging 23.1
parso 0.8.3
pexpect 4.8.0
pickleshare 0.7.5
pluggy 1.0.0
ply 3.11
prompt-toolkit 3.0.38
psutil 5.9.2
ptyprocess 0.7.0
pure-eval 0.2.2
pycparser 2.21
Pygments 2.15.1
pyOpenSSL 23.1.1
pyproject_hooks 1.0.0
pytest 7.4.0
python-dateutil 2.8.2
pytz 2023.2
requests 2.31.0
setuptools 68.0.0
setuptools-scm 7.1.0
six 1.16.0
snowballstemmer 2.2.0
Sphinx 6.2.1
sphinxcontrib-applehelp 1.0.4
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 2.0.0
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.5
stack-data 0.6.2
tomli 2.0.1
traitlets 5.9.0
typing_extensions 4.6.3
urllib3 1.26.15
wcwidth 0.2.6
wheel 0.40.0
yarl 1.9.2
zipp 3.15.0
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez le workflow `python3 -sBm build -w --no-isolation` signalé dans l’environnement hors ligne, puis examinez les entrées de packaging mentionnées dans `MANIFEST.in` ainsi que le chemin de build de `uvloop/loop.pyx`. Comparez l’installation du wheel et les résultats de pytest avec le cycle PEP517 attendu ; c’est terminé lorsque le wheel est construit et installé et que les tests passent sans accès réseau.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
build-system
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.