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

nanobind editable install fails due to mishandled .DS_Store #961

Closed
nicholasjng opened this issue Dec 18, 2024 · 9 comments
Closed

nanobind editable install fails due to mishandled .DS_Store #961

nicholasjng opened this issue Dec 18, 2024 · 9 comments

Comments

@nicholasjng
Copy link

I thought I'd raise this here, please excuse if this is misplaced.

My system:

  • macOS 15.2, on arm64.
  • uv version 0.5.10, sourced from Homebrew via brew install uv.
  • Python 3.13.1, also from Homebrew.

Repro:

  1. Clone wjakob/nanobind, sync to master@HEAD.
  2. Run uv venv --seed -p 3.13.
  3. Run source .venv/bin/activate.
  4. Run uv sync.

Output:

~/Workspaces/c++/nanobind master* ⇡
.venv ➜ uv sync                   
warning: No `requires-python` value found in the workspace. Defaulting to `>=3.13`.
Resolved 1 package in 1ms
  × Failed to build `nanobind @ file:///Users/nicholasjunge/Workspaces/c++/nanobind`
  ├─▶ The build backend returned an error
  ╰─▶ Call to `scikit_build_core.build.build_editable` failed (exit status: 1)

      [stdout]
      *** scikit-build-core 0.10.7 using CMake 3.31.2 (editable)
      *** Configuring CMake...
      loading initial cache file /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/build/CMakeInit.txt
      -- Configuring done (0.0s)
      -- Generating done (0.0s)
      -- Build files have been written to: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/build
      *** Building project with Ninja...
      ninja: no work to do.
      *** Installing project into wheel...
      -- Install configuration: "Release"
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/.DS_Store
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_descr.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_traits.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/make_iterator.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_error.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_types.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/.DS_Store
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/operators.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_func.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nanobind.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_accessor.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_cast.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/typing.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/trampoline.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_lib.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/eigen
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/eigen/dense.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/eigen/sparse.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/filesystem.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/unordered_map.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/bind_map.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/map.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/chrono.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/wstring.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/optional.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/list.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/detail
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_set.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/detail/traits.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/detail/chrono.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_dict.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_list.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_array.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_optional.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/shared_ptr.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/array.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/unique_ptr.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/pair.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/tuple.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/unordered_set.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/vector.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/function.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/complex.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/string_view.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/set.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/string.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/bind_vector.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/stl/variant.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_call.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/intrusive
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/intrusive/counter.inl
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/intrusive/counter.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/intrusive/ref.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/eval.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_enums.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_tuple.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_class.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_misc.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/ndarray.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_attr.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_python.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/include/nanobind/nb_defs.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/nb_static_property.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/common.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/trampoline.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/nb_combined.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/nb_func.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/nb_internals.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/error.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/nb_internals.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/buffer.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/nb_enum.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/nb_type.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/implicit.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/nb_ndarray.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/src/hash.h
      -- Up-to-date: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/stubgen.py
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/__init__.py
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/__main__.py
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/ext/robin_map/include/tsl/robin_map.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/ext/robin_map/include/tsl/robin_hash.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/ext/robin_map/include/tsl/robin_growth_policy.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/cmake/nanobind-config.cmake
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/cmake/darwin-ld-cpython.sym
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/cmake/darwin-ld-pypy.sym
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpjxzusbzb/wheel/purelib/nanobind/cmake/nanobind-config-version.cmake
      *** Making editable...

      [stderr]
      Traceback (most recent call last):
        File "<string>", line 11, in <module>
          wheel_filename = backend.build_editable("/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpgtK0HP", {}, None)
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpNxBcoy/lib/python3.13/site-packages/scikit_build_core/build/__init__.py", line
      57, in build_editable
          return _build_wheel_impl(
                 ~~~~~~~~~~~~~~~~~^
              wheel_directory,
              ^^^^^^^^^^^^^^^^
          ...<2 lines>...
              editable=True,
              ^^^^^^^^^^^^^^
          ).wheel_filename
          ^
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpNxBcoy/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 175,
      in _build_wheel_impl
          return _build_wheel_impl_impl(
              wheel_directory,
          ...<5 lines>...
              pyproject=pyproject,
          )
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpNxBcoy/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 478,
      in _build_wheel_impl_impl
          _make_editable(
          ~~~~~~~~~~~~~~^
              build_options=build_options,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          ...<7 lines>...
              packages=str_pkgs,
              ^^^^^^^^^^^^^^^^^^
          )
          ^
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpNxBcoy/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 60,
      in _make_editable
          installed = libdir_to_installed(libdir)
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpNxBcoy/lib/python3.13/site-packages/scikit_build_core/build/_editable.py", line
      73, in libdir_to_installed
          path_to_module(v.relative_to(libdir)): str(v.relative_to(libdir))
          ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpNxBcoy/lib/python3.13/site-packages/scikit_build_core/build/_pathutil.py", line
      31, in path_to_module
          path = path.with_name(path.name.split(".", 1)[0])
        File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/pathlib/_local.py", line 358, in
      with_name
          raise ValueError(f"Invalid name {name!r}")
      ValueError: Invalid name ''

      hint: This usually indicates a problem with the package or the build environment.

Looking more closely at the top and bottom of the traceback (the wheel_filename = backend.build_editable("/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpgtK0HP", {}, None) call), scikit-build-core is dealt a tempdir by uv containing a dot to start in its name, which it doesn't expect (or at least, pathlib cannot handle).

@LecrisUT
Copy link
Collaborator

One curious thing is why is it being installed as editable? Maybe this is part of uv interface that I am not familiar with.

Anyway for the current issue, an immediate solution would be to just strip the Path.suffix instead of relying of the str.split, but there is an underlying issue that we should trace down and see where this issue comes from. I will try to follow the traceback and see what is going on here.

@LecrisUT
Copy link
Collaborator

Preliminary issue that I found: nanobind has a file src/__init__.py, but that is very weird because what is the package name that it is supposed to be installed under. Recommendation is that they move the __init__.py and __main__.py under src/nanobind.

The issue is probably when it is trying to resolve:

def _get_packages(
*,
packages: Sequence[str] | Mapping[str, str] | None,
name: str,
) -> dict[str, str]:
if packages is not None:
if isinstance(packages, Mapping):
return dict(packages)
return {str(Path(p).name): p for p in packages}
# Auto package discovery
packages = {}
for base_path in (Path("src"), Path("python"), Path()):
path = base_path / name
if path.is_dir() and (
(path / "__init__.py").is_file() or (path / "__init__.pyi").is_file()
):
logger.info("Discovered Python package at {}", path)
packages[name] = str(path)
break
else:
logger.debug("Didn't find a Python package for {}", name)
return packages

Could you also run the installation with verbose logging? See https://scikit-build-core.readthedocs.io/en/latest/configuration.html#verbosity

@nicholasjng
Copy link
Author

That's just the default of uv sync, which is a development-focused command. The non-editable variant would be uv sync --no-editable.

Running with build.verbose = true and logging.level = "DEBUG" in [tool.scikit-build] gives me:

.venv ➜ uv sync     
warning: No `requires-python` value found in the workspace. Defaulting to `>=3.13`.
Resolved 1 package in 8ms
  × Failed to build `nanobind @ file:///Users/nicholasjunge/Workspaces/c++/nanobind`
  ├─▶ The build backend returned an error
  ╰─▶ Call to `scikit_build_core.build.build_editable` failed (exit status: 1)

      [stdout]
      *** scikit-build-core 0.10.7 using CMake 3.31.2 (editable)
      *** Configuring CMake...
      loading initial cache file /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build/CMakeInit.txt
      -- Configuring done (0.0s)
      -- Generating done (0.0s)
      -- Build files have been written to: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build
      *** Building project with Ninja...
      Change Dir: '/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build'

      Run Build Command(s): /opt/homebrew/bin/ninja -v
      ninja: no work to do.

      *** Installing project into wheel...
      -- Install configuration: "Release"
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/.DS_Store
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_descr.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_traits.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/make_iterator.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_error.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_types.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/.DS_Store
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/operators.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_func.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nanobind.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_accessor.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_cast.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/typing.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/trampoline.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_lib.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/eigen
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/eigen/dense.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/eigen/sparse.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/filesystem.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/unordered_map.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/bind_map.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/map.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/chrono.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/wstring.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/optional.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/list.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/detail
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_set.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/detail/traits.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/detail/chrono.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_dict.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_list.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_array.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/detail/nb_optional.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/shared_ptr.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/array.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/unique_ptr.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/pair.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/tuple.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/unordered_set.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/vector.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/function.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/complex.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/string_view.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/set.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/string.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/bind_vector.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/stl/variant.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_call.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/intrusive
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/intrusive/counter.inl
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/intrusive/counter.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/intrusive/ref.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/eval.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_enums.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_tuple.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_class.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_misc.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/ndarray.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_attr.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_python.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/include/nanobind/nb_defs.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/nb_static_property.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/common.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/trampoline.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/nb_combined.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/nb_func.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/nb_internals.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/error.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/nb_internals.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/buffer.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/nb_enum.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/nb_type.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/implicit.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/nb_ndarray.cpp
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/src/hash.h
      -- Up-to-date: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/stubgen.py
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/__init__.py
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/__main__.py
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/ext/robin_map/include/tsl/robin_map.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/ext/robin_map/include/tsl/robin_hash.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/ext/robin_map/include/tsl/robin_growth_policy.h
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/cmake/nanobind-config.cmake
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/cmake/darwin-ld-cpython.sym
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/cmake/darwin-ld-pypy.sym
      -- Installing: /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib/nanobind/cmake/nanobind-config-version.cmake
      *** Making editable...

      [stderr]
      2024-12-18 17:23:21,995 - scikit_build_core - INFO - RUN: /opt/homebrew/bin/cmake -E capabilities
      2024-12-18 17:23:22,001 - scikit_build_core - INFO - CMake version: 3.31.2
      2024-12-18 17:23:22,004 - scikit_build_core - DEBUG - MACOSX_DEPLOYMENT_TARGET not set, using 15.0
      2024-12-18 17:23:22,005 - scikit_build_core - INFO - Build directory:
      /private/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build
      2024-12-18 17:23:22,007 - scikit_build_core - DEBUG - SITE_PACKAGES:
      /Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/lib/python3.13/site-packages
      2024-12-18 17:23:22,014 - scikit_build_core - DEBUG - Default generator: Ninja
      2024-12-18 17:23:22,014 - scikit_build_core - INFO - RUN: /opt/homebrew/bin/ninja --version
      2024-12-18 17:23:22,016 - scikit_build_core - INFO - Ninja version: 1.12.1
      2024-12-18 17:23:22,017 - scikit_build_core - DEBUG - CMAKE_GENERATOR: Using ninja: /opt/homebrew/bin/ninja
      2024-12-18 17:23:22,017 - scikit_build_core - DEBUG - libdir/(ld)library:
      /opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/lib/libpython3.13.a is not a real file!
      2024-12-18 17:23:22,017 - scikit_build_core - DEBUG - /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build/CMakeInit.txt:
        set(SKBUILD [===[2]===] CACHE STRING "" FORCE)
        set(SKBUILD_CORE_VERSION [===[0.10.7]===] CACHE STRING "" FORCE)
        set(SKBUILD_PROJECT_NAME [===[nanobind]===] CACHE STRING "" FORCE)
        set(SKBUILD_PROJECT_VERSION [===[2.5.0]===] CACHE STRING "" FORCE)
        set(SKBUILD_PROJECT_VERSION_FULL [===[2.5.0.dev1]===] CACHE STRING "" FORCE)
        set(PYTHON_EXECUTABLE [===[/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/bin/python]===] CACHE STRING "" FORCE)
        set(PYTHON_INCLUDE_DIR [===[/opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/include/python3.13]===] CACHE PATH
      "" FORCE)
        set(PYTHON_LIBRARY [===[/opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/Python]===] CACHE PATH "" FORCE)
        set(Python_EXECUTABLE [===[/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/bin/python]===] CACHE STRING "" FORCE)
        set(Python_ROOT_DIR [===[/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm]===] CACHE STRING "" FORCE)
        set(Python_INCLUDE_DIR [===[/opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/include/python3.13]===] CACHE PATH
      "" FORCE)
        set(Python_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE)
        set(Python3_EXECUTABLE [===[/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/bin/python]===] CACHE STRING "" FORCE)
        set(Python3_ROOT_DIR [===[/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm]===] CACHE STRING "" FORCE)
        set(Python3_INCLUDE_DIR [===[/opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/include/python3.13]===] CACHE PATH
      "" FORCE)
        set(Python3_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE)
        set(SKBUILD_SOABI [===[cpython-313-darwin]===] CACHE STRING "" FORCE)
        set(SKBUILD_SABI_COMPONENT [===[]===] CACHE STRING "" FORCE)
        set(SKBUILD_PURELIB_DIR [===[/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib]===] CACHE PATH "" FORCE)
        set(SKBUILD_DATA_DIR [===[/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/data]===] CACHE PATH "" FORCE)
        set(SKBUILD_HEADERS_DIR [===[/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/headers]===] CACHE PATH "" FORCE)
        set(SKBUILD_SCRIPTS_DIR [===[/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/scripts]===] CACHE PATH "" FORCE)
        set(SKBUILD_NULL_DIR [===[/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/null]===] CACHE PATH "" FORCE)
        set(SKBUILD_METADATA_DIR [===[/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/metadata]===] CACHE PATH "" FORCE)
        set(SKBUILD_STATE [===[editable]===] CACHE STRING "" FORCE)
        set(CMAKE_PREFIX_PATH [===[/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/lib/python3.13/site-packages]===] CACHE PATH ""
      FORCE)
        set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH" CACHE PATH "")
      2024-12-18 17:23:22,017 - scikit_build_core - DEBUG - RUNENV:
        CC='clang'
        CLICOLOR_FORCE='1'
        CMAKE_GENERATOR='Ninja'
        COMMAND_MODE='unix2003'
        CONDA_CHANGEPS1='no'
        CXX='clang++'
        EDITOR='hx'
        HOME='/Users/nicholasjunge'
        HOMEBREW_CELLAR='/opt/homebrew/Cellar'
        HOMEBREW_PREFIX='/opt/homebrew'
        HOMEBREW_REPOSITORY='/opt/homebrew'
        INFOPATH='/opt/homebrew/share/info:'
        LANG='en_US.UTF-8'
        LC_ALL='en_US.UTF-8'
        LC_CTYPE='UTF-8'
        LESS='-g -i -M -R -S -w -X -z-4'
        LOGNAME='nicholasjunge'
        OLDPWD='/Users/nicholasjunge/.local/share/zap'
        PAGER='less'
        PATH='/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/bin:/Users/nicholasjunge/Workspaces/c++/nanobind/.venv/bin:/opt/homebrew/share/google-cloud-sdk/bin:/Users/nicholasjunge/.local/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/nicholasjunge/.cargo/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin'
        PROMPT_EOL_MARK=''
        PS1='%(12V.%F{$prompt_pure_colors[virtualenv]}%12v%f
      .)%(?.%F{$prompt_pure_colors[prompt:success]}.%F{$prompt_pure_colors[prompt:error]})${prompt_pure_state[prompt]}%f '
        PURE_PROMPT_SYMBOL='➜'
        PWD='/Users/nicholasjunge/Workspaces/c++/nanobind'
        PYTHONIOENCODING='utf-8:backslashreplace'
        SHELL='/bin/zsh'
        SHLVL='1'
        SSH_AUTH_SOCK='/private/tmp/com.apple.launchd.SmoRG1vUc6/Listeners'
        TERM='xterm-256color'
        TERMINAL_EMULATOR='JetBrains-JediTerm'
        TERM_SESSION_ID='b9437cec-76ef-4971-9b02-e108fb9d278b'
        TMPDIR='/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/'
        USER='nicholasjunge'
        VIRTUAL_ENV='/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm'
        VIRTUAL_ENV_DISABLE_PROMPT='12'
        VIRTUAL_ENV_PROMPT='(nanobind) '
        VISUAL='hx'
        XPC_FLAGS='0x0'
        XPC_SERVICE_NAME='0'
        ZAP_DIR='/Users/nicholasjunge/.local/share/zap'
        ZAP_PLUGIN_DIR='/Users/nicholasjunge/.local/share/zap/plugins'
        ZSHRC='/Users/nicholasjunge/.zshrc'
        _='/opt/homebrew/bin/uv'
        __CFBundleIdentifier='com.jetbrains.pycharm.ce'
        __CF_USER_TEXT_ENCODING='0x1F5:0x0:0x0'
      2024-12-18 17:23:22,017 - scikit_build_core - INFO - RUN: /opt/homebrew/bin/cmake -S.
      -B/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build -DCMAKE_BUILD_TYPE:STRING=Release
      -C/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build/CMakeInit.txt
      -DCMAKE_INSTALL_PREFIX=/var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib
      -DCMAKE_MAKE_PROGRAM=/opt/homebrew/bin/ninja -DNB_TEST=FALSE
      2024-12-18 17:23:22,059 - scikit_build_core - DEBUG - RUNENV - changes since last run only:
      
      2024-12-18 17:23:22,059 - scikit_build_core - INFO - RUN: /opt/homebrew/bin/cmake --build
      /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build -v
      2024-12-18 17:23:22,066 - scikit_build_core - DEBUG - RUNENV - changes since last run only:
      
      2024-12-18 17:23:22,066 - scikit_build_core - INFO - RUN: /opt/homebrew/bin/cmake
      --install /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/build --prefix
      /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib --strip
      2024-12-18 17:23:22,108 - scikit_build_core - DEBUG - Didn't find a Python package for nanobind
      Traceback (most recent call last):
        File "<string>", line 11, in <module>
          wheel_filename = backend.build_editable("/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpDdOJOT", {}, None)
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/lib/python3.13/site-packages/scikit_build_core/build/__init__.py", line
      57, in build_editable
          return _build_wheel_impl(
                 ~~~~~~~~~~~~~~~~~^
              wheel_directory,
              ^^^^^^^^^^^^^^^^
          ...<2 lines>...
              editable=True,
              ^^^^^^^^^^^^^^
          ).wheel_filename
          ^
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 175,
      in _build_wheel_impl
          return _build_wheel_impl_impl(
              wheel_directory,
          ...<5 lines>...
              pyproject=pyproject,
          )
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 478,
      in _build_wheel_impl_impl
          _make_editable(
          ~~~~~~~~~~~~~~^
              build_options=build_options,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          ...<7 lines>...
              packages=str_pkgs,
              ^^^^^^^^^^^^^^^^^^
          )
          ^
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 60,
      in _make_editable
          installed = libdir_to_installed(libdir)
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/lib/python3.13/site-packages/scikit_build_core/build/_editable.py", line
      73, in libdir_to_installed
          path_to_module(v.relative_to(libdir)): str(v.relative_to(libdir))
          ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/nicholasjunge/Library/Caches/uv/builds-v0/.tmpoIrIBm/lib/python3.13/site-packages/scikit_build_core/build/_pathutil.py", line
      31, in path_to_module
          path = path.with_name(path.name.split(".", 1)[0])
        File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/pathlib/_local.py", line 358, in
      with_name
          raise ValueError(f"Invalid name {name!r}")
      ValueError: Invalid name ''

      hint: This usually indicates a problem with the package or the build environment.

@LecrisUT
Copy link
Collaborator

  2024-12-18 17:23:22,108 - scikit_build_core - DEBUG - Didn't find a Python package for nanobind

Ok so packages = {} and str_pkgs should also be empty then, that seems to be a red-herring. Still an issue IMO though.

Some more digging libdir arg in _make_editable is wheel_dir/"purelib" and it is failing at libdir_to_isntalled and it fails somewhere in the files that it gives from scandir, but I am not quite sure what files were installed in the /var/folders/rw/mj164vm16k10x_byww6my1s00000gn/T/tmpyjjlgw0_/wheel/purelib which I presume is what wheel_dir/"purelib" is. Maybe it is stumbling on .DS_Store that you have there. Can you try to add .DS_Store to your .gitignore (not sure if .git/exclude would work).

Ultimately though I think nanobind's CMake files and scikit-build-core implementation should be reviewed more carefully, something feels off in the design there of installing itself, but I can't put my finger on what. I think it should be using wheel.cmake=false at the very least, and I thought that pybind11 was using that, but I don't see it. @henryiii did you review the design for nanobind or have any thoughts?

@nicholasjng
Copy link
Author

nicholasjng commented Dec 18, 2024

.DS_Store is already in the .gitignore, albeit with a backslash escaping the dot (i.e. \.DS_Store). Putting normal .DS_Store without "\" does not help, either.

But you're spot on I think. Putting logger.debug(str(path)) in L32 of _pathutil.py gives

2024-12-18 19:05:00,330 - scikit_build_core - DEBUG - nanobind/stubgen.py
      2024-12-18 19:05:00,330 - scikit_build_core - DEBUG - nanobind/cmake/nanobind-config.cmake
      2024-12-18 19:05:00,330 - scikit_build_core - DEBUG - nanobind/cmake/darwin-ld-pypy.sym
      2024-12-18 19:05:00,330 - scikit_build_core - DEBUG - nanobind/cmake/darwin-ld-cpython.sym
      2024-12-18 19:05:00,330 - scikit_build_core - DEBUG - nanobind/cmake/nanobind-config-version.cmake
      2024-12-18 19:05:00,330 - scikit_build_core - DEBUG - nanobind/include/.DS_Store
      Traceback (most recent call last):
        File "<string>", line 11, in <module>
          wheel_filename = backend.build_editable("/Users/nicholasjunge/.cache/uv/builds-v0/.tmpTfDM6s", {}, None)
        File "/Users/nicholasjunge/Workspaces/c++/nanobind/.venv/lib/python3.13/site-packages/scikit_build_core/build/__init__.py", line 57, in
      build_editable
          return _build_wheel_impl(
                 ~~~~~~~~~~~~~~~~~^
              wheel_directory,
              ^^^^^^^^^^^^^^^^
          ...<2 lines>...
              editable=True,
              ^^^^^^^^^^^^^^
          ).wheel_filename
          ^
        File "/Users/nicholasjunge/Workspaces/c++/nanobind/.venv/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 175, in
      _build_wheel_impl
          return _build_wheel_impl_impl(
              wheel_directory,
          ...<5 lines>...
              pyproject=pyproject,
          )
        File "/Users/nicholasjunge/Workspaces/c++/nanobind/.venv/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 478, in
      _build_wheel_impl_impl
          _make_editable(
          ~~~~~~~~~~~~~~^
              build_options=build_options,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          ...<7 lines>...
              packages=str_pkgs,
              ^^^^^^^^^^^^^^^^^^
          )
          ^
        File "/Users/nicholasjunge/Workspaces/c++/nanobind/.venv/lib/python3.13/site-packages/scikit_build_core/build/wheel.py", line 60, in
      _make_editable
          installed = libdir_to_installed(libdir)
        File "/Users/nicholasjunge/Workspaces/c++/nanobind/.venv/lib/python3.13/site-packages/scikit_build_core/build/_editable.py", line 73, in
      libdir_to_installed
          path_to_module(v.relative_to(libdir)): str(v.relative_to(libdir))
          ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/nicholasjunge/Workspaces/c++/nanobind/.venv/lib/python3.13/site-packages/scikit_build_core/build/_pathutil.py", line 33, in
      path_to_module
          path = path.with_name(path.name.split(".", 1)[0])
        File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/pathlib/_local.py", line 358, in
      with_name
          raise ValueError(f"Invalid name {name!r}")
      ValueError: Invalid name ''

      hint: This usually indicates a problem with the package or the build environment.

