Skip to content

Cannot build against python 3.14 #665

@floringogianu

Description

@floringogianu

I can uv add ale-py with python 3.12 and 3.13 and it builds without errors. However on 3.14 I get the following error which seems related to SDL2:

Using CPython 3.14.0
Removed virtual environment at: .venv
Creating virtual environment at: .venv
Resolved 135 packages in 1.78s
  × Failed to build `ale-py==0.11.2`
  ├─▶ The build backend returned an error
  ╰─▶ Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)

      [stdout]
      running bdist_wheel
      running build
      running build_py
      copying src/ale/python/__init__.py -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/env.py -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/vector_env.py -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/registration.py -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/roms/__init__.py -> build/lib.linux-x86_64-cpython-314/ale_py/roms
      running egg_info
      writing ale_py.egg-info/PKG-INFO
      writing dependency_links to ale_py.egg-info/dependency_links.txt
      writing requirements to ale_py.egg-info/requires.txt
      writing top-level names to ale_py.egg-info/top_level.txt
      reading manifest file 'ale_py.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      adding license file 'LICENSE.md'
      writing manifest file 'ale_py.egg-info/SOURCES.txt'
      copying src/ale/python/CMakeLists.txt -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/__init__.pyi -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/ale_python_interface.cpp -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/ale_python_interface.hpp -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/ale_vector_python_interface.cpp -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/ale_vector_python_interface.hpp -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/ale_vector_xla_interface.cpp -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/py.typed -> build/lib.linux-x86_64-cpython-314/ale_py
      copying src/ale/python/roms/md5.json -> build/lib.linux-x86_64-cpython-314/ale_py/roms
      copying src/ale/python/roms/tetris.bin -> build/lib.linux-x86_64-cpython-314/ale_py/roms
      running build_ext
      -- Configuring incomplete, errors occurred!
      See also
      "/root/.cache/uv/sdists-v9/pypi/ale-py/0.11.2/4qqSmaQotWxtm64mDqmb1/src/build/temp.linux-x86_64-cpython-314/ale_py._ale_py/CMakeFiles/CMakeOutput.log".
      See also
      "/root/.cache/uv/sdists-v9/pypi/ale-py/0.11.2/4qqSmaQotWxtm64mDqmb1/src/build/temp.linux-x86_64-cpython-314/ale_py._ale_py/CMakeFiles/CMakeError.log".

      [stderr]
      CMake Error at src/ale/CMakeLists.txt:31 (find_package):
        Could not find a package configuration file provided by "SDL2" with any of
        the following names:

          SDL2Config.cmake
          sdl2-config.cmake

        Add the installation prefix of "SDL2" to CMAKE_PREFIX_PATH or set
        "SDL2_DIR" to a directory containing one of the above files.  If "SDL2"
        provides a separate development package or SDK, be sure it has been
        installed.


      Traceback (most recent call last):
        File "<string>", line 11, in <module>
          wheel_filename = backend.build_wheel("/root/.cache/uv/builds-v0/.tmpkBUS0K", {}, None)
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/build_meta.py", line
      436, in build_wheel
          return _build(['bdist_wheel'])
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/build_meta.py", line
      427, in _build
          return self._build_with_temp_dir(
                 ~~~~~~~~~~~~~~~~~~~~~~~~~^
              cmd,
              ^^^^
          ...<3 lines>...
              self._arbitrary_args(config_settings),
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          )
          ^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/build_meta.py", line
      408, in _build_with_temp_dir
          self.run_setup()
          ~~~~~~~~~~~~~~^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/build_meta.py", line
      317, in run_setup
          exec(code, locals())
          ~~~~^^^^^^^^^^^^^^^^
        File "<string>", line 163, in <module>
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/__init__.py", line
      117, in setup
          return distutils.core.setup(**attrs)  # type: ignore[return-value]
                 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/core.py",
      line 186, in setup
          return run_commands(dist)
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/core.py",
      line 202, in run_commands
          dist.run_commands()
          ~~~~~~~~~~~~~~~~~^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/dist.py",
      line 1002, in run_commands
          self.run_command(cmd)
          ~~~~~~~~~~~~~~~~^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/dist.py", line 1107,
      in run_command
          super().run_command(command)
          ~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/dist.py",
      line 1021, in run_command
          cmd_obj.run()
          ~~~~~~~~~~~^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/command/bdist_wheel.py",
      line 370, in run
          self.run_command("build")
          ~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/cmd.py",
      line 357, in run_command
          self.distribution.run_command(command)
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/dist.py", line 1107,
      in run_command
          super().run_command(command)
          ~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/dist.py",
      line 1021, in run_command
          cmd_obj.run()
          ~~~~~~~~~~~^^
        File
      "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/command/build.py",
      line 135, in run
          self.run_command(cmd_name)
          ~~~~~~~~~~~~~~~~^^^^^^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/cmd.py",
      line 357, in run_command
          self.distribution.run_command(command)
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/dist.py", line 1107,
      in run_command
          super().run_command(command)
          ~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/dist.py",
      line 1021, in run_command
          cmd_obj.run()
          ~~~~~~~~~~~^^
        File "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/command/build_ext.py",
      line 97, in run
          _build_ext.run(self)
          ~~~~~~~~~~~~~~^^^^^^
        File
      "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/command/build_ext.py",
      line 368, in run
          self.build_extensions()
          ~~~~~~~~~~~~~~~~~~~~~^^
        File
      "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/command/build_ext.py",
      line 484, in build_extensions
          self._build_extensions_serial()
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
        File
      "/root/.cache/uv/builds-v0/.tmpmC3DnQ/lib/python3.14/site-packages/setuptools/_distutils/command/build_ext.py",
      line 510, in _build_extensions_serial
          self.build_extension(ext)
          ~~~~~~~~~~~~~~~~~~~~^^^^^
        File "<string>", line 120, in build_extension
        File "/root/.local/share/uv/python/cpython-3.14.0-linux-x86_64-gnu/lib/python3.14/subprocess.py", line
      419, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['cmake',
      '/root/.cache/uv/sdists-v9/pypi/ale-py/0.11.2/4qqSmaQotWxtm64mDqmb1/src',
      '-DCMAKE_BUILD_TYPE=Release', '-DPython3_EXECUTABLE=/root/.cache/uv/builds-v0/.tmpmC3DnQ/bin/python',
      '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/root/.cache/uv/sdists-v9/pypi/ale-py/0.11.2/4qqSmaQotWxtm64mDqmb1/src/build/lib.linux-x86_64-cpython-314/ale_py/',
      '-DSDL_SUPPORT=ON', '-DSDL_DYNLOAD=ON', '-DBUILD_CPP_LIB=OFF', '-DBUILD_PYTHON_LIB=ON',
      '-DBUILD_VECTOR_LIB=ON', '-DBUILD_VECTOR_XLA_LIB=ON', '-GNinja',
      '-DCMAKE_MAKE_PROGRAM:FILEPATH=/root/.cache/uv/builds-v0/.tmpmC3DnQ/bin/ninja']' returned non-zero exit
      status 1.

      hint: This usually indicates a problem with the package or the build environment.
  help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip
        locking and syncing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions