wyvrnpm 2.12.2 → 2.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@ A simple, private C++ package manager that works with any static file hosting pr
4
4
 
5
5
  There is no central registry. You control where packages are hosted.
6
6
 
7
- > **README version: 2.8.3** — Highlights since 2.4.0: non-ABI build-time `conf` block (CMake cache variables via recipe / team profile / `wyvrn.local.json` / CLI `--conf`), per-package `source` pin for multi-source defense, profile inheritance via `extends`, pattern-based `settingsOverrides` (`boost*: {...}`), `wyvrnpm cache list` / `cache prune` for selective source-build-cache cleanup, `install --dry-run` (JSON plan without side effects), `install --build=always` to force source-rebuild, `--token-env` for CI credentials, CloudFront/WAF-compatible HTTP provider (sends `User-Agent`, surfaces non-404 errors), publish preserves dependency ranges verbatim with lock snapshot moved to informational `publishedLock`, and a raft of security hardening (Zip Slip, MSVC arch allow-list). Full list in `claude/EVALUATION.md`.
7
+ > **README version: 2.12.3** — Highlights since 2.8.3: profile's `compiler.cppstd` is now authoritative for the toolchain — `CMAKE_CXX_STANDARD` is set unconditionally before `project()` and `cpp.cmake` no longer touches it post-`project()`, so a `-DCMAKE_CXX_STANDARD=23` on the cmake CLI cannot defeat a `cppstd=20` profile; `wyvrnpm install` exits non-zero on partial failure (sha256-mismatch, extract-failed, no-exact-match, source-build-failed, not-found) and prints a per-dep failure summary instead of misreporting "Done — N installed"; streaming publish via `archiver` (handles >2 GiB artefacts that `adm-zip` choked on e.g. gRPC's `RelWithDebInfo` static libs); `--build-dir <path>` + `wyvrn.local.json:binaryDirRoot` to sidestep `build/` case-insensitive-FS collisions on repos with a Bazel/Buck `BUILD` file at the root (gRPC, …); `wyvrnpm version` to read / set / partially update the top-level `version` field from CI pipelines (`wyvrnpm version --build "$BUILD_ID"`); `wyvrnpm bootstrap <git-url>` to scaffold a first-draft `wyvrn.json` for OSS C++ libraries (fmt, spdlog, zlib, …) with cookbook-driven defaults; `wyvrnpm publish --dry-run` (npm-style preview of the upload plan, plus `wouldOverwrite` flag in `--format json`); `wyvrnpm build --config Debug,Release` / `--all-configs` to build multiple configurations from a single configure; resolver hardened against the CloudFront brotli-vs-identity cache split (resolved a class of bugs where `show` listed a freshly-published version that `install` claimed didn't exist). Full list in `claude/EVALUATION.md`.
8
8
 
9
9
  ---
10
10
 
@@ -1820,7 +1820,7 @@ cmake --build build/wyvrn-default --config Release
1820
1820
 
1821
1821
  | File | Provides |
1822
1822
  |---|---|
1823
- | `cpp.cmake` | C++ standard defaults (guardedtoolchain wins). |
1823
+ | `cpp.cmake` | Post-`project()` C++ language defaults. `CMAKE_CXX_STANDARD` is owned by the toolchain (set unconditionally from `profile.compiler.cppstd` before `project()` a `-DCMAKE_CXX_STANDARD=…` on the cmake CLI cannot override it). |
1824
1824
  | `variables.cmake` | Platform detection (`WYVRN_PLATFORM_WIN`, …) and compiler flags. |
1825
1825
  | `options.cmake` | Feature toggles (`WYVRN_ENABLE_LOG`, …). |
1826
1826
  | `functions.cmake` | `SETUP_LIBRARY` / `SETUP_EXE` plus HAL source-collection helpers. |
package/cmake/cpp.cmake CHANGED
@@ -1,9 +1,7 @@
1
- # Define the cpp information ( version, compilation type, thread type, exception handling )
2
- # Set a C++20 default only if the consumer (or wyvrnpm's toolchain) has not
3
- # already chosen a standard the toolchain sets CMAKE_CXX_STANDARD from the
4
- # active build profile before project(), and that explicit choice must win.
5
- if(NOT DEFINED CMAKE_CXX_STANDARD)
6
- set(CMAKE_CXX_STANDARD 20)
7
- set(CMAKE_CXX_STANDARD_REQUIRED True)
8
- endif()
1
+ # C++ language defaults that survive after project().
2
+ #
3
+ # CMAKE_CXX_STANDARD / _REQUIRED / _EXTENSIONS are owned by the toolchain
4
+ # (wyvrn_toolchain.cmake sets them from the active profile's compiler.cppstd
5
+ # before project()). Re-setting them here would clobber the profile-derived
6
+ # value — so we deliberately don't.
9
7
  set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API OFF)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wyvrnpm",
3
- "version": "2.12.2",
3
+ "version": "2.12.3",
4
4
  "description": "A simple, static-hosting-compatible C++ package manager",
5
5
  "keywords": [
6
6
  "c++",
@@ -39,11 +39,13 @@ set(WYVRN_PROFILE_RUNTIME "{{PROFILE_RUNTIME}}")
39
39
  set(WYVRNPM_CMAKE_DIR "{{WYVRNPM_CMAKE_DIR}}")
40
40
 
41
41
  # ── C++ standard ──────────────────────────────────────────────────────────────
42
- if(NOT DEFINED CMAKE_CXX_STANDARD)
43
- set(CMAKE_CXX_STANDARD {{PROFILE_CPPSTD}})
44
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
45
- set(CMAKE_CXX_EXTENSIONS OFF)
46
- endif()
42
+ # Profile-driven and unconditional. Anyone consuming this toolchain accepts
43
+ # the active profile's `compiler.cppstd` as authoritative — a -DCMAKE_CXX_STANDARD
44
+ # on the cmake command line cannot defeat it. Use a different profile (or
45
+ # settings override on the dep) to change the standard.
46
+ set(CMAKE_CXX_STANDARD {{PROFILE_CPPSTD}})
47
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
48
+ set(CMAKE_CXX_EXTENSIONS OFF)
47
49
 
48
50
  # ── MSVC runtime library ──────────────────────────────────────────────────────
49
51
  # Only meaningful when the actual compiler is MSVC. CMake ignores this on other