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

Problems building Python 3.13t wheels on Windows with git dependency and uv #1975

Closed
burgholzer opened this issue Aug 17, 2024 · 25 comments
Closed

Comments

@burgholzer
Copy link
Contributor

burgholzer commented Aug 17, 2024

Description

Hi 👋🏼

First things first: I am not 100% sure what I am about to describe is a cibuildwheel issue, but it was the only scenario under which I could reproduce the issue. Feel free to transfer this issue to its appropriate place or point me there.

Context

We are currently working on improving one of our libraries (https://github.com/cda-tum/mqt-qcec, built in C++, exposed to Python via pybind11, using scikit-build-core as a build backend) to get some of its build time dependencies (including C++ shared libraries) via another one of our packages (https://github.com/cda-tum/mqt-core; same setup as the other tool) kind of similar to how pybind11 is distributed as a Python package and can then be found via find_package in CMake.

The respective PRs in question are: cda-tum/mqt-qcec#432 and cda-tum/mqt-core#662

For the development, we added mqt.core as a git dependency to the mqt.qcec package configuration (see here):

[build-system]
requires = [
  "scikit-build-core>=0.10.1",
  "setuptools-scm>=7",
  "pybind11>=2.13",
  "mqt.core @ git+https://github.com/cda-tum/mqt-core@shared-libs",
]
build-backend = "scikit_build_core.build"

Almost everything works smoothly with this setup and nearly all the CI workflows are green, except one:

Problem

Running cibuildwheel on Windows to build Python 3.13 free-threading wheels.
A corresponding failing CI log can be found here.
Interestingly, it fails to properly build the mqt.core git dependency from the build requirements.
The errors from the CI log all boil down to something similar as

< //?/C:/Users/runneradmin/AppData/Local/uv/cache/builds-
v0/.tmphbUzYj/Lib/site-
packages/pybind11\include\pybind11/detail/class.h(12,10): error: '../attr.h'
file not found, did you mean 'attr.h'?

indicating that something is messed up with the pybind11 include directories.

Note that the same job succeeds on Ubuntu (also with emulation based on QEMU), macOS (x86 and arm64), as well as Windows (despite the 3.13t job), as can be seen from all the build logs here.

The cibuildwheel configuration of the mqt.qcec project is here.

What I tried to narrow down the problem

  • This is only happening on Windows and for Python 3.13t

  • We are using the build[uv] build frontend and the errors are isolated to that particular choice. More precisely, they are limited to the use of uv as the installer. Both, choosing just build as well as the regular pip frontend in the cibuildwheel config makes the job succeed.

  • Installing Python 3.13t from the official website, creating a new virtual environment with uv using that Python version and running uv pip install . in a fresh clone of the mqt-qcec branch also succeeds without issues

  • Running python -m build --wheel --installer=uv in a newly created uv Python 3.13t venv also succeeds.

  • This was tested with uv 0.2.37, but also failed with a couple versions before that.

  • Running cibuildwheel on the mqt.core sub-project runs successfully, even on windows with Python 3.13t. See the corresponding CI log.

  • Running pipx run cibuildwheel --only cp313t-win_amd64 consistently fails with the above errors.

Steps to reproduce the problem

On a Windows machine with pipx installed:

git clone https://github.com/cda-tum/mqt-qcec.git
cd mqt-qcec
git checkout use-mqt-core-package
pipx run cibuildwheel --only cp313t-win_amd64

The issue is probably right at the intersection of cibuildwheel, scikit-build-core, pybind11, uv and some Python 3.13 free-threading change.
However, even after longer sessions of debugging, I couldn't really make sense of it.

Build log

https://github.com/cda-tum/mqt-qcec/actions/runs/10392166048/job/28783894623

CI config

https://github.com/cda-tum/mqt-workflows/blob/a9a471582a6aefc2a71ab50772707829edb2abc3/.github/workflows/reusable-python-packaging.yml#L67-L118

@henryiii
Copy link
Contributor

Have you activated all verbosity options? SKBUILD_BUILD_VERBOSE=1 and SKBUILD_LOGGING_LEVEL=DEBUG are the envvar versions. Comparing a working and failing build would be very interesting!

Using #include "../<stuff>" is somewhat poor form, public headers should be included via <project/...> (and including from a parent directory in the first place is poor structure). But I'm guessing since it's very specific, this likely isn't the problem. Though I'm slightly curious if we made a branch with absolute references here how the error message would change.

By the way, for free-threading on Windows, you have to define Py_GIL_DISABLED on Windows. See https://gitlab.kitware.com/cmake/cmake/-/issues/26016.

@burgholzer
Copy link
Contributor Author

Have you activated all verbosity options? SKBUILD_BUILD_VERBOSE=1 and SKBUILD_LOGGING_LEVEL=DEBUG are the envvar versions. Comparing a working and failing build would be very interesting!

I generated the following verbose logs:

What I do not quite get is that the two commands using uv up there succeed on my local Windows VM, e.g.:

Copy of successful local CI log of (.venvt) PS C:\Users\burgholzer\Code\mqt-qcec> uv pip install -v "mqt.core @ git+https://github.com/cda-tum/mqt-core@shared-libs"
DEBUG uv 0.2.37
DEBUG Searching for Python interpreter in system path or `py` launcher
DEBUG Found `cpython-3.13.0-windows-x86_64-none` at `C:\Users\burgholzer\Code\mqt-qcec\.venvt\Scripts\python.exe` (active virtual environment)
DEBUG Using Python 3.13.0rc1 environment at .venvt\Scripts\python.exe
DEBUG Acquired lock for `.venvt`
DEBUG At least one requirement is not satisfied: mqt-core @ git+https://github.com/cda-tum/mqt-core@shared-libs
DEBUG Using request timeout of 30s
DEBUG Fetching source distribution from Git: https://github.com/cda-tum/mqt-core
DEBUG Acquired lock for `https://github.com/cda-tum/mqt-core`
DEBUG Updating git source `Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("github.com")), port: None, path: "/cda-tum/mqt-core", query: None, fragment: None }`
DEBUG Attempting GitHub fast path for: https://api.github.com/repos/cda-tum/mqt-core/commits/shared-libs
DEBUG Performing a Git fetch for: https://github.com/cda-tum/mqt-core
DEBUG reset \\?\C:\Users\burgholzer\AppData\Local\uv\cache\git-v0\checkouts\8e9a633086c3b2cc\748193ab to 748193ab38722efb0701b3f8eb90bdab13fd00db
DEBUG Acquired lock for `\\?\C:\Users\burgholzer\AppData\Local\uv\cache\built-wheels-v3\git\c328da53b66d2548\748193ab38722efb`
DEBUG Preparing metadata for: mqt-core @ git+https://github.com/cda-tum/mqt-core@shared-libs
DEBUG No static `PKG-INFO` available for: mqt-core @ git+https://github.com/cda-tum/mqt-core@shared-libs (MissingPkgInfo)
DEBUG No static `pyproject.toml` available for: mqt-core @ git+https://github.com/cda-tum/mqt-core@shared-libs (PyprojectToml(DynamicField("version")))
INFO Ignoring empty directory
DEBUG Solving with installed Python version: 3.13.0
DEBUG Adding direct dependency: scikit-build-core>=0.10.1
DEBUG Adding direct dependency: setuptools-scm>=7
DEBUG Adding direct dependency: pybind11>=2.13
DEBUG No cache entry for: https://pypi.org/simple/scikit-build-core/
DEBUG No cache entry for: https://pypi.org/simple/setuptools-scm/
DEBUG No cache entry for: https://pypi.org/simple/pybind11/
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0-py2.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0rc1-py2.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0rc1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0rc1-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0rc1-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.14.0rc1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0-py2.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0rc1-py2.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0rc1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0rc1-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0rc1-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.0rc1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.1rc1-py2.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.1rc1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.1rc1-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.1rc1-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.1rc1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.1rc1-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.4-py2.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.4-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.4-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.4-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.4-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.4-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.5-py2.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.5-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.5-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.5-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.5-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.5-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.6-py2.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.6-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.6-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.6-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.6-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.6-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.7-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.7-py3.3.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.7-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.7-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.15.7-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.1-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.1-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.2-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.2-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.2-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.16.2-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.17.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.17.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.17.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-1.17.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-2.0.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-2.0.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-2.0.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-2.0.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-2.1.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-2.1.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-2.1.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-2.1.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.1-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.1-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.2-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.2-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.2-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.2-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.4-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.4-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.4-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.4-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.5-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.5-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.5-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.5-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.6-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.6-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.6-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.0.6-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.1.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.1.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.1.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.1.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.2.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.2.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.2.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.2.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.1-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.1-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.2-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.2-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.2-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.2-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.3-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.3-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.3-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.3-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.3-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.3.3-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.0-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.0-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.0-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.1-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.1-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.1-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.1-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.2-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.2-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.2-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.2-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.2-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.2-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.3-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.3-py3.4.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.3-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.3-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.3-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.4.3-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.5.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.5.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.5.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.5.0-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-3.5.0-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.0.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.0.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.0.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.0.0-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.0.0-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.0-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.0-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.0-py3.9.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.1-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.1-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.1-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.1-py3.9.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.2-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.2-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.2-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.2-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.2-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-4.1.2-py3.9.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.0-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.0-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.0-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.0-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.0-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.0-py3.9.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.1-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.1-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.1-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.1-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.1-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.1-py3.9.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.2-py2.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.2-py3.5.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.2-py3.6.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.2-py3.7.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.2-py3.8.egg
WARN Skipping file for setuptools-scm: setuptools_scm-5.0.2-py3.9.egg
DEBUG No cache entry for: https://files.pythonhosted.org/packages/d9/0d/639dbbe0122b9359185877da57ad421a2cac9ab3a5c766833963354c4331/pybind11-2.13.4-py3-none-any.whl.metadata
DEBUG No cache entry for: https://files.pythonhosted.org/packages/a0/b9/1906bfeb30f2fc13bb39bf7ddb8749784c05faadbd18a21cf141ba37bff2/setuptools_scm-8.1.0-py3-none-any.whl.metadata
DEBUG Searching for a compatible version of scikit-build-core (>=0.10.1)
DEBUG Selecting: scikit-build-core==0.10.3 [compatible] (scikit_build_core-0.10.3-py3-none-any.whl)
DEBUG No cache entry for: https://files.pythonhosted.org/packages/df/d9/051e1809217842f8a067af0d1f9129d4aeb0e485aad611e278fb6f2741b9/scikit_build_core-0.10.3-py3-none-any.whl.metadata
DEBUG Adding transitive dependency for scikit-build-core==0.10.3: packaging>=21.3
DEBUG Adding transitive dependency for scikit-build-core==0.10.3: pathspec>=0.10.1
DEBUG Searching for a compatible version of setuptools-scm (>=7)
DEBUG Selecting: setuptools-scm==8.1.0 [compatible] (setuptools_scm-8.1.0-py3-none-any.whl)
DEBUG No cache entry for: https://pypi.org/simple/packaging/
DEBUG No cache entry for: https://pypi.org/simple/pathspec/
DEBUG No cache entry for: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl.metadata
DEBUG No cache entry for: https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl.metadata
DEBUG Adding transitive dependency for setuptools-scm==8.1.0: packaging>=20
DEBUG Adding transitive dependency for setuptools-scm==8.1.0: setuptools*
DEBUG Searching for a compatible version of pybind11 (>=2.13)
DEBUG Selecting: pybind11==2.13.4 [compatible] (pybind11-2.13.4-py3-none-any.whl)
DEBUG No cache entry for: https://pypi.org/simple/setuptools/
DEBUG Searching for a compatible version of packaging (>=21.3)
DEBUG Selecting: packaging==24.1 [compatible] (packaging-24.1-py3-none-any.whl)
DEBUG Searching for a compatible version of pathspec (>=0.10.1)
DEBUG Selecting: pathspec==0.12.1 [compatible] (pathspec-0.12.1-py3-none-any.whl)
WARN Skipping file for setuptools: setuptools-0.6b1-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6b1-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6b2-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6b2-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6b3-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6b3-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6b4-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6b4-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c1-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c1-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c10-1.src.rpm
WARN Skipping file for setuptools: setuptools-0.6c10-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c10-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c10-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c10-py2.6.egg
WARN Skipping file for setuptools: setuptools-0.6c10.win32-py2.3.exe
WARN Skipping file for setuptools: setuptools-0.6c10.win32-py2.4.exe
WARN Skipping file for setuptools: setuptools-0.6c10.win32-py2.5.exe
WARN Skipping file for setuptools: setuptools-0.6c10.win32-py2.6.exe
WARN Skipping file for setuptools: setuptools-0.6c11-1.src.rpm
WARN Skipping file for setuptools: setuptools-0.6c11-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c11-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c11-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c11-py2.6.egg
WARN Skipping file for setuptools: setuptools-0.6c11-py2.7.egg
WARN Skipping file for setuptools: setuptools-0.6c11.win32-py2.3.exe
WARN Skipping file for setuptools: setuptools-0.6c11.win32-py2.4.exe
WARN Skipping file for setuptools: setuptools-0.6c11.win32-py2.5.exe
WARN Skipping file for setuptools: setuptools-0.6c11.win32-py2.6.exe
WARN Skipping file for setuptools: setuptools-0.6c11.win32-py2.7.exe
WARN Skipping file for setuptools: setuptools-0.6c2-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c2-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c3-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c3-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c3-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c4-1.src.rpm
WARN Skipping file for setuptools: setuptools-0.6c4-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c4-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c4-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c4.win32-py2.3.exe
WARN Skipping file for setuptools: setuptools-0.6c4.win32-py2.4.exe
WARN Skipping file for setuptools: setuptools-0.6c4.win32-py2.5.exe
WARN Skipping file for setuptools: setuptools-0.6c5-1.src.rpm
WARN Skipping file for setuptools: setuptools-0.6c5-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c5-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c5-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c5.win32-py2.3.exe
WARN Skipping file for setuptools: setuptools-0.6c5.win32-py2.4.exe
WARN Skipping file for setuptools: setuptools-0.6c5.win32-py2.5.exe
WARN Skipping file for setuptools: setuptools-0.6c6-1.src.rpm
WARN Skipping file for setuptools: setuptools-0.6c6-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c6-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c6-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c6.win32-py2.3.exe
WARN Skipping file for setuptools: setuptools-0.6c6.win32-py2.4.exe
WARN Skipping file for setuptools: setuptools-0.6c6.win32-py2.5.exe
WARN Skipping file for setuptools: setuptools-0.6c7-1.src.rpm
WARN Skipping file for setuptools: setuptools-0.6c7-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c7-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c7-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c7.win32-py2.3.exe
WARN Skipping file for setuptools: setuptools-0.6c7.win32-py2.4.exe
WARN Skipping file for setuptools: setuptools-0.6c7.win32-py2.5.exe
WARN Skipping file for setuptools: setuptools-0.6c8-1.src.rpm
WARN Skipping file for setuptools: setuptools-0.6c8-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c8-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c8-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c8.win32-py2.3.exe
WARN Skipping file for setuptools: setuptools-0.6c8.win32-py2.4.exe
WARN Skipping file for setuptools: setuptools-0.6c8.win32-py2.5.exe
WARN Skipping file for setuptools: setuptools-0.6c9-1.src.rpm
WARN Skipping file for setuptools: setuptools-0.6c9-py2.3.egg
WARN Skipping file for setuptools: setuptools-0.6c9-py2.4.egg
WARN Skipping file for setuptools: setuptools-0.6c9-py2.5.egg
WARN Skipping file for setuptools: setuptools-0.6c9-py2.6.egg
WARN Skipping file for setuptools: setuptools-0.6c9.win32-py2.3.exe
WARN Skipping file for setuptools: setuptools-0.6c9.win32-py2.4.exe
WARN Skipping file for setuptools: setuptools-0.6c9.win32-py2.5.exe
WARN Skipping file for setuptools: setuptools-18.3.1-py3.4.egg
DEBUG Searching for a compatible version of setuptools (*)
DEBUG Selecting: setuptools==72.2.0 [compatible] (setuptools-72.2.0-py3-none-any.whl)
DEBUG No cache entry for: https://files.pythonhosted.org/packages/6e/ec/06715d912351edc453e37f93f3fc80dcffd5ca0e70386c87529aca296f05/setuptools-72.2.0-py3-none-any.whl.metadata
DEBUG Tried 6 versions: packaging 1, pathspec 1, pybind11 1, scikit-build-core 1, setuptools 1, setuptools-scm 1
DEBUG Split specific environment resolution took 0.667s
DEBUG Installing in packaging==24.1, pathspec==0.12.1, pybind11==2.13.4, scikit-build-core==0.10.3, setuptools==72.2.0, setuptools-scm==8.1.0 in \\?\C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpH6V1at
DEBUG Identified uncached requirement: packaging==24.1
DEBUG Identified uncached requirement: pathspec==0.12.1
DEBUG Identified uncached requirement: pybind11==2.13.4
DEBUG Identified uncached requirement: scikit-build-core==0.10.3
DEBUG Identified uncached requirement: setuptools==72.2.0
DEBUG Identified uncached requirement: setuptools-scm==8.1.0
DEBUG Downloading and building requirements for build: packaging==24.1, pathspec==0.12.1, pybind11==2.13.4, scikit-build-core==0.10.3, setuptools==72.2.0, setuptools-scm==8.1.0
DEBUG No cache entry for: https://files.pythonhosted.org/packages/6e/ec/06715d912351edc453e37f93f3fc80dcffd5ca0e70386c87529aca296f05/setuptools-72.2.0-py3-none-any.whl
DEBUG No cache entry for: https://files.pythonhosted.org/packages/d9/0d/639dbbe0122b9359185877da57ad421a2cac9ab3a5c766833963354c4331/pybind11-2.13.4-py3-none-any.whl
DEBUG No cache entry for: https://files.pythonhosted.org/packages/df/d9/051e1809217842f8a067af0d1f9129d4aeb0e485aad611e278fb6f2741b9/scikit_build_core-0.10.3-py3-none-any.whl
DEBUG No cache entry for: https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl
DEBUG No cache entry for: https://files.pythonhosted.org/packages/a0/b9/1906bfeb30f2fc13bb39bf7ddb8749784c05faadbd18a21cf141ba37bff2/setuptools_scm-8.1.0-py3-none-any.whl
DEBUG No cache entry for: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl
DEBUG Installing build requirements: packaging==24.1, pathspec==0.12.1, setuptools-scm==8.1.0, pybind11==2.13.4, scikit-build-core==0.10.3, setuptools==72.2.0
DEBUG Calling `scikit_build_core.build.get_requires_for_build_wheel()`
DEBUG Installing extra requirements for build backend
DEBUG Solving with installed Python version: 3.13.0
DEBUG Adding direct dependency: scikit-build-core>=0.10.1
DEBUG Adding direct dependency: setuptools-scm>=7
DEBUG Adding direct dependency: pybind11>=2.13
DEBUG Adding direct dependency: cmake>=3.19
DEBUG Adding direct dependency: setuptools-scm*
DEBUG Searching for a compatible version of scikit-build-core (>=0.10.1)
DEBUG Selecting: scikit-build-core==0.10.3 [compatible] (scikit_build_core-0.10.3-py3-none-any.whl)
DEBUG No cache entry for: https://pypi.org/simple/cmake/
DEBUG Adding transitive dependency for scikit-build-core==0.10.3: packaging>=21.3
DEBUG Adding transitive dependency for scikit-build-core==0.10.3: pathspec>=0.10.1
DEBUG Searching for a compatible version of setuptools-scm (>=7)
DEBUG Selecting: setuptools-scm==8.1.0 [compatible] (setuptools_scm-8.1.0-py3-none-any.whl)
DEBUG Adding transitive dependency for setuptools-scm==8.1.0: packaging>=20
DEBUG Adding transitive dependency for setuptools-scm==8.1.0: setuptools*
DEBUG Searching for a compatible version of pybind11 (>=2.13)
DEBUG Selecting: pybind11==2.13.4 [compatible] (pybind11-2.13.4-py3-none-any.whl)
DEBUG Searching for a compatible version of cmake (>=3.19)
DEBUG Selecting: cmake==3.30.2 [compatible] (cmake-3.30.2-py3-none-win_amd64.whl)
DEBUG No cache entry for: https://files.pythonhosted.org/packages/5b/34/a6a1030ec63da17e884bf2916f7ff92ad76f730d5e8edafd948b99c05384/cmake-3.30.2-py3-none-win_amd64.whl.metadata
DEBUG Searching for a compatible version of packaging (>=21.3)
DEBUG Selecting: packaging==24.1 [compatible] (packaging-24.1-py3-none-any.whl)
DEBUG Searching for a compatible version of pathspec (>=0.10.1)
DEBUG Selecting: pathspec==0.12.1 [compatible] (pathspec-0.12.1-py3-none-any.whl)
DEBUG Searching for a compatible version of setuptools (*)
DEBUG Selecting: setuptools==72.2.0 [compatible] (setuptools-72.2.0-py3-none-any.whl)
DEBUG Tried 7 versions: cmake 1, packaging 1, pathspec 1, pybind11 1, scikit-build-core 1, setuptools 1, setuptools-scm 1
DEBUG Split specific environment resolution took 0.171s
DEBUG Installing in cmake==3.30.2, packaging==24.1, pathspec==0.12.1, pybind11==2.13.4, scikit-build-core==0.10.3, setuptools==72.2.0, setuptools-scm==8.1.0 in \\?\C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpH6V1at
DEBUG Identified uncached requirement: cmake==3.30.2
DEBUG Requirement already installed: packaging==24.1
DEBUG Requirement already installed: pathspec==0.12.1
DEBUG Requirement already installed: pybind11==2.13.4
DEBUG Requirement already installed: scikit-build-core==0.10.3
DEBUG Requirement already installed: setuptools==72.2.0
DEBUG Requirement already installed: setuptools-scm==8.1.0
DEBUG Downloading and building requirement for build: cmake==3.30.2
DEBUG No cache entry for: https://files.pythonhosted.org/packages/5b/34/a6a1030ec63da17e884bf2916f7ff92ad76f730d5e8edafd948b99c05384/cmake-3.30.2-py3-none-win_amd64.whl
DEBUG Installing build requirement: cmake==3.30.2
DEBUG Calling `scikit_build_core.build.prepare_metadata_for_build_wheel()`
DEBUG Prepared metadata for: mqt-core @ git+https://github.com/cda-tum/mqt-core@shared-libs
DEBUG No workspace root found, using project root
DEBUG Solving with installed Python version: 3.13.0
DEBUG Adding direct dependency: mqt-core*
DEBUG Searching for a compatible version of mqt-core @ git+https://github.com/cda-tum/mqt-core@shared-libs (*)
DEBUG Tried 1 versions: mqt-core 1
DEBUG Split specific environment resolution took 0.000s
Resolved 1 package in 15.44s
DEBUG Identified uncached requirement: mqt-core @ git+https://github.com/cda-tum/mqt-core@shared-libs
DEBUG Fetching source distribution from Git: https://github.com/cda-tum/mqt-core
DEBUG Acquired lock for `https://github.com/cda-tum/mqt-core`
DEBUG Using existing git source `Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("github.com")), port: None, path: "/cda-tum/mqt-core", query: None, fragment: None }`
DEBUG Acquired lock for `\\?\C:\Users\burgholzer\AppData\Local\uv\cache\built-wheels-v3\git\0337e042a8704385\748193ab38722efb`
DEBUG Building: mqt-core @ git+https://github.com/cda-tum/mqt-core@748193ab38722efb0701b3f8eb90bdab13fd00db
INFO Ignoring empty directory
DEBUG Solving with installed Python version: 3.13.0
DEBUG Adding direct dependency: scikit-build-core>=0.10.1
DEBUG Adding direct dependency: setuptools-scm>=7
DEBUG Adding direct dependency: pybind11>=2.13
DEBUG Searching for a compatible version of scikit-build-core (>=0.10.1)
DEBUG Selecting: scikit-build-core==0.10.3 [compatible] (scikit_build_core-0.10.3-py3-none-any.whl)
DEBUG Adding transitive dependency for scikit-build-core==0.10.3: packaging>=21.3
DEBUG Adding transitive dependency for scikit-build-core==0.10.3: pathspec>=0.10.1
DEBUG Searching for a compatible version of setuptools-scm (>=7)
DEBUG Selecting: setuptools-scm==8.1.0 [compatible] (setuptools_scm-8.1.0-py3-none-any.whl)
DEBUG Adding transitive dependency for setuptools-scm==8.1.0: packaging>=20
DEBUG Adding transitive dependency for setuptools-scm==8.1.0: setuptools*
DEBUG Searching for a compatible version of pybind11 (>=2.13)
DEBUG Selecting: pybind11==2.13.4 [compatible] (pybind11-2.13.4-py3-none-any.whl)
DEBUG Searching for a compatible version of packaging (>=21.3)
DEBUG Selecting: packaging==24.1 [compatible] (packaging-24.1-py3-none-any.whl)
DEBUG Searching for a compatible version of pathspec (>=0.10.1)
DEBUG Selecting: pathspec==0.12.1 [compatible] (pathspec-0.12.1-py3-none-any.whl)
DEBUG Searching for a compatible version of setuptools (*)
DEBUG Selecting: setuptools==72.2.0 [compatible] (setuptools-72.2.0-py3-none-any.whl)
DEBUG Tried 6 versions: packaging 1, pathspec 1, pybind11 1, scikit-build-core 1, setuptools 1, setuptools-scm 1
DEBUG Split specific environment resolution took 0.015s
DEBUG Installing in packaging==24.1, pathspec==0.12.1, pybind11==2.13.4, scikit-build-core==0.10.3, setuptools==72.2.0, setuptools-scm==8.1.0 in \\?\C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpMJnx4l
DEBUG Requirement already cached: packaging==24.1
DEBUG Requirement already cached: pathspec==0.12.1
DEBUG Requirement already cached: pybind11==2.13.4
DEBUG Requirement already cached: scikit-build-core==0.10.3
DEBUG Requirement already cached: setuptools==72.2.0
DEBUG Requirement already cached: setuptools-scm==8.1.0
DEBUG Installing build requirements: packaging==24.1, pathspec==0.12.1, pybind11==2.13.4, scikit-build-core==0.10.3, setuptools==72.2.0, setuptools-scm==8.1.0
DEBUG Calling `scikit_build_core.build.get_requires_for_build_wheel()`
DEBUG Installing extra requirements for build backend
DEBUG Solving with installed Python version: 3.13.0
DEBUG Adding direct dependency: scikit-build-core>=0.10.1
DEBUG Adding direct dependency: setuptools-scm>=7
DEBUG Adding direct dependency: pybind11>=2.13
DEBUG Adding direct dependency: cmake>=3.19
DEBUG Adding direct dependency: setuptools-scm*
DEBUG Searching for a compatible version of scikit-build-core (>=0.10.1)
DEBUG Selecting: scikit-build-core==0.10.3 [compatible] (scikit_build_core-0.10.3-py3-none-any.whl)
DEBUG Adding transitive dependency for scikit-build-core==0.10.3: packaging>=21.3
DEBUG Adding transitive dependency for scikit-build-core==0.10.3: pathspec>=0.10.1
DEBUG Searching for a compatible version of setuptools-scm (>=7)
DEBUG Selecting: setuptools-scm==8.1.0 [compatible] (setuptools_scm-8.1.0-py3-none-any.whl)
DEBUG Adding transitive dependency for setuptools-scm==8.1.0: packaging>=20
DEBUG Adding transitive dependency for setuptools-scm==8.1.0: setuptools*
DEBUG Searching for a compatible version of pybind11 (>=2.13)
DEBUG Selecting: pybind11==2.13.4 [compatible] (pybind11-2.13.4-py3-none-any.whl)
DEBUG Searching for a compatible version of cmake (>=3.19)
DEBUG Selecting: cmake==3.30.2 [compatible] (cmake-3.30.2-py3-none-win_amd64.whl)
DEBUG Searching for a compatible version of packaging (>=21.3)
DEBUG Selecting: packaging==24.1 [compatible] (packaging-24.1-py3-none-any.whl)
DEBUG Searching for a compatible version of pathspec (>=0.10.1)
DEBUG Selecting: pathspec==0.12.1 [compatible] (pathspec-0.12.1-py3-none-any.whl)
DEBUG Searching for a compatible version of setuptools (*)
DEBUG Selecting: setuptools==72.2.0 [compatible] (setuptools-72.2.0-py3-none-any.whl)
DEBUG Tried 7 versions: cmake 1, packaging 1, pathspec 1, pybind11 1, scikit-build-core 1, setuptools 1, setuptools-scm 1
DEBUG Split specific environment resolution took 0.003s
DEBUG Installing in cmake==3.30.2, packaging==24.1, pathspec==0.12.1, pybind11==2.13.4, scikit-build-core==0.10.3, setuptools==72.2.0, setuptools-scm==8.1.0 in \\?\C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpMJnx4l
DEBUG Requirement already cached: cmake==3.30.2
DEBUG Requirement already installed: packaging==24.1
DEBUG Requirement already installed: pathspec==0.12.1
DEBUG Requirement already installed: pybind11==2.13.4
DEBUG Requirement already installed: scikit-build-core==0.10.3
DEBUG Requirement already installed: setuptools==72.2.0
DEBUG Requirement already installed: setuptools-scm==8.1.0
DEBUG Installing build requirement: cmake==3.30.2
DEBUG Calling `scikit_build_core.build.build_wheel("\\\\?\\C:\\Users\\burgholzer\\AppData\\Local\\uv\\cache\\built-wheels-v3\\git\\0337e042a8704385\\748193ab38722efb\\.tmpKusJ8h", {}, None)`
DEBUG Finished building: mqt-core @ git+https://github.com/cda-tum/mqt-core@748193ab38722efb0701b3f8eb90bdab13fd00db
Prepared 1 package in 2m 12s
Installed 1 package in 314ms
 + mqt-core==2.6.1.dev37+g748193ab (from git+https://github.com/cda-tum/mqt-core@748193ab38722efb0701b3f8eb90bdab13fd00db)

Note this is on a freshly cleaned uv cache (to avoid any caching effects) in a fresh virtual environment. Unfortunately, uv currently swallows all build backend output on successful builds. So I am not sure if there is much to make of the above.

Using #include "../<stuff>" is somewhat poor form, public headers should be included via <project/...> (and including from a parent directory in the first place is poor structure). But I'm guessing since it's very specific, this likely isn't the problem. Though I'm slightly curious if we made a branch with absolute references here how the error message would change.

Note that these relative includes are coming from pybind11, e.g., https://github.com/pybind/pybind11/blob/a1d00916b26b187e583f3bce39cd59c3b0652c32/include/pybind11/detail/class.h#L12-L13

By the way, for free-threading on Windows, you have to define Py_GIL_DISABLED on Windows. See https://gitlab.kitware.com/cmake/cmake/-/issues/26016.

Thanks for pointing that out. Would cda-tum/mqt-core@f100a2e be an appropriate way of setting that?
It seems to not really do anything if I am reading https://github.com/cda-tum/mqt-core/actions/runs/10459567906/job/28963824077?pr=662#step:8:6014 correctly. But I am probably missing something here.

@henryiii
Copy link
Contributor

appropriate way of setting that?

It's a C define, not a CMake define. It needs to be set on building any file that includes Python.h.

@burgholzer
Copy link
Contributor Author

It's a C define, not a CMake define. It needs to be set on building any file that includes Python.h.

Gotcha, thanks! Adapted the code accordingly.

I also slightly extended the experimental workflow running 3.13t with some more combinations (Workflow | Log):

  • pip install -v "mqt.core @ git+https://github.com/cda-tum/mqt-core@shared-libs"
  • pip install -v . --no-deps (--no-deps solely because it otherwise tries to build numpy from source)
  • build --wheel
  • build --wheel --installer=uv

@henryiii
Copy link
Contributor

henryiii commented Aug 20, 2024

I could be wrong, but it seems like the broken one has a //?/ prefix:

-- Disabling Python GIL
-- Found Python: \\?\C:\Users\runneradmin\AppData\Local\uv\cache\builds-v0\.tmp3yRqOT\Scripts\python.exe (found suitable version "3.13.0", minimum required is "3.8") found components: Interpreter Development.Module Development.SABIModule
...
-- Found pybind11: //?/C:/Users/runneradmin/AppData/Local/uv/cache/builds-v0/.tmp3yRqOT/Lib/site-packages/pybind11/include (found version "2.13.4")

While the working ones don't have this:

-- Found Python: C:\Users\runneradmin\AppData\Local\Temp\build-env-3doskkoe\Scripts\python.exe (found suitable version "3.13.0", minimum required is "3.8") found components: Interpreter Development.Module Development.SABIModule
...
-- Found pybind11: C:/Users/runneradmin/AppData/Local/Temp/build-env-3doskkoe/Lib/site-packages/pybind11/include (found version "2.13.4")

Assuming this is treated like a \\?\ prefix, this means the path is allowed to be longer than 256 chars, but it also disables path processing, which might cause the mix of / and \ to trip up the compiler, perhaps? It also might trip up the usage of .., since .. is valid in a path with a \\?\ prefix.

If all this is at least partially true, it might be that uv is adding this prefix in pyvenv.cfg (possibly to support potentially long paths) and it's making it's way and something is either adding .. or / and making an invalid path. May be the wrong direction, but the fact this is showing up on the failing build is suspicious.

Edit: Just putting down where I am in debugging, as I'll be out for a bit. After I come back, I'll boot up a Windows box and play with these ideas a bit.

@burgholzer
Copy link
Contributor Author

Assuming this is treated like a \\?\ prefix, this means the path is allowed to be longer than 256 chars, but it also disables path processing, which might cause the mix of / and \ to trip up the compiler, perhaps? It also might trip up the usage of .., since .. is valid in a path with a \\?\ prefix.

If all this is at least partially true, it might be that uv is adding this prefix in pyvenv.cfg (possibly to support potentially long paths) and it's making it's way and something is either adding .. or / and making an invalid path. May be the wrong direction, but the fact this is showing up on the failing build is suspicious.

You could be onto something here. I can also confirm that a local (successful) cibuildhweel run on Windows with Python 3.11 contains the following in the build log

< -- Found Python: C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpSFszTP\Scripts\python.exe (found suitable version "3.11.9", minimum required is "3.8") found components: Interpreter Development.Module Development.SABIModule
...
< -- Pybind11 directory: C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpSFszTP\Lib\site-packages\pybind11\share\cmake\pybind11
< -- Python executable: C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpSFszTP\Scripts\python.exe
...
< -- Found pybind11: C:/Users/burgholzer/AppData/Local/uv/cache/builds-v0/.tmpSFszTP/Lib/site-packages/pybind11/include (found version "2.13.4")

While the (failing) 3.13t one contains

< -- Found Python: \\?\C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpqLWHdD\Scripts\python.exe (found suitable version "3.13.0", minimum required is "3.8") found components: Interpreter Development.Module Development.SABIModule
...
< -- Pybind11 directory: \\?\C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpqLWHdD\Lib\site-packages\pybind11\share\cmake\pybind11
< -- Python executable: \\?\C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpqLWHdD\Scripts\python.exe
...
< -- Found pybind11: //?/C:/Users/burgholzer/AppData/Local/uv/cache/builds-v0/.tmpqLWHdD/Lib/site-packages/pybind11/include (found version "2.13.4")

I don't quite understand what's so special about the free threading variant that would cause this though. Maybe @charliermarsh has any more insight in this, given how this seems to very much be related to uv in some way.

@henryiii
Copy link
Contributor

Played around on a windows box; looks like //?/ still doesn't care about the type of slash, and \\?\ is equivalent, but it does break .. handling (as it is supposed to). I'm guessing the compiler is just adding the the path direction to the include, and not resolving .. itself, so that's why it breaks.

@charliermarsh
Copy link

We're supposed to be stripping that //? prefix when it's unambiguous (sometimes it's not possible, for complicated reasons that I don't fully understand related to Windows paths). It's not clear to me how it's appearing in one case but not the other...

@henryiii
Copy link
Contributor

Could you try this branch of pybind11 without the ..'s?

"pybind11 @ git+https://github.com/henryiii/pybind11@hernyiii/fix/upheader"

?

@henryiii
Copy link
Contributor

I wasn't able to easily get python3.13t to get a \\?\ prefixed path in pyvenv.cfg trying it locally with the nuget package. I did run into some bugs with uv python list along the way (I gave up trying to get 3.13rc1 with uv python and used nuget, which is what cibuildwheel does).

@burgholzer
Copy link
Contributor Author

We're supposed to be stripping that //? prefix when it's unambiguous (sometimes it's not possible, for complicated reasons that I don't fully understand related to Windows paths). It's not clear to me how it's appearing in one case but not the other...

Yeah. Really strange. It only seems to be happening on the free threaded variant of Python 3.13 and only when installing a git dependency (that needs to be built) as part of the build process.

@burgholzer
Copy link
Contributor Author

Could you try this branch of pybind11 without the ..'s?

"pybind11 @ git+https://github.com/henryiii/pybind11@hernyiii/fix/upheader"

?

Sure: The respective workflow logs can be found here https://github.com/cda-tum/mqt-qcec/actions/runs/10478228069/job/29021100463?pr=432 (for the cibuildwheel run) and https://github.com/cda-tum/mqt-qcec/actions/runs/10478228069/job/29021098494?pr=432 (for the other experimental runs).

The cibuildwheel run succeeded 🥳
The other run still fails. The major difference between the two runs being that the cibuildwheel one is running with CMAKE_ARGS = "-T ClangCL", which means it is using clang as a compiler.
Without passing that flag, the default being used is MSVC as a compiler and that one still fails, although with a different error message that does not involve relative file paths:

C:\Users\runneradmin\AppData\Local\uv\git-
v0\checkouts\8e9a633086c3b2cc\300693b3\include\mqt-
core\python\pybind11.hpp(5,10): error C1083: Cannot open include file:
'pybind11/pybind11.h': No such file or directory [C:\Users\runneradmin\AppDa
ta\Local\uv\git-
v0\checkouts\8e9a633086c3b2cc\300693b3\build\Release\src\python\ir\ir.vcxpro
j]

The file in question that is importing pybind11 is living here: https://github.com/cda-tum/mqt-core/blob/main/include/mqt-core/python/pybind11.hpp (nothing too fancy about that).
The respective CMake target that includes it is here: https://github.com/cda-tum/mqt-core/blob/main/src/python/ir/CMakeLists.txt
Although I don't quite think that is relevant.

@henryiii
Copy link
Contributor

I do see /external:I "//?/C:/Users/runneradmin/AppData/Local/uv/builds-v0/.tmpdZmHW4/Lib/site- packages/pybind11/include" in the compiler invocation, so it seems like it should work unless MSVC doesn't support long paths.

@henryiii
Copy link
Contributor

That might be the case - it's possible (from things like https://developercommunity.visualstudio.com/t/allow-building-running-and-debugging-a-net-applica/351628) that MSVC may not support long paths.

@burgholzer
Copy link
Contributor Author

Ok, I now have a bit of a better testing matrix set up (Workflow, CI Log).
All running uv 0.3.0 and the git dependency for pybind11 with the absolute paths.

  • ❌ build[uv] - MSVC - Fails with
    C:\Users\runneradmin\AppData\Local\uv\git-v0\checkouts\8e9a633086c3b2cc\300693b3\include\mqt-core\python\pybind11.hpp(5,10): error C1083: Cannot open include file: 'pybind11/pybind11.h': No such file or directory [C:\Users\runneradmin\AppData\Local\uv\git-v0\checkouts\8e9a633086c3b2cc\300693b3\build\Release\src\python\ir\ir.vcxproj]
    
  • ✅ build[uv] - ClangCL - Succeeds with the patched pybind11
  • ❌ uv - MSVC - Fails with
    C:\Users\runneradmin\AppData\Local\uv\git-v0\checkouts\8e9a633086c3b2cc\300693b3\include\mqt-core\python\pybind11.hpp(5,10): error C1083: Cannot open include file: 'pybind11/pybind11.h': No such file or directory [C:\Users\runneradmin\AppData\Local\uv\git-v0\checkouts\8e9a633086c3b2cc\300693b3\build\Release\src\python\ir\ir.vcxproj]
    
  • ❌ uv - ClangCL - Fails with all kinds of errors of the sort
    CMake Error in CMakeLists.txt:
    IMPORTED_IMPLIB not set for imported target "MQT::CoreDD" configuration
    "Release".
    
  • ❌ cibuildwheel[uv] - MSVC - Fails with
    C:\Users\runneradmin\AppData\Local\uv\git-
      v0\checkouts\8e9a633086c3b2cc\300693b3\include\mqt-
      core\python/pybind11.hpp(5): fatal error C1083: Cannot open include file:
      'pybind11/pybind11.h': No such file or directory```
    
  • ✅ cibuildwheel[uv] - ClangCL - Succeeds with the patched pybind11

That might be the case - it's possible (from things like https://developercommunity.visualstudio.com/t/allow-building-running-and-debugging-a-net-applica/351628) that MSVC may not support long paths.

That might explain all the MSVC failures. It still doesn't quite explain the uv - ClangCL failure. Quick googling around also points towards this being an issue with certain paths not being found.

@henryiii
Copy link
Contributor

henryiii commented Aug 21, 2024

I'm going to go ahead and make a scikit-build-core release with a couple of other fixes, don't think this is a scikit-build-core issue (and can always fix and release if it does turn out to be). It's most likely a mix of a uv issue (not simplifying this when I think it could), and MSVC not understanding these paths.

I'd really be interested to see the contents of the pyvenv.cfg files for a uv environment in this setting!

@burgholzer
Copy link
Contributor Author

burgholzer commented Aug 21, 2024

It's most likely a mix of a uv issue (not simplifying this when I think it could), and MSVC not understanding these paths.

Agreed. Although it's still kind of puzzling to me that this is only happening on 3.13t and nowhere else.
@charliermarsh should I file this as an uv issue to investigate this further?

I'd really be interested to see the contents of the pyvenv.cfg files for a uv environment in this setting!

Where would that file be located in the build? Maybe I could try to extract it somehow.
Unfortunately, I probably won't have access to my windows machine for the next two weeks.


Anyway. Once the pybind11 fix is merged and released, there at least is a way forward to build our projects on 3.13t 🚀

@charliermarsh
Copy link

Please feel free to file a uv issue!

@henryiii
Copy link
Contributor

It's in the base of the virtual environments. cat $VIRTUAL_ENV/pyvenv.cfg basically. python -c 'import sys; from pathlib import Path; print(Path(sys.prefix).joinpath("pyvenv.cfg").read_text())' would print it in a cross-platform way, I believe.

@henryiii
Copy link
Contributor

Anyway. Once the pybind11 fix is merged and released, there at least is a way forward to build our projects on 3.13t 🚀

pybind11 2.13.5 is out!

@burgholzer
Copy link
Contributor Author

Anyway. Once the pybind11 fix is merged and released, there at least is a way forward to build our projects on 3.13t 🚀

pybind11 2.13.5 is out!

Nice! Thanks for the quick release.

I'll try to get to the last two comments in this thread in the next couple of days (always a bit hard to plan on vacation).

@burgholzer
Copy link
Contributor Author

Please feel free to file a uv issue!

x-ref: filed astral-sh/uv#6948

@burgholzer
Copy link
Contributor Author

It's in the base of the virtual environments. cat $VIRTUAL_ENV/pyvenv.cfg basically. python -c 'import sys; from pathlib import Path; print(Path(sys.prefix).joinpath("pyvenv.cfg").read_text())' would print it in a cross-platform way, I believe.

Thanks for the tip. Ran that locally on my Windows VM to get the pyenv.cfg of the venv that the mqt-core build time dependency is being built in and it prints

home = C:\Users\burgholzer\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\python-freethreaded.3.13.0-rc1\tools
implementation = CPython
uv = 0.4.2
version_info = 3.13.0rc1
include-system-site-packages = false
relocatable = false

The Python_EXECUTABLE to print this was \\?\C:\Users\burgholzer\AppData\Local\uv\cache\builds-v0\.tmpRmcSyJ\Scripts\python.exe

For the venv that runs the isolated build of mqt-qcec the pyenv.cfg looks like this

home = C:\Users\burgholzer\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\python-freethreaded.3.13.0-rc1\tools
include-system-site-packages = false
version = 3.13.0
executable = C:\Users\burgholzer\AppData\Local\Temp\cibw-run-os7xk_t1\cp313t-win_amd64\build\venv\Scripts\python.exe
command = C:\Users\burgholzer\AppData\Local\Temp\cibw-run-os7xk_t1\cp313t-win_amd64\build\venv\Scripts\python.exe -m venv --without-pip --without-scm-ignore-files C:\Users\burgholzer\AppData\Local\Temp\build-env-d4_sgdys

With Python_EXECUTABLE being C:\Users\burgholzer\AppData\Local\Temp\build-env-d4_sgdys\Scripts\python.exe

burgholzer added a commit to cda-tum/mqt-ddsim that referenced this issue Sep 5, 2024
…425)

## Description

As pointed out in
pypa/cibuildwheel#1975 (comment)
free-threading (Python 3.13t) builds on Windows need to have
`Py_GIL_DISABLED` set in order to properly work.
This PR ensures that the corresponding setting is always set.

## Checklist:

<!---
This checklist serves as a reminder of a couple of things that ensure
your pull request will be merged swiftly.
-->

- [x] The pull request only contains commits that are related to it.
- [x] I have added appropriate tests and documentation.
- [x] I have made sure that all CI jobs on GitHub pass.
- [x] The pull request introduces no new warnings and follows the
project's style guidelines.

Signed-off-by: burgholzer <[email protected]>
burgholzer added a commit to cda-tum/mqt-core that referenced this issue Sep 5, 2024
…682)

## Description

As pointed out in
pypa/cibuildwheel#1975 (comment)
free-threading (Python 3.13t) builds on Windows need to have
`Py_GIL_DISABLED` set in order to properly work.
This PR ensures that the corresponding setting is always set.

## Checklist:

<!---
This checklist serves as a reminder of a couple of things that ensure
your pull request will be merged swiftly.
-->

- [x] The pull request only contains commits that are related to it.
- [x] I have added appropriate tests and documentation.
- [x] I have made sure that all CI jobs on GitHub pass.
- [x] The pull request introduces no new warnings and follows the
project's style guidelines.

Signed-off-by: burgholzer <[email protected]>
burgholzer added a commit to cda-tum/mqt-qmap that referenced this issue Sep 5, 2024
…513)

## Description

As pointed out in
pypa/cibuildwheel#1975 (comment)
free-threading (Python 3.13t) builds on Windows need to have
`Py_GIL_DISABLED` set in order to properly work.
This PR ensures that the corresponding setting is always set.

## Checklist:

<!---
This checklist serves as a reminder of a couple of things that ensure
your pull request will be merged swiftly.
-->

- [x] The pull request only contains commits that are related to it.
- [x] I have added appropriate tests and documentation.
- [x] I have made sure that all CI jobs on GitHub pass.
- [x] The pull request introduces no new warnings and follows the
project's style guidelines.

Signed-off-by: burgholzer <[email protected]>
burgholzer added a commit to cda-tum/mqt-qcec that referenced this issue Sep 5, 2024
…452)

## Description

As pointed out in
pypa/cibuildwheel#1975 (comment)
free-threading (Python 3.13t) builds on Windows need to have
`Py_GIL_DISABLED` set in order to properly work.
This PR ensures that the corresponding setting is always set.

## Checklist:

<!---
This checklist serves as a reminder of a couple of things that ensure
your pull request will be merged swiftly.
-->

- [x] The pull request only contains commits that are related to it.
- [x] I have added appropriate tests and documentation.
- [x] I have made sure that all CI jobs on GitHub pass.
- [x] The pull request introduces no new warnings and follows the
project's style guidelines.

Signed-off-by: burgholzer <[email protected]>
@joerick
Copy link
Contributor

joerick commented Oct 27, 2024

@burgholzer it looks to me that this issue can be closed?

@burgholzer
Copy link
Contributor Author

@burgholzer it looks to me that this issue can be closed?

Yeah. All good from our side. 3.13t builds are working like a charm now! 🙌

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

4 participants