Open odrling opened 4 days ago
Describe the bug With GCC 14 -Wincompatible-pointer-types becomes an error and the build fails.
-Wincompatible-pointer-types
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:
edgedb-python
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:
Build log:
Expected behavior The package builds on GCC 14 and later versions.
Versions:
edgedb-python
version: 1.9.0 and 7141d3ca9c3c9a50186cfc29e20d1ec533be8274