anomaly / lab-python-server

A template for building containerised web applications in Python with a recommended set o f dependencies and tooling
Apache License 2.0
11 stars 2 forks source link

Migrate to Python `3.12-bookworm` image #86

Closed devraj closed 11 months ago

devraj commented 1 year ago

Is your feature request related to a problem? Please describe. Python 3.12 (with Debian 12) is available on Dockerhub. We should move to using the latest version of the runtime to get the latest benefits of the language and updated operating system.

Describe the solution you'd like

Describe alternatives you've considered NA. This is just a regular update.

Additional context greenlet failed to install on my initial attempt at this with the following trace:

6.799   copying src/greenlet/greenlet.c -> build/lib.linux-aarch64-cpython-312/greenlet
6.799   copying src/greenlet/greenlet.h -> build/lib.linux-aarch64-cpython-312/greenlet
6.799   copying src/greenlet/slp_platformselect.h -> build/lib.linux-aarch64-cpython-312/greenlet
6.799   copying src/greenlet/tests/_test_extension.c -> build/lib.linux-aarch64-cpython-312/greenlet/tests
6.799   copying src/greenlet/tests/_test_extension_cpp.cpp -> build/lib.linux-aarch64-cpython-312/greenlet/tests
6.799   copying src/greenlet/platform/setup_switch_x64_masm.cmd -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_aarch64_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_alpha_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_amd64_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_arm32_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_arm32_ios.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_csky_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_m68k_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_mips_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_ppc64_aix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_ppc64_linux.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_ppc_aix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_ppc_linux.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_ppc_macosx.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_ppc_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_riscv_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_s390_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_sparc_sun_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_x32_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_x64_masm.asm -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_x64_masm.obj -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_x64_msvc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_x86_msvc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   copying src/greenlet/platform/switch_x86_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
6.799   running build_ext
6.799   building 'greenlet._greenlet' extension
6.799   creating build/temp.linux-aarch64-cpython-312
6.799   creating build/temp.linux-aarch64-cpython-312/src
6.799   creating build/temp.linux-aarch64-cpython-312/src/greenlet
6.799   gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/tmp/tmpk_qm97_x/.venv/include -I/usr/local/include/python3.12 -c src/greenlet/greenlet.c -o build/temp.linux-aarch64-cpython-312/src/greenlet/greenlet.o
6.799   src/greenlet/greenlet.c: In function ‘g_switchstack’:
6.799   src/greenlet/greenlet.c:531:45: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_limit’; did you mean ‘py_recursion_limit’?
6.799     531 |         current->recursion_depth = (tstate->recursion_limit
6.799         |                                             ^~~~~~~~~~~~~~~
6.799         |                                             py_recursion_limit
6.799   src/greenlet/greenlet.c:532:47: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_remaining’; did you mean ‘c_recursion_remaining’?
6.799     532 |                                     - tstate->recursion_remaining);
6.799         |                                               ^~~~~~~~~~~~~~~~~~~
6.799         |                                               c_recursion_remaining
6.799   src/greenlet/greenlet.c:560:55: error: ‘_PyCFrame’ has no member named ‘use_tracing’
6.799     560 |         ts__g_switchstack_use_tracing = tstate->cframe->use_tracing;
6.799         |                                                       ^~
6.799   src/greenlet/greenlet.c:621:23: error: ‘_PyCFrame’ has no member named ‘use_tracing’
6.799     621 |         tstate->cframe->use_tracing = ts__g_switchstack_use_tracing;
6.799         |                       ^~
6.799   src/greenlet/greenlet.c:624:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_remaining’; did you mean ‘c_recursion_remaining’?
6.799     624 |         tstate->recursion_remaining = (tstate->recursion_limit
6.799         |                 ^~~~~~~~~~~~~~~~~~~
6.799         |                 c_recursion_remaining
6.799   src/greenlet/greenlet.c:624:48: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_limit’; did you mean ‘py_recursion_limit’?
6.799     624 |         tstate->recursion_remaining = (tstate->recursion_limit
6.799         |                                                ^~~~~~~~~~~~~~~
6.799         |                                                py_recursion_limit
6.799   src/greenlet/greenlet.c: In function ‘g_calltrace’:
6.799   src/greenlet/greenlet.c:105:51: error: ‘_PyCFrame’ has no member named ‘use_tracing’
6.799     105 | #define TSTATE_USE_TRACING(tstate) (tstate->cframe->use_tracing)
6.799         |                                                   ^~
6.799   src/greenlet/greenlet.c:654:5: note: in expansion of macro ‘TSTATE_USE_TRACING’
6.799     654 |     TSTATE_USE_TRACING(tstate) = 0;
6.799         |     ^~~~~~~~~~~~~~~~~~
6.799   src/greenlet/greenlet.c:105:51: error: ‘_PyCFrame’ has no member named ‘use_tracing’
6.799     105 | #define TSTATE_USE_TRACING(tstate) (tstate->cframe->use_tracing)
6.799         |                                                   ^~
6.799   src/greenlet/greenlet.c:657:5: note: in expansion of macro ‘TSTATE_USE_TRACING’
6.799     657 |     TSTATE_USE_TRACING(tstate) =
6.799         |     ^~~~~~~~~~~~~~~~~~
6.799   src/greenlet/greenlet.c: In function ‘g_initialstub’:
6.799   src/greenlet/greenlet.c:903:51: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_limit’; did you mean ‘py_recursion_limit’?
6.799     903 |     self->recursion_depth = (PyThreadState_GET()->recursion_limit
6.799         |                                                   ^~~~~~~~~~~~~~~
6.799         |                                                   py_recursion_limit
6.799   src/greenlet/greenlet.c:904:53: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_remaining’; did you mean ‘c_recursion_remaining’?
6.799     904 |                              - PyThreadState_GET()->recursion_remaining);
6.799         |                                                     ^~~~~~~~~~~~~~~~~~~
6.799         |                                                     c_recursion_remaining
6.799   error: command '/usr/bin/gcc' failed with exit code 1
6.799   
6.799 
6.799   at /usr/local/lib/python3.12/site-packages/poetry/installation/chef.py:147 in _prepare
6.800       143│ 
6.800       144│                 error = ChefBuildError("\n\n".join(message_parts))
6.800       145│ 
6.800       146│             if error is not None:
6.801     → 147│                 raise error from None
6.801       148│ 
6.801       149│             return path
6.801       150│ 
6.801       151│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:
6.801 
6.801 Note: This error originates from the build backend, and is likely not a problem with poetry but with greenlet (1.1.3.post0) not supporting PEP 517 builds. You can verify this by running 'pip wheel --use-pep517 "greenlet (==1.1.3.post0)"'.
6.801 
------
failed to solve: process "/bin/sh -c poetry install --no-root" did not complete successfully: exit code: 1
devraj commented 1 year ago

Awaiting pendulum migrating supporting PEP 517 builds, see pull request awaiting to be merged.

https://github.com/sdispater/pendulum/pull/765