| name | vcpkg-export-consumer-debug |
| description | Debug iccDEV vcpkg, install/export, uninstall, and packaged consumer failures, especially Windows static CRT and path quoting regressions.
|
| allowed-tools | ["bash","read","grep","glob","shell(git:*)","shell(gh:*)"] |
vcpkg Export Consumer Debug
Use this skill when a review or workflow log mentions ci-vcpkg-ports,
ci-pr-action, examples/hello-iccdev, install manifests, uninstall, or
packaged CMake consumers.
Port Pin Check
For source refreshes without an upstream version bump, update the port as
version#port-version: increment ports/iccdev/vcpkg.json port-version, and
refresh ports/iccdev/portfile.cmake REF plus SHA512 together. CI should
use local source mode (VCPKG_ICCDEV_SOURCE and VCPKG_KEEP_ENV_VARS) so it
tests the checked-out branch, not the GitHub archive fallback.
Staleness Check
- Compare the tested ref with the current PR head:
gh pr view <PR> --repo InternationalColorConsortium/iccDEV \
--json headRefOid,headRefName,baseRefName,statusCheckRollup
git rev-parse HEAD
- If the review SHA is not current, do not discard the finding. Re-check the
current head for the exact source pattern or failing workflow path.
- Treat the review as still actionable when the same source pattern remains
present on the current head.
Common Windows Failures
Static vcpkg Consumer Uses the Wrong CRT
Signal:
MT_StaticRelease from Icc*2-static.lib conflicts with MD_DynamicRelease
LNK1169
Cause: the x64-windows-static packaged libraries were built with /MT, but
the consumer executable used the default /MD runtime.
Fix: when configuring the packaged Windows static consumer, pass the matching
runtime explicitly:
cmake -S "examples\hello-iccdev" -B $exampleBuild `
-G "Visual Studio 17 2022" `
-A x64 `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" `
-DVCPKG_MANIFEST_MODE=OFF `
-DVCPKG_TARGET_TRIPLET=x64-windows-static `
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
Source Uninstall Breaks on CMake Path Spaces
Signal:
cmake --build ... --target uninstall --config Release
C:/Program Files/CMake/bin/cmake.exe is split at the space
Cause: generated uninstall scripts used unquoted @CMAKE_COMMAND@.
Fix:
execute_process(
COMMAND "@CMAKE_COMMAND@" -E remove "$ENV{DESTDIR}${file}"
)
Validation
Run local checks before pushing:
git diff --check -- \
Build/Cmake/RefIccMAXUninstall.cmake.in \
.github/workflows/ci-vcpkg-ports.yml \
.github/skills/vcpkg-export-consumer-debug/SKILL.md
python3 -c "import yaml; yaml.safe_load(open('.github/workflows/ci-vcpkg-ports.yml')); print('YAML parse OK')"
actionlint -no-color .github/workflows/ci-vcpkg-ports.yml
file Build/Cmake/RefIccMAXUninstall.cmake.in .github/skills/vcpkg-export-consumer-debug/SKILL.md
Final proof for these failures requires a GitHub-hosted Windows runner. Monitor
the source install/uninstall job and the packaged hello-iccdev consumer job
after pushing.
References
../../workflows/ci-vcpkg-ports.yml
../../../Build/Cmake/RefIccMAXUninstall.cmake.in
../../../examples/hello-iccdev/CMakeLists.txt
../../../ports/iccdev/portfile.cmake