Port Change Review Checklist
This document is a checklist for reviewing create port contributions and existing port updates.
📋 Source Acquisition
Repository Information
- [ ] Upstream hosting identified correctly (GitHub/GitLab/SourceForge/Other)
- [ ] Immutable reference used (commit hash or release tag, not branch)
- [ ] License is compatible and properly documented
- [ ] Build system correctly identified
Acquisition Implementation
- [ ] Appropriate helper function selected:
vcpkg_from_githubfor GitHub reposvcpkg_from_gitlabfor GitLab reposvcpkg_from_sourceforgefor SourceForge projectsvcpkg_download_distfilefor direct downloads
- [ ] SHA512 hash is correct and verified
- [ ] REF points to immutable commit/tag
- [ ] Vendored dependencies removed or documented
- [ ] Patches are minimal and well-documented
🚧 Port Update
For port updates only
Version Management
- [ ] Version properly incremented in
vcpkg.json - [ ] Appropriate version field type used (version/version-string/version-semver/version-date)
- [ ] REF updated to match new version or upstream branch
- [ ] SHA512 hash correctly calculated and updated
- [ ] Port-version reset to 0 (unless port-specific changes needed)
Change Assessment
- [ ] Upstream changelog reviewed for breaking changes
- [ ] API/ABI compatibility assessed
- [ ] New dependencies identified and added
- [ ] Removed dependencies cleaned up
- [ ] License changes documented (if any)
Regression Testing
- [ ] All previously working features still function
- [ ] No new build failures introduced
- [ ] Package structure remains consistent
- [ ] Integration tests pass (if applicable)
🔧 Build Configuration
Build System Implementation
- [ ] Correct build helpers used:
- CMake:
vcpkg_cmake_configure+vcpkg_cmake_install - Meson:
vcpkg_configure_meson+vcpkg_install_meson - Header-only: Manual file operations or subset CMake
- CMake:
- [ ] Features properly mapped using
vcpkg_check_features - [ ] Platform-specific logic is appropriate and well-guarded
Configuration Options
- [ ] Build options are minimal and necessary
- [ ] No hardcoded paths or inappropriate defaults
- [ ] Cross-platform compatibility considered
- [ ] Static/dynamic linkage handled correctly
📦 Post-Install
File Installation
- [ ]
vcpkg_cmake_config_fixupused with correctCONFIG_PATHandPACKAGE_NAME(Prevent case mismatch) - [ ]
vcpkg_fixup_pkgconfigif.pcfiles are detected. - [ ]
vcpkg_copy_toolsused for executables in bothbinandlibexec - [ ] Debug directory cleanup completed
- [ ]
vcpkg_install_copyrightproperly used. If"license": nullis used in the manifest, this can be skipped.
📄 Manifest (vcpkg.json)
Basic Information
- [ ] Port name follows conventions (lowercase, hyphens)
- [ ] Appropriate version field used:
versionfor semantic versioning. Expect name of the release/tag.version-semverwhen suffix is requiredversion-stringwhenversion-semvercan't be used because of arbitrary stringsversion-datefollows the date of the fetching commit.
- [ ] Homepage URL is synced with the
vcpkg_from_*functions - [ ]
licensefield matches upstream
Dependencies
- [ ] Build tool dependencies marked with
"host": true:vcpkg-cmakeandvcpkg-cmake-configfor CMake projectsvcpkg-tool-mesonfor Meson projects
- [ ] Optional features are properly defined
- [ ] Platform-specific dependencies handled correctly
🧪 Installation Testing
Basic Functionality
- [ ] Overlay installation succeeds:
vcpkg install --overlay-ports=ports <port-name> - [ ] Package directory structure is correct
- [ ] No build artifacts remain in package
- [ ] License file installed under
share/<port-name>/
Integration In Port Consumers
This part can be tested by installing the consumer port(the port that requires the changed port). If it doesn't exists, it should be done by the developers.
- CMake
find_package()works (if applicable) pkg-configintegration works (if applicable)- Tools can be executed in its location after the install finished
- Headers are properly installed
- Tested build/install on with major triplets, based on the port's
supportsfield
📚 Registry Maintenance
Version Management
- [ ] Port changes committed before version registration
- [ ] Registry formatting completed
- [ ] Version baseline updated correctly
- [ ] Git commit structure follows convention:
- Port commit:
[<port-name>] add v<version>or[<port-name>] update to v<version> - Version commit:
[<port-name>] update baseline and version files for v<version> - If multiple ports are updated, their changes should be commited following dependency order. For example, if both
cpuinfoandxnnpackhas changed,cpuinfochanges must commited first because the port is independenciesofxnnpack.
- Port commit:
File Organization
- [ ] Required port files(vcpkg.json, portfile.cmake) in correct location
- [ ] No hidden, extraneous files included
- [ ] Patch files properly named or commented in portfile.cmake
- [ ] Version files correctly generated and basline is updated