From f40cbb1aeb925e2fbb17d4db4da780274d454813 Mon Sep 17 00:00:00 2001 From: Ralf Juengling Date: Fri, 16 Oct 2026 10:41:40 -0700 Subject: [PATCH] build: keep the CCCL submodule out of the sdist Follow-up to #2940. That change vendored CCCL as the submodule cuda_core/third_party/cccl and grafted its libcudacxx/include tree into the sdist through cuda_core/MANIFEST.in. The setuptools-scm 10 git file finder lists the files of an initialized submodule, so building an sdist from a checkout that has the submodule checked out now packs the entire CCCL tree (cub, thrust, docs, tests, ...) into the sdist, although cuda.core only needs the libcu++ headers that MANIFEST.in already adds explicitly. The same listing is also walked on every egg_info run, which slows down wheel builds. Mark the submodule export-ignore, which the finder honors, so it is skipped. The MANIFEST.in graft still provides the headers and licenses. --- .gitattributes | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitattributes b/.gitattributes index 1e84d118156..4182e7ab3d6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14,3 +14,11 @@ pixi.lock merge=binary linguist-language=YAML linguist-generated=true # `setuptools-scm` to correctly determine the version when building from a git # archive. See #1609. .git_archival.txt export-subst + +# cuda.core compiles against the libcu++ headers of the vendored CCCL submodule +# only; cuda_core/MANIFEST.in grafts those headers (and their licenses) into the +# sdist explicitly. setuptools-scm 10 lists the files of an initialized +# submodule, which would otherwise add the entire CCCL tree to the sdist and +# make every egg_info walk it. "export-ignore" makes its file finder skip the +# submodule. See #2940. +cuda_core/third_party/cccl export-ignore