So it seems .DS_Store is indeed the culprit. How does that slip through though, if it's in gitignore?

@nicholasjng nicholasjng changed the title nanobind editable install fails due to unexpected tempdir name nanobind editable install fails due to mishandled .DS_Store Dec 18, 2024
@LecrisUT
Copy link
Collaborator

Ok, things are more complicated because the file is installed because of the CMakeLists.txt and not due to scikit-build-core installation. This one is quite tricky because it is a whack-a-mole if you fix that snippet, since src part could also be affected. Really the best option would be to redesign nanobind's build system. I will open an issue there and tag you.

@nicholasjng
Copy link
Author

Thanks. Could you explain why this fails in editable mode only, and not in a proper install?

@LecrisUT
Copy link
Collaborator

If you do a pip install . I suspect it would also fail though, or at least still have the .DS_Store installed. Probably it would not fail because it does not need to create _<pkg>_editable.py files. Still though the nanobind build system would be problematic because you could have uncommitted files in the git repo that are still installed, which could have unknown effects. For production purposes it would not be an issue, but still the approach there does not seem right to me, so I want to get some clarification on the design requirements and decisions

@nicholasjng
Copy link
Author

Nope, doesn't fail with uv pip install . But it does have all of the .DS_Stores baked in at lib/python3.13/site-packages in the whole package directory.

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

2 participants