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

Fails to build with GCC 14 #507

Closed
odrling opened this issue Jul 1, 2024 · 1 comment
Closed

Fails to build with GCC 14 #507

odrling opened this issue Jul 1, 2024 · 1 comment

Comments

@odrling
Copy link

odrling commented Jul 1, 2024

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:

  • OS: Gentoo Linux
  • EdgeDB version: N/A
  • EdgeDB CLI version: N/A
  • edgedb-python version: 1.9.0 and 7141d3c
  • Python version: 3.12.4
@odrling
Copy link
Author

odrling commented Aug 12, 2024

Seems to work after #510 which is now in the 2.0.1 release.
For reference the underlying issue seems to be in the code generated by Cython cython/cython#5240

@odrling odrling closed this as completed Aug 12, 2024
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

1 participant