Repository navigation
build: depend on the shared host crates by path at tip of tree - #1466
Merged
Merged
Conversation
cuda-oxide path-depends on cuda-bindings, cuda-core, and cuda-async at the git root, but the dependency lines also carried version = "=0.4.0", and check-shared-crate-pin.sh required that exact string in every example workspace and in the cargo oxide new scaffold. A host-crate release meant editing this manifest, 234 example manifests, the scaffold constant, and the license inventory before the tree was consistent again. Drop the version requirement from every in-tree path dependency on the host crates. A path dependency with no version resolves to the sibling directory, so cuda-oxide tracks the host crates at tip of tree, and nothing in this tree that depends on them is published, so nothing needs the version. Lockfiles are unchanged. check-shared-crate-pin.sh keeps its name and CI job but checks the new invariant: the four root crates agree on a version, in-tree manifests name the host crates as path dependencies with no version, and the scaffold's SHARED_HOST_CRATES_VERSION, the one place a crates.io version lives for out-of-tree projects, equals the root crates' version. The four host-crate rows in dependency-licenses.csv record "path" instead of a version number; the checker compares names only. First PR under NVIDIA#1459. Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
elibol
requested review from
binarybana,
cryos,
kkraus14,
roivanov and
rparolin
as code owners
October 9, 2026 00:14
Collaborator
|
Thanks, @elibol - removing the repeated in-tree version requirements looks good to me. I'm comfortable treating this build cleanup independently of #1460 and #1461. I'll handle changes to One small suggestion: please keep the script checking whether a required dependency is missing from Cargo.toml. The updated script misses that case. Cargo would still report the error later, so this doesn’t block the PR. This partially addresses #1459. |
nihalpasham
approved these changes
Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First PR under #1459.
cuda-oxide depends on the shared host crates by path, but the dependency lines also carried
version = "=0.4.0", andcheck-shared-crate-pin.shrequired that exact string in all 234 example workspaces and in thecargo oxide newscaffold. Every host-crate release therefore meant editing cuda-oxide's manifest, every example manifest, the scaffold constant, and the license inventory before the tree was consistent again.This drops the version requirement from every in-tree path dependency on cuda-bindings, cuda-core, and cuda-async: the three workspace lines and 238 lines across the example manifests. A path dependency with no version always resolves to the sibling directory, so cuda-oxide now tracks the host crates at tip of tree. Nothing in this tree that depends on them (cuda-host, cuda-macros, the examples) is published, so nothing needs the version. Lockfiles are unchanged; the touched example workspaces still pass
cargo metadata --locked.check-shared-crate-pin.shkeeps its name and its CI job but checks the new invariant: the four root crates agree on a version, in-tree manifests name the host crates as path dependencies with no version, and the scaffold'sSHARED_HOST_CRATES_VERSION, the one place a crates.io version lives (out-of-tree projects cannot use the git-root paths), equals the root crates' version. It rejects a reintroduced version field; I checked that by hand. Deriving the scaffold constant from the root manifests at build time is the next PR under #1459.The four host-crate rows in
dependency-licenses.csvnow recordpathinstead of a version number;check-dependency-licenses.shcompares names only, so they remain valid.