GeezerVison is showing github.com — 0.15.1: a vcpkg installation waits for another one of the same root (… · mcpp-community/mcpp-plugins@25d577d
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: .github/scripts/check-deps-and-qt.sh +6Lines changed: 6 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -141,6 +141,12 @@ vcpkg_workspace() { | 141 | 141 | [ "$(find . -path '*/target/*' -path '*deps-vcpkg*' -name '*.stamp' | wc -l)" -ge 2 ] || | 142 | 142 | fail "each member did not declare its own installation" | 143 | 143 | echo "ok: two members that share no dependency both installed and linked one prefix" | | 144 | + # The two installations may run at once; vcpkg's own lock on the root makes | | 145 | + # the second wait only when asked to, and fails it otherwise ("failed to | | 146 | + # take lock", measured on GalTranslPP under 0.15.0). | | 147 | + [ "$(grep -rl -- '--x-wait-for-lock' --include=build.ninja . | wc -l)" -ge 2 ] || | | 148 | + fail "a member's installation does not wait for the root's lock" | | 149 | + echo "ok: each member's installation waits for another one of the same root" | 144 | 150 | } | 145 | 151 |
| 146 | 152 | cmake_consumer() { | |
Collapse file Copy file name to clipboardExpand all lines: README.md +1-1Lines changed: 1 addition & 1 deletion - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -9,7 +9,7 @@ module name the member declares, and configures it there. | 9 | 9 |
| 10 | 10 | ```toml | 11 | 11 | [build-dependencies.mcpp] | 12 | | -plugins = { version = "0.15.0", features = ["rules-spirv"], host-module = true } | | 12 | +plugins = { version = "0.15.1", features = ["rules-spirv"], host-module = true } | 13 | 13 | ``` | 14 | 14 |
| 15 | 15 | ```cpp | |
Collapse file Copy file name to clipboardExpand all lines: deps/vcpkg.cppm +5-2Lines changed: 5 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -274,8 +274,10 @@ inline prefix use(const options& opt = {}) { | 274 | 274 | // THE ACTION IS vcpkg ITSELF. Everything an installation needs is an | 275 | 275 | // argument: `--vcpkg-root` pairs the tool with the scripts it was | 276 | 276 | // released with, whatever `VCPKG_ROOT` the shell has; vcpkg locks the | 277 | | - // installation root itself (`<root>/vcpkg/vcpkg-running.lock`), so two | 278 | | - // workspace members installing one root wait for each other; its build | | 277 | + // installation root itself (`<root>/vcpkg/vcpkg-running.lock`), and | | 278 | + // `--x-wait-for-lock` makes a second installation of the same root -- | | 279 | + // two workspace members, run concurrently -- wait for the first | | 280 | + // instead of failing (measured on GalTranslPP under 0.15.0); its build | 279 | 281 | // and package trees go to a short directory under vcpkg's per-user | 280 | 282 | // directory, because a port's build nests deep and Windows tools still | 281 | 283 | // enforce MAX_PATH. | @@ -295,6 +297,7 @@ inline prefix use(const options& opt = {}) { | 295 | 297 | a.arg(exeS.c_str()).arg("install") | 296 | 298 | .arg(("--vcpkg-root=" + vcpkgRoot).c_str()) | 297 | 299 | .arg("--disable-metrics") | | 300 | + .arg("--x-wait-for-lock") | 298 | 301 | .arg("--triplet").arg(triplet.c_str()) | 299 | 302 | .arg(("--x-manifest-root=" + mcpp::deps::generic(manifestRoot)).c_str()) | 300 | 303 | .arg(("--x-install-root=" + mcpp::deps::generic(tripletRoot)).c_str()) | |
Collapse file Copy file name to clipboardExpand all lines: docs/deps.md +4-3Lines changed: 4 additions & 3 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -24,7 +24,7 @@ Module `mcpp.deps.archive`; engine floor: 2026.9.26.2. | 24 | 24 |
| 25 | 25 | ```toml | 26 | 26 | [build-dependencies.mcpp] | 27 | | -plugins = { version = "0.15.0", features = ["deps-vcpkg"], host-module = true } | | 27 | +plugins = { version = "0.15.1", features = ["deps-vcpkg"], host-module = true } | 28 | 28 | ``` | 29 | 29 |
| 30 | 30 | ```cpp | @@ -88,8 +88,9 @@ vcpkg's per-user directory (`%LOCALAPPDATA%\vcpkg` on Windows, | 88 | 88 | `$XDG_CACHE_HOME/vcpkg` or `~/.cache/vcpkg` elsewhere), beside vcpkg's default | 89 | 89 | binary cache, under a short name, because Windows tools still enforce MAX_PATH; | 90 | 90 | an existing `VCPKG_DOWNLOADS` is kept. vcpkg locks the installation root itself | 91 | | -(`<root>/vcpkg/vcpkg-running.lock`), so two workspace members installing one | 92 | | -root run one after the other. vcpkg fetches its | | 91 | +(`<root>/vcpkg/vcpkg-running.lock`), and `--x-wait-for-lock` makes two | | 92 | +workspace members installing one root run one after the other; without it the | | 93 | +second fails, "failed to take lock" (0.15.1). vcpkg fetches its | 93 | 94 | own CMake, Ninja and 7-Zip, and on Windows a portable git; on Linux and macOS | 94 | 95 | its documented host prerequisites (git, curl, zip, unzip, tar, a C compiler) | 95 | 96 | are the host's. Ports are compiled with vcpkg's default toolchain for the | |
Collapse file Copy file name to clipboardExpand all lines: docs/rules-qt.md +1-1Lines changed: 1 addition & 1 deletion - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
| 6 | 6 |
| 7 | 7 | ```toml | 8 | 8 | [build-dependencies.mcpp] | 9 | | -plugins = { version = "0.15.0", features = ["rules-qt"], host-module = true } | | 9 | +plugins = { version = "0.15.1", features = ["rules-qt"], host-module = true } | 10 | 10 |
| 11 | 11 | # The SDK and its version are the project's declaration. | 12 | 12 | [target.'cfg(any(windows, linux, macos))'.xlings.workspace] | |
Collapse file Copy file name to clipboardExpand all lines: mcpp.toml +1-1Lines changed: 1 addition & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
| 1 | 1 | [package] | 2 | 2 | name = "plugins" | 3 | 3 | namespace = "mcpp" | 4 | | -version = "0.15.0" | | 4 | +version = "0.15.1" | 5 | 5 | description = "Official mcpp build plugins: rule packages under mcpp.rules.*, build-time utilities under mcpp.tools.*, each member selected by a feature" | 6 | 6 | license = "Apache-2.0" | 7 | 7 | authors = ["mcpp-community"] | |
Collapse file Copy file name to clipboardExpand all lines: src/plugins.cppm +1-1Lines changed: 1 addition & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -49,7 +49,7 @@ export namespace mcpp::plugins { | 49 | 49 | // | 50 | 50 | // One package, one version: the number lives in mcpp.toml, and the CI step | 51 | 51 | // `the collection states its own version` compares the two. | 52 | | -inline constexpr std::string_view version = "0.15.0"; | | 52 | +inline constexpr std::string_view version = "0.15.1"; | 53 | 53 |
| 54 | 54 | } // namespace mcpp::plugins | 55 | 55 |
| |
Collapse file Copy file name to clipboardExpand all lines: tests/vcpkg-workspace/mcpp.toml +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
| 5 | 5 | # it, and those of no other package do, so each member declares the | 6 | 6 | # installation itself. The two actions run the same `vcpkg install` against the | 7 | 7 | # root's one manifest into one installation root; vcpkg locks that root itself | 8 | | -# (`vcpkg/vcpkg-running.lock`), so they run one after the other and the second | | 8 | +# (`vcpkg/vcpkg-running.lock`) and the member passes `--x-wait-for-lock`, so | | 9 | +# they run one after the other and the second | 9 | 10 | # finds everything installed. | 10 | 11 | [workspace] | 11 | 12 | members = ["app-a", "app-b"] | |
|