fix(external): fetch and build each clone once per build pass #39
1 changed files with 1 additions and 1 deletions
docs: an unpinned external is pulled once per build
Say how often an unpinned ExternalDependency is pulled now that the configurations of a build share it, and list the target in the clone's cache key, which it is part of. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
commit
6e2d835aa6
|
|
@ -60,7 +60,7 @@ glslang.includeDirs = { "" };
|
||||||
glslang.libs = { "SPIRV", "glslang", "OSDependent" };
|
glslang.libs = { "SPIRV", "glslang", "OSDependent" };
|
||||||
```
|
```
|
||||||
|
|
||||||
Clones live at `~/.cache/crafter.build/external/<name>-<hash>/`, keyed by `(url, branch, commit, options)` so different projects sharing the same dep with the same spec reuse the clone and cmake build, while projects with diverging specs each get their own cache entry. The clone is resilient to partial-clone recovery and CMake reconfigure is triggered automatically on `options` changes. Submodules are checked out at the revisions the fetched commit records, after every clone, switch, checkout and pull, so a pinned commit builds against its own submodules and not the default branch's.
|
Clones live at `~/.cache/crafter.build/external/<name>-<hash>/`, keyed by `(url, branch, commit, options, target)` so different projects sharing the same dep with the same spec reuse the clone and cmake build, while projects with diverging specs each get their own cache entry. Without a `commit`, the clone is `git pull`ed once per build: every configuration of the build that declares the dependency, such as each test of a project whose tests copy its `externalDependencies`, shares that one fetch and cmake build. The clone is resilient to partial-clone recovery and CMake reconfigure is triggered automatically on `options` changes. Submodules are checked out at the revisions the fetched commit records, after every clone, switch, checkout and pull, so a pinned commit builds against its own submodules and not the default branch's.
|
||||||
|
|
||||||
**Header-only git deps** — same as cmake deps but `builder = ExternalBuilder::None`. Just clones and propagates `-I` flags.
|
**Header-only git deps** — same as cmake deps but `builder = ExternalBuilder::None`. Just clones and propagates `-I` flags.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue