Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.17.0: pep517 based build fails #546

Open
kloczek opened this issue Jul 2, 2023 · 3 comments
Open

0.17.0: pep517 based build fails #546

kloczek opened this issue Jul 2, 2023 · 3 comments

Comments

@kloczek
Copy link

kloczek commented Jul 2, 2023

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 </install/prefix> using 'installer` module
  • run pytest with $PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
  • 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:

+ 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'
<string>: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

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
Copy link
Member

fantix commented Oct 15, 2023

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

@kloczek
Copy link
Author

kloczek commented Oct 15, 2023

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

@kloczek
Copy link
Author

kloczek commented Nov 22, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants