edgedb / edgedb-python

The official Python client library for EdgeDB
https://edgedb.com
Apache License 2.0
366 stars 43 forks source link

Fails to build with GCC 14 #507

Open odrling opened 4 days ago

odrling commented 4 days ago

Describe the bug With GCC 14 -Wincompatible-pointer-types becomes an error and the build fails.

https://gcc.gnu.org/gcc-14/porting_to.html https://wiki.gentoo.org/wiki/Modern_C_porting#-Wincompatible-pointer-types

Reproduction With GCC 14 installed:

$ pip install git+https://github.com/edgedb/edgedb-python

Build log:

Collecting git+https://github.com/edgedb/edgedb-python
  Cloning https://github.com/edgedb/edgedb-python to /tmp/pip-req-build-u_ul3rji
  Running command git clone --filter=blob:none --quiet https://github.com/edgedb/edgedb-python /tmp/pip-req-build-u_ul3rji
  Resolved https://github.com/edgedb/edgedb-python to commit 7141d3ca9c3c9a50186cfc29e20d1ec533be8274
  Running command git submodule update --init --recursive -q
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Installing backend dependencies: started
  Installing backend dependencies: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Building wheels for collected packages: edgedb
  Building wheel for edgedb (pyproject.toml): started
  Building wheel for edgedb (pyproject.toml): finished with status 'error'
  error: subprocess-exited-with-error

  × Building wheel for edgedb (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [362 lines of output]
      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/edgedb
      copying edgedb/__init__.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/_taskgroup.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/_testbase.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/_version.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/abstract.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/asyncio_client.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/base_client.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/blocking_client.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/color.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/con_utils.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/connresource.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/credentials.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/describe.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/enums.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/introspect.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/options.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/platform.py -> build/lib.linux-x86_64-cpython-312/edgedb
      copying edgedb/transaction.py -> build/lib.linux-x86_64-cpython-312/edgedb
      creating build/lib.linux-x86_64-cpython-312/tests
      copying tests/__init__.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/bench_uuid.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_async_query.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_async_retry.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_async_tx.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_asyncio_client.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_blocking_client.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_codegen.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_con_utils.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_connect.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_credentials.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_datetime.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_enum.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_errors.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_globals.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_memory.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_namedtuples.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_proto.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_scram.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_sourcecode.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_state.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_sync_query.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_sync_retry.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_sync_tx.py -> build/lib.linux-x86_64-cpython-312/tests
      copying tests/test_vector.py -> build/lib.linux-x86_64-cpython-312/tests
      creating build/lib.linux-x86_64-cpython-312/edgedb/ai
      copying edgedb/ai/__init__.py -> build/lib.linux-x86_64-cpython-312/edgedb/ai
      copying edgedb/ai/core.py -> build/lib.linux-x86_64-cpython-312/edgedb/ai
      copying edgedb/ai/types.py -> build/lib.linux-x86_64-cpython-312/edgedb/ai
      creating build/lib.linux-x86_64-cpython-312/edgedb/codegen
      copying edgedb/codegen/__init__.py -> build/lib.linux-x86_64-cpython-312/edgedb/codegen
      copying edgedb/codegen/__main__.py -> build/lib.linux-x86_64-cpython-312/edgedb/codegen
      copying edgedb/codegen/cli.py -> build/lib.linux-x86_64-cpython-312/edgedb/codegen
      copying edgedb/codegen/generator.py -> build/lib.linux-x86_64-cpython-312/edgedb/codegen
      creating build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/__init__.py -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/range.py -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      creating build/lib.linux-x86_64-cpython-312/edgedb/errors
      copying edgedb/errors/__init__.py -> build/lib.linux-x86_64-cpython-312/edgedb/errors
      copying edgedb/errors/_base.py -> build/lib.linux-x86_64-cpython-312/edgedb/errors
      copying edgedb/errors/tags.py -> build/lib.linux-x86_64-cpython-312/edgedb/errors
      creating build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/__init__.py -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/types.py -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      creating build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/__init__.py -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      creating build/lib.linux-x86_64-cpython-312/edgedb/scram
      copying edgedb/scram/__init__.py -> build/lib.linux-x86_64-cpython-312/edgedb/scram
      copying edgedb/scram/saslprep.py -> build/lib.linux-x86_64-cpython-312/edgedb/scram
      creating build/lib.linux-x86_64-cpython-312/tests/datatypes
      copying tests/datatypes/__init__.py -> build/lib.linux-x86_64-cpython-312/tests/datatypes
      copying tests/datatypes/test_datatypes.py -> build/lib.linux-x86_64-cpython-312/tests/datatypes
      copying tests/datatypes/test_uuid.py -> build/lib.linux-x86_64-cpython-312/tests/datatypes
      running egg_info
      creating edgedb.egg-info
      writing edgedb.egg-info/PKG-INFO
      writing dependency_links to edgedb.egg-info/dependency_links.txt
      writing entry points to edgedb.egg-info/entry_points.txt
      writing requirements to edgedb.egg-info/requires.txt
      writing top-level names to edgedb.egg-info/top_level.txt
      writing manifest file 'edgedb.egg-info/SOURCES.txt'
      reading manifest file 'edgedb.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching '*.py' under directory 'examples'
      warning: no files found matching '*.pem' under directory 'tests'
      adding license file 'LICENSE'
      writing manifest file 'edgedb.egg-info/SOURCES.txt'
      /tmp/pip-build-env-y0bfhfd5/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:215: _Warning: Package 'edgedb.pgproto.codecs' is absent from the `packages` configuration.
      !!

              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'edgedb.pgproto.codecs' 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 'edgedb.pgproto.codecs' 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 'edgedb.pgproto.codecs' to be distributed and are
              already explicitly excluding 'edgedb.pgproto.codecs' 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)
      /tmp/pip-build-env-y0bfhfd5/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:215: _Warning: Package 'edgedb.protocol.codecs' is absent from the `packages` configuration.
      !!

              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'edgedb.protocol.codecs' 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 'edgedb.protocol.codecs' 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 'edgedb.protocol.codecs' to be distributed and are
              already explicitly excluding 'edgedb.protocol.codecs' 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)
      copying edgedb/py.typed -> build/lib.linux-x86_64-cpython-312/edgedb
      copying tests/credentials1.json -> build/lib.linux-x86_64-cpython-312/tests
      creating build/lib.linux-x86_64-cpython-312/tests/shared-client-testcases
      copying tests/shared-client-testcases/connection_testcases.json -> build/lib.linux-x86_64-cpython-312/tests/shared-client-testcases
      copying tests/shared-client-testcases/project_path_hashing_testcases.json -> build/lib.linux-x86_64-cpython-312/tests/shared-client-testcases
      copying edgedb/datatypes/__init__.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/args.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/comp.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/config_memory.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/config_memory.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/datatypes.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/datatypes.h -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/datatypes.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/datatypes.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/date_duration.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/date_duration.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/enum.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/freelist.h -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/hash.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/internal.h -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/link.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/linkset.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/namedtuple.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/object.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/pythoncapi_compat.h -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/record_desc.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/relative_duration.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/relative_duration.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/datatypes/repr.c -> build/lib.linux-x86_64-cpython-312/edgedb/datatypes
      copying edgedb/pgproto/__init__.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/buffer.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/buffer.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/consts.pxi -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/cpythonx.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/debug.h -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/debug.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/frb.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/frb.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/hton.h -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/hton.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/pgproto.c -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/pgproto.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/pgproto.pyi -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/pgproto.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/tohex.h -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/tohex.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      copying edgedb/pgproto/uuid.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto
      creating build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/__init__.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/bits.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/bytea.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/context.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/datetime.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/float.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/geometry.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/hstore.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/int.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/json.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/jsonpath.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/misc.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/network.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/numeric.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/pg_snapshot.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/text.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/tid.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/pgproto/codecs/uuid.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/pgproto/codecs
      copying edgedb/protocol/asyncio_proto.c -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/asyncio_proto.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/asyncio_proto.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/blocking_proto.c -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/blocking_proto.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/blocking_proto.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/consts.pxi -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/cpythonx.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/lru.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/lru.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/protocol.c -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/protocol.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/protocol.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/protocol_v0.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      copying edgedb/protocol/protocol_v0.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol
      creating build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/array.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/array.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/base.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/base.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/codecs.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/codecs.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/edb_types.pxi -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/enum.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/enum.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/namedtuple.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/namedtuple.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/object.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/object.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/range.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/range.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/scalar.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/scalar.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/set.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/set.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/tuple.pxd -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      copying edgedb/protocol/codecs/tuple.pyx -> build/lib.linux-x86_64-cpython-312/edgedb/protocol/codecs
      running build_ext
      building 'edgedb.pgproto.pgproto' extension
      creating build/temp.linux-x86_64-cpython-312
      creating build/temp.linux-x86_64-cpython-312/edgedb
      creating build/temp.linux-x86_64-cpython-312/edgedb/pgproto
      x86_64-pc-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -fPIC -I/home/odrling/.venvs/venv/include -I/usr/include/python3.12 -c edgedb/pgproto/pgproto.c -o build/temp.linux-x86_64-cpython-312/edgedb/pgproto/pgproto.o -O2 -std=gnu99 -fsigned-char -Wall -Wsign-compare -Wconversion
      x86_64-pc-linux-gnu-gcc -shared build/temp.linux-x86_64-cpython-312/edgedb/pgproto/pgproto.o -L/usr/lib64 -o build/lib.linux-x86_64-cpython-312/edgedb/pgproto/pgproto.cpython-312-x86_64-linux-gnu.so
      building 'edgedb.datatypes.datatypes' extension
      creating build/temp.linux-x86_64-cpython-312/edgedb/datatypes
      x86_64-pc-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -fPIC -I/home/odrling/.venvs/venv/include -I/usr/include/python3.12 -c edgedb/datatypes/args.c -o build/temp.linux-x86_64-cpython-312/edgedb/datatypes/args.o -O2 -std=gnu99 -fsigned-char -Wall -Wsign-compare -Wconversion
      x86_64-pc-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -fPIC -I/home/odrling/.venvs/venv/include -I/usr/include/python3.12 -c edgedb/datatypes/comp.c -o build/temp.linux-x86_64-cpython-312/edgedb/datatypes/comp.o -O2 -std=gnu99 -fsigned-char -Wall -Wsign-compare -Wconversion
      x86_64-pc-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -fPIC -I/home/odrling/.venvs/venv/include -I/usr/include/python3.12 -c edgedb/datatypes/datatypes.c -o build/temp.linux-x86_64-cpython-312/edgedb/datatypes/datatypes.o -O2 -std=gnu99 -fsigned-char -Wall -Wsign-compare -Wconversion
      x86_64-pc-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -fPIC -I/home/odrling/.venvs/venv/include -I/usr/include/python3.12 -c edgedb/datatypes/hash.c -o build/temp.linux-x86_64-cpython-312/edgedb/datatypes/hash.o -O2 -std=gnu99 -fsigned-char -Wall -Wsign-compare -Wconversion
      x86_64-pc-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -fPIC -I/home/odrling/.venvs/venv/include -I/usr/include/python3.12 -c edgedb/datatypes/link.c -o build/temp.linux-x86_64-cpython-312/edgedb/datatypes/link.o -O2 -std=gnu99 -fsigned-char -Wall -Wsign-compare -Wconversion
      x86_64-pc-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -fPIC -I/home/odrling/.venvs/venv/include -I/usr/include/python3.12 -c edgedb/datatypes/linkset.c -o build/temp.linux-x86_64-cpython-312/edgedb/datatypes/linkset.o -O2 -std=gnu99 -fsigned-char -Wall -Wsign-compare -Wconversion
      x86_64-pc-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -fPIC -I/home/odrling/.venvs/venv/include -I/usr/include/python3.12 -c edgedb/datatypes/namedtuple.c -o build/temp.linux-x86_64-cpython-312/edgedb/datatypes/namedtuple.o -O2 -std=gnu99 -fsigned-char -Wall -Wsign-compare -Wconversion
      In file included from /usr/include/python3.12/Python.h:44,
                       from edgedb/datatypes/pythoncapi_compat.h:21,
                       from edgedb/datatypes/namedtuple.c:1:
      edgedb/datatypes/namedtuple.c: In function ‘EdgeNamedTuple_New’:
      edgedb/datatypes/namedtuple.c:80:29: error: passing argument 2 of ‘Py_SET_TYPE’ from incompatible pointer type [-Wincompatible-pointer-types]
         80 |             Py_SET_TYPE(nt, type);
            |                             ^~~~
            |                             |
            |                             PyObject * {aka struct _object *}
      /usr/include/python3.12/object.h:276:65: note: in definition of macro ‘Py_SET_TYPE’
        276 | #  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
            |                                                                 ^~~~
      /usr/include/python3.12/object.h:272:60: note: expected ‘PyTypeObject *’ {aka ‘struct _typeobject *’} but argument is of type ‘PyObject *’ {aka ‘struct _object *’}
        272 | static inline void Py_SET_TYPE(PyObject *ob, PyTypeObject *type) {
            |                                              ~~~~~~~~~~~~~~^~~~
      In file included from /usr/include/python3.12/Python.h:38:
      /usr/include/python3.12/objimpl.h:206:41: error: passing argument 1 of ‘_PyObject_GC_NewVar’ from incompatible pointer type [-Wincompatible-pointer-types]
        206 |     _Py_CAST(type*, _PyObject_GC_NewVar((typeobj), (n)))
            |                                         ^~~~~~~~~
            |                                         |
            |                                         PyObject * {aka struct _object *}
      /usr/include/python3.12/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      edgedb/datatypes/namedtuple.c:91:14: note: in expansion of macro ‘PyObject_GC_NewVar’
         91 |         nt = PyObject_GC_NewVar(PyTupleObject, type, size);
            |              ^~~~~~~~~~~~~~~~~~
      In file included from /usr/include/python3.12/Python.h:45:
      /usr/include/python3.12/objimpl.h:189:47: note: expected ‘PyTypeObject *’ {aka ‘struct _typeobject *’} but argument is of type ‘PyObject *’ {aka ‘struct _object *’}
        189 | PyAPI_FUNC(PyVarObject *) _PyObject_GC_NewVar(PyTypeObject *, Py_ssize_t);
            |                                               ^~~~~~~~~~~~~~
      edgedb/datatypes/namedtuple.c: In function ‘namedtuple_new’:
      edgedb/datatypes/namedtuple.c:200:10: error: assignment to ‘PyTypeObject *’ {aka ‘struct _typeobject *’} from incompatible pointer type ‘PyObject *’ {aka ‘struct _object *’} [-Wincompatible-pointer-types]
        200 |     type = EdgeNamedTuple_Type_New(desc);
            |          ^
      edgedb/datatypes/namedtuple.c:201:45: error: passing argument 1 of ‘EdgeNamedTuple_New’ from incompatible pointer type [-Wincompatible-pointer-types]
        201 |     o = (PyTupleObject *)EdgeNamedTuple_New(type);
            |                                             ^~~~
            |                                             |
            |                                             PyTypeObject * {aka struct _typeobject *}
      edgedb/datatypes/namedtuple.c:43:30: note: expected ‘PyObject *’ {aka ‘struct _object *’} but argument is of type ‘PyTypeObject *’ {aka ‘struct _typeobject *’}
         43 | EdgeNamedTuple_New(PyObject *type)
            |                    ~~~~~~~~~~^~~~
      edgedb/datatypes/namedtuple.c: In function ‘namedtuple_derived_new’:
      edgedb/datatypes/namedtuple.c:239:60: error: passing argument 1 of ‘EdgeNamedTuple_New’ from incompatible pointer type [-Wincompatible-pointer-types]
        239 |     PyTupleObject *o = (PyTupleObject *)EdgeNamedTuple_New(type);
            |                                                            ^~~~
            |                                                            |
            |                                                            PyTypeObject * {aka struct _typeobject *}
      edgedb/datatypes/namedtuple.c:43:30: note: expected ‘PyObject *’ {aka ‘struct _object *’} but argument is of type ‘PyTypeObject *’ {aka ‘struct _typeobject *’}
         43 | EdgeNamedTuple_New(PyObject *type)
            |                    ~~~~~~~~~~^~~~
      edgedb/datatypes/namedtuple.c: In function ‘EdgeNamedTuple_Type_New’:
      edgedb/datatypes/namedtuple.c:461:29: error: initialization of ‘PyTupleObject *’ from incompatible pointer type ‘PyObject *’ {aka ‘struct _object *’} [-Wincompatible-pointer-types]
        461 |     PyTupleObject *fields = PyTuple_New(size);
            |                             ^~~~~~~~~~~
      edgedb/datatypes/namedtuple.c:473:54: error: passing argument 3 of ‘PyDict_SetItemString’ from incompatible pointer type [-Wincompatible-pointer-types]
        473 |     if (PyDict_SetItemString(rv->tp_dict, "_fields", fields) < 0) {
            |                                                      ^~~~~~
            |                                                      |
            |                                                      PyTupleObject *
      In file included from /usr/include/python3.12/Python.h:64:
      /usr/include/python3.12/dictobject.h:58:79: note: expected ‘PyObject *’ {aka ‘struct _object *’} but argument is of type ‘PyTupleObject *’
         58 | PyAPI_FUNC(int) PyDict_SetItemString(PyObject *dp, const char *key, PyObject *item);
            |                                                                     ~~~~~~~~~~^~~~
      edgedb/datatypes/namedtuple.c:477:12: error: returning ‘PyTypeObject *’ {aka ‘struct _typeobject *’} from a function with incompatible return type ‘PyObject *’ {aka ‘struct _object *’} [-Wincompatible-pointer-types]
        477 |     return rv;
            |            ^~
      error: command '/usr/bin/x86_64-pc-linux-gnu-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 edgedb
Failed to build edgedb
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (edgedb)

Expected behavior The package builds on GCC 14 and later versions.

Versions: