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

Release 3.12 wheels #7639

Closed
1 task done
gaborbernat opened this issue Oct 2, 2023 · 23 comments
Closed
1 task done

Release 3.12 wheels #7639

gaborbernat opened this issue Oct 2, 2023 · 23 comments

Comments

@gaborbernat
Copy link

Is your feature request related to a problem?

No response

Describe the solution you'd like

New release with 3.12 wheels in it.

Describe alternatives you've considered

N.a.

Related component

Client

Additional context

No response

Code of Conduct

  • I agree to follow the aio-libs Code of Conduct
@Dreamsorcerer
Copy link
Member

Already covered in other issues. New releases are blocked on nodejs/llhttp#249

@frenck
Copy link

frenck commented Oct 3, 2023

@Dreamsorcerer I'm not sure why all issues are closed, while they aren't solved?

Sure, I understand this is an upstream issue. But closing all reports as "resolved" while they are not; will not reduce the issue creation and tracking 😉

Maybe leave one open, so people actually see it when they go into the aiohttp issue tracker? (as in, I can imaging the Python 3.12 becoming a hotter needle the upcoming days).

../Frenck

@Dreamsorcerer
Copy link
Member

Mainly because there is no work for us to do (tasks to support Python 3.12 have been done already), so it's not a task we need to track. It could be left open for others to see, but I'll probably forget to close it, as there will be no PR related to this issue.

Wheels are created automatically on releases, so there are no actions for us to take. It will automatically include wheels for all supported versions of Python whenever a new release is made, we don't need anyone to remind us to create wheels.

@layday
Copy link
Contributor

layday commented Oct 3, 2023 via email

@Dreamsorcerer
Copy link
Member

I'm afraid we have multiple issues hanging off the llhttp release, we can't go back. Once that regression is fixed in llhttp, we can quickly land the remaining bits we need and push out new releases.

@layday
Copy link
Contributor

layday commented Oct 3, 2023 via email

@gaborbernat
Copy link
Author

Wheels are created automatically on releases, so there are no actions for us to take. It will automatically include wheels for all supported versions of Python whenever a new release is made, we don't need anyone to remind us to create wheels.

Wouldn't this issue track that work though? When the upstream fix is ready cut a release...

@benz0li
Copy link

benz0li commented Oct 4, 2023

Wouldn't this issue track that work though? When the upstream fix is ready cut a release...

Indeed. @Dreamsorcerer Please reopen.

Looking forward to a prompt release of Python 3.12 wheels. Thank you.

@benz0li
Copy link

benz0li commented Oct 4, 2023

It could be left open for others to see, but I'll probably forget to close it, as there will be no PR related to this issue.

@Dreamsorcerer I will remind you.

[...] we don't need anyone to remind us to create wheels.

Agreed. But somehow you and Paolo needed intermediation to resolve nodejs/llhttp#250.

All of this could have been ready in time for the Python 3.12 release.

Nevertheless, thank you all for the hard work.

@Dreamsorcerer
Copy link
Member

No, they just hadn't had time to look into it properly yet. Clearly all the noise caused them to prioritise it.

It looks like webknjaz is away, so I may have to do the release myself. Will likely tackle it at the weekend.

@EmpowerZ
Copy link

EmpowerZ commented Oct 6, 2023

Hi. Any idea why I still get the same issue:

