MagicStack / uvloop

Ultra fast asyncio event loop.
Apache License 2.0
10.34k stars 539 forks source link

0.17.0: pep517 based build fails #546

Open kloczek opened 1 year ago

kloczek commented 1 year ago

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.

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 ```
fantix commented 12 months ago

Could you please try again with uvloop 0.18? We added the pyproject.toml - it may or may not fix your issue.

kloczek commented 12 months ago

Currently cannot do that because I have packaged only cython 3.x.

kloczek commented 10 months ago

0.19.0 pyproject.toml has hardcoded Cython<0.30.0,>=0.29.36