-
Notifications
You must be signed in to change notification settings - Fork 338
Description
Currently, I repeatedly find ports that have been renamed. Sometimes version 0 is specified, but sometimes the version that was current at the time of renaming is specified. And sometimes a port is renamed, but the old version keep for reasons. The second causes you to think you have version X installed and only the dependencies have changed, but in reality you have version Y installed. // Edit: Found more variants
Examples:
- Version
0:beast - Version during renaming port:
gz-utils3(will currently insteall version 4.1.1 instead of 3.x) - Intended copy:
kf5archivevskf6archive(I think this was done so there is still a version using Qt 5, during the other is using Qt 6) - Version
alias:catch - Version
replaced:libp7-baical - Version
deprecated:lodepng-c
I think it would be advantageous to have an alias rule. Either you adjust the vcpkg.json or a vcpkg-alias.json (so):
{
"name": "beast",
"alias": [
"name": "boost-beast",
"remains-until": "2026-12-27"
]
}This would also have other advantages:
- The CI could, for example, go through monthly before creating a tag and use
remains-untilto see if the package can be removed (a bot could create the commits for this, similar to dependabot). - During a port update, the CI could check whether an alias package is still included, for example, if a dependency was renamed between the start of implementation and the merge and is therefore overlooked (e.g, currently 9 ports still depends on
pthreadinstead ofpthreads). - When someone runs
vcpkg install <port>, it would be better to make the user aware of the renaming (or reject it and only allow upgrades, if necessary). During the upgrade, vcpkg could also automatically remove the old package and switch to the new one. - In case
aliasis defined, no or only dependency can be defined - Third-party tools such as Repology could detect this better (so this doesn't happens).
During checking packages with VCPKG_POLICY_EMPTY_PACKAGE in their portfile: Another variant would be to define a package-type, which could be port, alias, meta-package (boost), ...