# python3.12 -m pip install aiohttp
Collecting aiohttp
  Using cached aiohttp-3.8.5.tar.gz (7.4 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting attrs>=17.3.0 (from aiohttp)
  Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.12/site-packages (from aiohttp) (3.3.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.12/site-packages (from aiohttp) (6.0.4)
Collecting async-timeout<5.0,>=4.0.0a3 (from aiohttp)
  Obtaining dependency information for async-timeout<5.0,>=4.0.0a3 from https://files.pythonhosted.org/packages/a7/fa/e01228c2938de91d47b307831c62ab9e4001e747789d0b05baf779a6488c/async_timeout-4.0.3-py3-none-any.whl.metadata
  Using cached async_timeout-4.0.3-py3-none-any.whl.metadata (4.2 kB)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.12/site-packages (from aiohttp) (1.9.2)
Collecting frozenlist>=1.1.1 (from aiohttp)
  Using cached frozenlist-1.4.0-cp312-cp312-linux_aarch64.whl
Collecting aiosignal>=1.1.2 (from aiohttp)
  Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Requirement already satisfied: idna>=2.0 in /usr/local/lib/python3.12/site-packages (from yarl<2.0,>=1.0->aiohttp) (3.4)
Using cached async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Building wheels for collected packages: aiohttp
  Building wheel for aiohttp (pyproject.toml) ... error
  error: subprocess-exited-with-error
...
      aiohttp/_websocket.c:3744:45: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
       3744 |     const digit* digits = ((PyLongObject*)b)->ob_digit;
            |                                             ^~
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

Env:

# uname -r
6.1.38-59.109.amzn2023.aarch64

@layday
Copy link
Contributor

layday commented Oct 7, 2023

It appears no Python 3.12 wheels were produced for aiohttp 3.8.6.

@layday
Copy link
Contributor

layday commented Oct 7, 2023

cibuildwheel is pinned at 2.14.1 on the 3.8 branch that the release was cut from. The earliest cibuildwheel version to support building Python 3.12 wheels by default in 2.15.0. Python 3.12 is also untested on this branch.

@cdce8p
Copy link
Contributor

cdce8p commented Oct 7, 2023

It appears no Python 3.12 wheels were produced for aiohttp 3.8.6.

That is by design. The earliest release with support for Python 3.12 will be 3.9.0.

@layday
Copy link
Contributor

layday commented Oct 7, 2023

I can't be the only one who's confused here. Is 3.9.0 ready to go, or why was it said that Python 3.12 support was blocked on llhttp?

@benz0li
Copy link

benz0li commented Oct 7, 2023

I can't be the only one who's confused here. Is 3.9.0 ready to go, or why was it said that Python 3.12 support was blocked on llhttp?

No, you are not.

It appears no Python 3.12 wheels were produced for aiohttp 3.8.6.

That is by design. The earliest release with support for Python 3.12 will be 3.9.0.

Please reopen this issue, then. And add it to the 3.9 Milestone.

Thank you.

@cdce8p
Copy link
Contributor

cdce8p commented Oct 7, 2023

I can't be the only one who's confused here. Is 3.9.0 ready to go, or why was it said that Python 3.12 support was blocked on llhttp?

It's almost ready, yes. I don't know the exact timeline or what's missing but I would expect 3.9.0 either this weekend or beginning next week.

@Dreamsorcerer
Copy link
Member

Dreamsorcerer commented Oct 7, 2023

Working on it today/tomorrow, will be a beta release initially as there's several changes we want time to test. llhttp was a blocker, as we didn't want to push a new release with known vulnerabilities.

@cdce8p
Copy link
Contributor

cdce8p commented Oct 8, 2023

Just to provide a last update here. 3.9.0b0 was released yesterday with support for Python 3.12. Any help testing it, is welcome.

@dankoman30
Copy link

if you're using Python 3.12 and need a temporary fix, install the latest aiohttp 3.9 prerelease by running the following in shell:
pip install aiohttp==3.9.0b0

@nashsophie
Copy link

pip3.12 install aiohttp==3.9.0b0
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting aiohttp==3.9.0b0
  Using cached https://mirrors.aliyun.com/pypi/packages/bd/cf/adc8eb79c2ab7386fd23c213bcdd4f8c138a1ef4ccdcc3b093e54a42c460/aiohttp-3.9.0b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB)
Collecting attrs>=17.3.0 (from aiohttp==3.9.0b0)
  Using cached https://mirrors.aliyun.com/pypi/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl (61 kB)
Collecting multidict<7.0,>=4.5 (from aiohttp==3.9.0b0)
  Using cached multidict-6.0.4-cp312-cp312-linux_x86_64.whl
Collecting yarl<2.0,>=1.0 (from aiohttp==3.9.0b0)
  Using cached https://mirrors.aliyun.com/pypi/packages/5f/3f/04b3c5e57844fb9c034b09c5cb6d2b43de5d64a093c30529fd233e16cf09/yarl-1.9.2.tar.gz (184 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting frozenlist>=1.1.1 (from aiohttp==3.9.0b0)
  Using cached https://mirrors.aliyun.com/pypi/packages/8c/1f/49c96ccc87127682ba900b092863ef7c20302a2144b3185412a08480ca22/frozenlist-1.4.0.tar.gz (90 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting aiosignal>=1.1.2 (from aiohttp==3.9.0b0)
  Using cached https://mirrors.aliyun.com/pypi/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Requirement already satisfied: idna>=2.0 in /usr/local/lib/python3.12/site-packages (from yarl<2.0,>=1.0->aiohttp==3.9.0b0) (3.4)
Building wheels for collected packages: frozenlist, yarl
  Building wheel for frozenlist (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for frozenlist (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [42 lines of output]
      *********************
      * Accelerated build *
      *********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-312
      creating build/lib.linux-x86_64-cpython-312/frozenlist
      copying frozenlist/__init__.py -> build/lib.linux-x86_64-cpython-312/frozenlist
      running egg_info
      writing frozenlist.egg-info/PKG-INFO
      writing dependency_links to frozenlist.egg-info/dependency_links.txt
      writing top-level names to frozenlist.egg-info/top_level.txt
      reading manifest file 'frozenlist.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.pyd' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      warning: no previously-included files matching '*.lib' found anywhere in distribution
      warning: no previously-included files matching '*.dll' found anywhere in distribution
      warning: no previously-included files matching '*.a' found anywhere in distribution
      warning: no previously-included files matching '*.obj' found anywhere in distribution
      warning: no previously-included files found matching 'frozenlist/*.html'
      no previously-included directories found matching 'docs/_build'
      adding license file 'LICENSE'
      writing manifest file 'frozenlist.egg-info/SOURCES.txt'
      copying frozenlist/__init__.pyi -> build/lib.linux-x86_64-cpython-312/frozenlist
      copying frozenlist/_frozenlist.pyx -> build/lib.linux-x86_64-cpython-312/frozenlist
      copying frozenlist/py.typed -> build/lib.linux-x86_64-cpython-312/frozenlist
      running build_ext
      building 'frozenlist._frozenlist' extension
      creating build/temp.linux-x86_64-cpython-312
      creating build/temp.linux-x86_64-cpython-312/frozenlist
      gcc -pthread -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/usr/local/include/python3.12 -c frozenlist/_frozenlist.c -o build/temp.linux-x86_64-cpython-312/frozenlist/_frozenlist.o
      In file included from frozenlist/_frozenlist.c:11301:0:
      /usr/local/include/python3.12/internal/pycore_frame.h: In function ‘_PyFrame_Initialize’:
      /usr/local/include/python3.12/internal/pycore_frame.h:132:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
           for (int i = null_locals_from; i < code->co_nlocalsplus; i++) {
           ^
      /usr/local/include/python3.12/internal/pycore_frame.h:132:5: note: use option -std=c99 or -std=gnu99 to compile your code
      error: command '/usr/bin/gcc' 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 frozenlist
  Building wheel for yarl (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for yarl (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [68 lines of output]
      /tmp/pip-build-env-cavvn01q/overlay/lib/python3.12/site-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
      !!
      
              ********************************************************************************
              The license_file parameter is deprecated, use license_files instead.
      
              This deprecation is overdue, please update your project and remove deprecated
              calls to avoid build errors in the future.
      
              See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
              ********************************************************************************
      
      !!
        parsed = self.parsers.get(option_name, lambda x: x)(value)
      **********************
      * Accelerated build *
      **********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-312
      creating build/lib.linux-x86_64-cpython-312/yarl
      copying yarl/__init__.py -> build/lib.linux-x86_64-cpython-312/yarl
      copying yarl/_quoting.py -> build/lib.linux-x86_64-cpython-312/yarl
      copying yarl/_quoting_py.py -> build/lib.linux-x86_64-cpython-312/yarl
      copying yarl/_url.py -> build/lib.linux-x86_64-cpython-312/yarl
      running egg_info
      writing yarl.egg-info/PKG-INFO
      writing dependency_links to yarl.egg-info/dependency_links.txt
      writing requirements to yarl.egg-info/requires.txt
      writing top-level names to yarl.egg-info/top_level.txt
      reading manifest file 'yarl.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.cache' found anywhere in distribution
      warning: no previously-included files found matching 'yarl/*.html'
      warning: no previously-included files found matching 'yarl/*.so'
      warning: no previously-included files found matching 'yarl/*.pyd'
      no previously-included directories found matching 'docs/_build'
      adding license file 'LICENSE'
      writing manifest file 'yarl.egg-info/SOURCES.txt'
      copying yarl/__init__.pyi -> build/lib.linux-x86_64-cpython-312/yarl
      copying yarl/_quoting_c.pyi -> build/lib.linux-x86_64-cpython-312/yarl
      copying yarl/_quoting_c.pyx -> build/lib.linux-x86_64-cpython-312/yarl
      copying yarl/py.typed -> build/lib.linux-x86_64-cpython-312/yarl
      running build_ext
      building 'yarl._quoting_c' extension
      creating build/temp.linux-x86_64-cpython-312
      creating build/temp.linux-x86_64-cpython-312/yarl
      gcc -pthread -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/usr/local/include/python3.12 -c yarl/_quoting_c.c -o build/temp.linux-x86_64-cpython-312/yarl/_quoting_c.o
      yarl/_quoting_c.c: In function ‘__pyx_f_4yarl_10_quoting_c_9_Unquoter__do_unquote’:
      yarl/_quoting_c.c:5174:9: warning: ‘Py_OptimizeFlag’ is deprecated (declared at /usr/local/include/python3.12/cpython/pydebug.h:13) [-Wdeprecated-declarations]
               if (unlikely(!Py_OptimizeFlag)) {
               ^
      yarl/_quoting_c.c:5479:11: warning: ‘Py_OptimizeFlag’ is deprecated (declared at /usr/local/include/python3.12/cpython/pydebug.h:13) [-Wdeprecated-declarations]
                 if (unlikely(!Py_OptimizeFlag)) {
                 ^
      yarl/_quoting_c.c:5513:9: warning: ‘Py_OptimizeFlag’ is deprecated (declared at /usr/local/include/python3.12/cpython/pydebug.h:13) [-Wdeprecated-declarations]
               if (unlikely(!Py_OptimizeFlag)) {
               ^
      In file included from yarl/_quoting_c.c:10450:0:
      /usr/local/include/python3.12/internal/pycore_frame.h: In function ‘_PyFrame_Initialize’:
      /usr/local/include/python3.12/internal/pycore_frame.h:132:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
           for (int i = null_locals_from; i < code->co_nlocalsplus; i++) {
           ^
      /usr/local/include/python3.12/internal/pycore_frame.h:132:5: note: use option -std=c99 or -std=gnu99 to compile your code
      error: command '/usr/bin/gcc' 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 yarl
Failed to build frozenlist yarl
ERROR: Could not build wheels for frozenlist, yarl, which is required to install pyproject.toml-based projects

@nashsophie
Copy link

/usr/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

@Dreamsorcerer
Copy link
Member

First, this issue is closed. Second, your error is from yarl/frozenlist. Third, you are using a version of gcc that is over 8 years old and obviously not supported anymore. It appears that gcc changed the default standard in version 5 over 8 years ago, literally any release newer than the one you are using would probably work fine. Update your computer...

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

No branches or pull requests

9 participants