uvloop icon indicating copy to clipboard operation
uvloop copied to clipboard

Test with Python 3.13

Open edgarrmondragon opened this issue 1 year ago • 7 comments

Related:

  • Might be blocked by https://github.com/MagicStack/uvloop/pull/587

edgarrmondragon avatar Jul 05 '24 02:07 edgarrmondragon

I cherry-picked the patch from https://github.com/MagicStack/uvloop/pull/604

edgarrmondragon avatar Jul 05 '24 02:07 edgarrmondragon

Ok, so the build for 3.13 fails.

Detailed error

  Building editable for uvloop (pyproject.toml): started
  Building editable for uvloop (pyproject.toml): finished with status 'error'
  error: subprocess-exited-with-error
  
  × Building editable for uvloop (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [447 lines of output]
      running editable_wheel
      creating /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info
      writing /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/PKG-INFO
      writing dependency_links to /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/dependency_links.txt
      writing requirements to /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/requires.txt
      writing top-level names to /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/top_level.txt
      writing manifest file '/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/SOURCES.txt'
      reading manifest file '/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*' found under directory 'vendor/libuv/.git'
      adding license file 'LICENSE-APACHE'
      adding license file 'LICENSE-MIT'
      writing manifest file '/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/SOURCES.txt'
      creating '/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop-0.20.0.dist-info'
      creating /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop-0.20.0.dist-info/WHEEL
      running build_py
      running build_ext
      + glibtoolize --copy --force
      glibtoolize: putting auxiliary files in '.'.
      glibtoolize: copying file './ltmain.sh'
      glibtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
      glibtoolize: copying file 'm4/libtool.m4'
      glibtoolize: copying file 'm4/ltoptions.m4'
      glibtoolize: copying file 'm4/ltsugar.m4'
      glibtoolize: copying file 'm4/ltversion.m4'
      glibtoolize: copying file 'm4/lt~obsolete.m4'
      + aclocal -I m4
      + autoconf
      configure.ac:45: warning: The macro 'AC_PROG_LIBTOOL' is obsolete.
      configure.ac:45: You should run autoupdate.
      m4/libtool.m4:100: AC_PROG_LIBTOOL is expanded from...
      configure.ac:45: the top level
      configure.ac:48: warning: $as_echo is obsolete; use AS_ECHO(["message"]) instead
      lib/m4sugar/m4sh.m4:690: _AS_IF_ELSE is expanded from...
      lib/m4sugar/m4sh.m4:697: AS_IF is expanded from...
      ./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
      ./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
      m4/ax_pthread.m4:88: AX_PTHREAD is expanded from...
      configure.ac:48: the top level
      + automake --add-missing --copy
      configure.ac:43: installing './ar-lib'
      configure.ac:26: installing './compile'
      configure.ac:23: installing './config.guess'
      configure.ac:23: installing './config.sub'
      configure.ac:21: installing './install-sh'
      configure.ac:21: installing './missing'
      Makefile.am: installing './depcomp'
      checking for a BSD-compatible install... /usr/bin/install -c
      checking whether sleep supports fractional seconds... yes
      checking filesystem timestamp resolution... 2
      checking whether build environment is sane... yes
      checking for a race-free mkdir -p... mkdir -p
      checking for gawk... no
          _build_ext.build_extension(self, ext)
          ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
        File "/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-build-env-h3ro7__u/overlay/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 557, in build_extension
          objects = self.compiler.compile(
              sources,
          ...<5 lines>...
              depends=ext.depends,
          )
        File "/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-build-env-h3ro7__u/overlay/lib/python3.13/site-packages/setuptools/_distutils/ccompiler.py", line 605, in compile
          self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
          ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-build-env-h3ro7__u/overlay/lib/python3.13/site-packages/setuptools/_distutils/unixccompiler.py", line 202, in _compile
          raise CompileError(msg)
      distutils.errors.CompileError: command '/usr/bin/clang' failed with exit code 1
      /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-build-env-h3ro7__u/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py:983: _DebuggingTips: Problem in editable installation.
      !!
      
              ********************************************************************************
              An error happened while installing `uvloop` in editable mode.
      
              The following steps are recommended to help debug this problem:
      
              - Try to install the project normally, without using the editable mode.
                Does the error still persist?
                (If it does, try fixing the problem before attempting the editable mode).
              - If you are using binary extensions, make sure you have all OS-level
                dependencies installed (e.g. compilers, toolchains, binary libraries, ...).
              - Try the latest version of setuptools (maybe the error was already fixed).
              - If you (or your project dependencies) are using any setuptools extension
                or customization, make sure they support the editable mode.
      
              After following the steps above, if the problem still persists and
              you think this is related to how setuptools handles editable installations,
              please submit a reproducible example
              (see https://stackoverflow.com/help/minimal-reproducible-example) to:
      
                  https://github.com/pypa/setuptools/issues
      
              See https://setuptools.pypa.io/en/latest/userguide/development_mode.html for details.

               ********************************************************************************
      
      !!
        cmd_obj.run()
      error: command '/usr/bin/clang' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building editable for uvloop

The 3.13 build for aiohttp is also failing.

Detailed error

  Building wheel for aiohttp (pyproject.toml): started
  Building wheel for aiohttp (pyproject.toml): finished with status 'error'
  error: subprocess-exited-with-error
  
  × Building wheel for aiohttp (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [329 lines of output]
      *********************
      * Accelerated build *
      *********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-10.13-universal2-cpython-313
      creating build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_ws.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/worker.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/multipart.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_response.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/client_ws.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/test_utils.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/tracing.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_exceptions.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_middlewares.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/http_exceptions.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_app.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/streams.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_protocol.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/log.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/compression_utils.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/client.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_urldispatcher.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_request.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/http_websocket.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/client_proto.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/locks.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/__init__.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_runner.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_server.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/base_protocol.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/payload.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/client_reqrep.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/http.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_log.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/resolver.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/formdata.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/payload_streamer.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/web_routedef.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/connector.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      copying aiohttp/client_exceptions.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
      creating build/temp.macosx-10.13-universal2-cpython-313/aiohttp
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3 -Wall -arch arm64 -arch x86_64 -I/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13 -c aiohttp/_websocket.c -o build/temp.macosx-10.13-universal2-cpython-313/aiohttp/_websocket.o
      aiohttp/_websocket.c:1284:59: warning: 'Py_UNICODE' is deprecated [-Wdeprecated-declarations]
      static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
                                                                ^
      /Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/cpython/unicodeobject.h:10:1: note: 'Py_UNICODE' has been explicitly marked deprecated here
      Py_DEPRECATED(3.13) typedef wchar_t Py_UNICODE;
      ^
      /Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/pyport.h:251:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      aiohttp/_websocket.c:1286:11: warning: 'Py_UNICODE' is deprecated [-Wdeprecated-declarations]
          const Py_UNICODE *u_end = u;
                ^
      /Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/cpython/unicodeobject.h:10:1: note: 'Py_UNICODE' has been explicitly marked deprecated here
      Py_DEPRECATED(3.13) typedef wchar_t Py_UNICODE;
      ^
      /Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/pyport.h:251:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      aiohttp/_websocket.c:6818:67: error: too few arguments to function call, expected 6, have 5
                                                 is_little, !is_unsigned);
                                                                        ^
      /Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/cpython/longobject.h:111:17: note: '_PyLong_AsByteArray' declared here
      PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
                      ^
      aiohttp/_websocket.c:7091:67: error: too few arguments to function call, expected 6, have 5
                                                 is_little, !is_unsigned);
                                                                        ^
      /Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/cpython/longobject.h:111:17: note: '_PyLong_AsByteArray' declared here
      PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
                      ^
      2 warnings and 2 errors generated.
      error: command '/usr/bin/clang' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for aiohttp

What's fun is the aiohttp CI uses uvloop (I don't know what for exactly), so I'm not sure who can first release 3.13 wheels 🙃.

edgarrmondragon avatar Aug 15 '24 22:08 edgarrmondragon

What's fun is the aiohttp CI uses uvloop (I don't know what for exactly)

Many of our tests run on uvloop, to ensure compatibility. Seems like we have a bit of a circular dependency here...

Dreamsorcerer avatar Aug 18 '24 10:08 Dreamsorcerer

Seems like we have a bit of a circular dependency here...

Actually, we should automatically start building wheels with the next release even without tests passing. So, both our CIs should resolve over the next few weeks.

Dreamsorcerer avatar Aug 19 '24 15:08 Dreamsorcerer

That's a good idea, Sam! I can push an alpha wheel of uvloop like 0.21a1 for Python 3.13 later this week

fantix avatar Aug 19 '24 15:08 fantix

That's a good idea, Sam! I can push an alpha wheel of uvloop like 0.21a1 for Python 3.13 later this week

Marking this as ready for review then :)

edgarrmondragon avatar Aug 19 '24 16:08 edgarrmondragon

I think we have 3.13 wheels now with 3.10.5.

Dreamsorcerer avatar Aug 19 '24 20:08 Dreamsorcerer

With #587 and #623, this should be green.

fantix avatar Aug 28 '24 18:08 fantix

uvloop 0.21.0b1 is up with 3.13 wheels.

fantix avatar Sep 03 '24 02:09 fantix