Skip to content

[kcenon-common-system] new port#51511

Open
kcenon wants to merge 1 commit intomicrosoft:masterfrom
kcenon:kcenon-common-system-port
Open

[kcenon-common-system] new port#51511
kcenon wants to merge 1 commit intomicrosoft:masterfrom
kcenon:kcenon-common-system-port

Conversation

@kcenon
Copy link
Copy Markdown

@kcenon kcenon commented May 3, 2026

Describe the pull request

  • What does your PR fix?
    Adds a new port: kcenon-common-system — a header-only C++20 foundation library providing Result<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 --all and 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

  • Upstream repository: https://github.com/kcenon/common_system
  • Upstream license: BSD-3-Clause
  • Upstream version: 0.2.0
  • The port already exists in the kcenon-owned overlay registry (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.
  • This is the first kcenon system to be submitted upstream; future kcenon systems (thread, logger, etc.) will follow once this lands.

Tracking

Tracks: kcenon/common_system#653
EPIC: kcenon/common_system#646

@kcenon kcenon force-pushed the kcenon-common-system-port branch from e6d0f32 to f3bcf93 Compare May 3, 2026 01:27
kcenon added a commit to kcenon/vcpkg-registry that referenced this pull request May 3, 2026
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.
@kcenon kcenon force-pushed the kcenon-common-system-port branch from f3bcf93 to 8e1a35f Compare May 3, 2026 02:46
[kcenon-common-system] new port
@kcenon kcenon force-pushed the kcenon-common-system-port branch from 8e1a35f to 9fdc55b Compare May 3, 2026 03:34
@kcenon
Copy link
Copy Markdown
Author

kcenon commented May 3, 2026

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 9fdc55b0)

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 added a commit to kcenon/vcpkg-registry that referenced this pull request May 3, 2026
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.
@kcenon
Copy link
Copy Markdown
Author

kcenon commented May 3, 2026

@microsoft-github-policy-service agree

kcenon added a commit to kcenon/common_system that referenced this pull request May 3, 2026
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.
kcenon added a commit to kcenon/thread_system that referenced this pull request May 3, 2026
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant