[kcenon-common-system] new port#51511
Conversation
e6d0f32 to
f3bcf93
Compare
A full audit of every port revealed that the published SHA512 in each portfile.cmake did not match the actual upstream archive at https://github.com/kcenon/<repo>/archive/refs/tags/v<version>.tar.gz. The vcpkg downloads cache had been masking the failure: once a buildtree had been populated, the cached archive (with its real, matching hash) was reused, so weekly consume-tests passed on existing CI runners while a clean install on any new machine would have hit `Actual hash` errors immediately (cf. microsoft/vcpkg#51511). Audit results (SHA truncated): | Port | Current SHA | Actual SHA | Status | |-------------------------------|---------------|---------------|---------| | kcenon-common-system v0.2.0 | 7385ba3a... | ac458878... | FIXED | | kcenon-thread-system v0.3.2 | 7ff506e3... | 075e63bb... | FIXED | | kcenon-container-system v0.1.0| ca2feee0... | 3cf36f0b... | FIXED | | kcenon-logger-system v0.1.3 | 90884ec4... | 4ffc4b24... | FIXED | | kcenon-monitoring-system v0.1.0| 65e6e23c... | 169748d7... | FIXED | | kcenon-database-system v0.1.1 | 51d9168b... | 989aeb71... | FIXED | | kcenon-network-system v0.1.1 | 2d147a3e... | 8a723086... | FIXED | | kcenon-pacs-system v0.1.0 | 242dd7bc... | 0db1f80c... | FIXED | Each fix: - replaces the SHA512 in ports/<port>/portfile.cmake with the value from `sha512sum` of the upstream archive - bumps `port-version` in ports/<port>/vcpkg.json - prepends a new entry to versions/k-/<port>.json with the new port-version and the recomputed git-tree SHA - updates versions/baseline.json so the registry resolves to the corrected port-version Closes #87. Relates to kcenon/common_system#653, microsoft/vcpkg#51511.
f3bcf93 to
8e1a35f
Compare
[kcenon-common-system] new port
8e1a35f to
9fdc55b
Compare
Submission status update (2026-05-03)Self-diagnosed and addressed all in-PR issues across 4 commits. Posting summary for maintainer visibility. Final CI state (commit
|
| Status | Count | Triplets |
|---|---|---|
| SUCCESS | 12 | arm64_android, arm64_linux, arm64_osx, arm64_windows, arm64_windows_static_md, arm_neon_android, x64_linux, x64_windows, x64_windows_release, x64_windows_static, x64_windows_static_md, x86_windows |
| FAILURE | 1 | x64_android (cascade-regression, see below) |
| Pending | 1 | license/cla (author signature in progress) |
Aggregate microsoft.vcpkg.pr reflects the x64_android failure.
x64_android failure analysis
The x64_android failure is not in kcenon-common-system itself. The port built and installed successfully on x64_android (visible in build 131036 log 107):
Installing 3/3 kcenon-common-system:x64-android@0.2.0...
-- Extracting source /vcpkg/downloads/kcenon-common_system-v0.2.0.tar.gz
-- Installing: .../share/kcenon-common-system/copyright
Starting submission of kcenon-common-system:x64-android@0.2.0 to 1 binary cache(s)
Elapsed time to handle kcenon-common-system:x64-android: 443 ms
Both [core] and [core,yaml] features completed and submitted to binary cache.
The actual regression in the same log:
REGRESSION: vcpkg-ci-ffmpeg:x64-android cascaded, but it is required to pass.
Generating parent hashes failed; this is usually an infrastructure problem with vcpkg
vcpkg-ci-ffmpeg is an internal vcpkg test port (no relation to kcenon). The cascade was caused by a transient "Generating parent hashes failed" infrastructure error. This PR did not modify ports/ffmpeg, ports/vcpkg-ci-ffmpeg, or any related dependency. Suggesting a retrigger of x64_android once infra recovers.
Push history (transparency)
| Push | Commit | Fix applied | Triplet result |
|---|---|---|---|
| 1 | e6d0f32e |
Initial submission | 14 FAILURE (SHA512 mismatch) |
| 2 | f3bcf935 |
SHA512 corrected against actual archive | 14 FAILURE (POST_BUILD_CHECKS_FAILED) |
| 3 | 8e1a35f6 |
Added usage install line in portfile |
11 SUCCESS / 3 FAILURE |
| 4 | 9fdc55b0 |
Applied format.diff from build artifact |
12 SUCCESS / 2 FAILURE |
Outstanding (not blocking maintainer review)
- CLA: Author is signing
- x64_android retrigger: Maintainer-side action only (vcpkg infra)
Side observation (for vcpkg maintainers)
While verifying the SHA512 fix, an audit of all 8 kcenon ports in the kcenon-owned overlay registry found that all 8 had stale SHA512 values that only worked because of vcpkg's archive cache. Fixed in kcenon/vcpkg-registry#88 (merged). The release automation that produced those values is being hardened separately (kcenon/common_system#674). This PR's port files are now verified against the actual upstream archive — no stale SHA in this submission.
Tracking
- kcenon issue: chore(vcpkg): submit kcenon-common-system to microsoft/vcpkg official registry kcenon/common_system#653
- Parent EPIC: [EPIC] Ecosystem-wide vcpkg distribution readiness kcenon/common_system#646
- Audit fix: fix(ports): correct SHA512 across all 8 kcenon ports (#87) kcenon/vcpkg-registry#88
- Automation hardening: [EPIC] Harden release SHA512 automation across all 8 kcenon systems kcenon/common_system#674
Add configure_file install step in every modified portfile to ensure the
existing usage file lands at ${CURRENT_PACKAGES_DIR}/share/${PORT}/usage.
Without this, vcpkg's post-build check fails with POST_BUILD_CHECKS_FAILED
on cold-cache or strict-mode consumers (e.g., curated-registry submission).
Verified working in microsoft/vcpkg#51511 commit 8e1a35f6.
Closes #89.
|
@microsoft-github-policy-service agree |
Add an independent SHA512 verification step in sync-vcpkg-registry.yml that re-downloads the release archive from GitHub and compares the recomputed SHA against the value the workflow is about to write to portfile.cmake. On mismatch the step prints both SHAs and exits 1 before any registry commit happens. Mitigates the failure mode found in microsoft/vcpkg#51511 and kcenon/vcpkg-registry#87, where every kcenon port shipped a SHA that did not match the actual archive and cold-cache vcpkg installs failed. The audit confirmed sync-vcpkg-registry.yml is the only workflow in this repo that computes SHA512; release.yml and release-template.yml build/test/publish but do not write portfile SHAs, so no changes were needed there. on-release-sync-registry.yml is a thin caller that inherits the new step automatically. Implementation notes: - New step runs between 'Download release archive and compute SHA512' (id: sha) and 'Update portfile.cmake with new SHA512 and REF', so a mismatch fails the run before any portfile mutation - Downloads to a file (not pipe) so curl's --fail exit code is not masked by sha512sum producing the empty-input hash on fetch error - curl uses --retry 3 --retry-delay 2 for transient network blips - Runtime cost ~1-2s for a kcenon archive Part of #674.
Add pre-flight verify-archive job to on-release-sync-registry.yml that independently re-downloads the release tarball and computes SHA512 before delegating to the reusable sync-vcpkg-registry workflow in common_system. The sync job now declares 'needs: verify-archive' so a fetch failure or unreachable tag short-circuits the entire run before any portfile commit reaches kcenon/vcpkg-registry. File-based hashing is required: piping curl into sha512sum masks fetch failures because SHA512 of empty input is the fixed constant cf83e1357eefb8bdf..., so a 404 still produces a valid-looking digest. The download uses curl -fsSL --retry 3 to a mktemp file and exits 1 with ::error:: if the fetch fails or the computed digest is empty. This closes the detection gap surfaced by microsoft/vcpkg#51511 and kcenon/vcpkg-registry#87, matching the pattern merged into common_system via PR #676. Closes #691
Describe the pull request
What does your PR fix?
Adds a new port:
kcenon-common-system— a header-only C++20 foundation library providingResult<T>pattern, common interfaces, and utility helpers used by the kcenon ecosystem.Which triplets are supported/not supported? Have you updated the CI baseline?
Supports all triplets except UWP/Xbox (
!(uwp | xbox)). The library is header-only so platform impact is minimal.Does your PR follow the maintainer guide?
Yes.
If you have added/updated a port: Have you run
./vcpkg x-add-version --alland committed the result?Versions metadata (
versions/baseline.json,versions/k-/kcenon-common-system.json) added by hand because vcpkg is not installed in the submission environment. Please flag if the format needs adjustment.Upstream context
kcenon/vcpkg-registry) and has been validated end-to-end via a weekly consume-test workflow. This PR promotes the port upstream so consumers no longer need to configure the overlay.Tracking
Tracks: kcenon/common_system#653
EPIC: kcenon/common_system#646