-
Notifications
You must be signed in to change notification settings - Fork 6.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[vcpkg] Add initial versioning documentation (#15565)
* [vcpkg] Improve efficiency and tests of versioning * [vcpkg] Add initial versioning documentation and rename x-default-baseline to builtin-baseline * [vcpkg] Enable metrics for builtin-baseline & overrides * [vcpkg] Address PR comments * [vcpkg] Add support for syntax in version>= * [vcpkg] Remove port-version from dependency syntax * [vcpkg] Address CR comment * [vcpkg] Minor docs fixup
- Loading branch information
Showing
28 changed files
with
676 additions
and
312 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
# Versioning | ||
|
||
**This feature is experimental and requires `--feature-flags=versions`** | ||
|
||
Versioning allows you to deterministically control the precise revisions of dependencies used by | ||
your project from within your manifest file. | ||
|
||
## Version schemes | ||
|
||
### Schemes | ||
Versions in vcpkg come in four primary flavors: | ||
|
||
#### version | ||
A dot-separated sequence of numbers (1.2.3.4) | ||
|
||
#### version-date | ||
A date (2021-01-01.5) | ||
|
||
#### version-semver | ||
A Semantic Version 2.0 (2.1.0-rc2) | ||
|
||
See https://semver.org/ for a full specification. | ||
|
||
#### version-string | ||
An exact, incomparable version (Vista) | ||
|
||
### Port Versions | ||
Each version additionally has a "port-version" which is a nonnegative integer. When rendered as text, the | ||
port version (if nonzero) is added as a suffix to the primary version text separated by a hash (#). | ||
Port-versions are sorted lexographically after the primary version text, for example: | ||
|
||
1.0.0 < 1.0.0#1 < 1.0.1 < 1.0.1#5 < 2.0.0 | ||
|
||
## Constraints | ||
|
||
Manifests can place three kinds of constraints upon the versions used: | ||
|
||
### builtin-baseline | ||
The baseline references a commit within the vcpkg repository that | ||
establishes a minimum version on every dependency in the graph. If | ||
no other constraints are specified (directly or transitively), | ||
then the version from the baseline of the top level manifest will | ||
be used. | ||
|
||
You can get the current commit of your vcpkg instance either by adding an empty `"builtin-baseline"` field, installing, and examining the error message or by running `git rev-parse HEAD` in the root of the vcpkg instance. | ||
|
||
Baselines provide stability and ease of development for top-level manifest files. They are not considered from ports consumed as a dependency. If a minimum version constraint is required during transitive version resolution, the port should use `version>=`. | ||
|
||
### version>= | ||
Within the "dependencies" field, each dependency can have a | ||
minimum constraint listed. These minimum constraints will be used | ||
when transitively depending upon this library. A minimum | ||
port-version can additionally be specified with a '#' suffix. | ||
|
||
This constraint must refer to an existing, valid version (including port-version). | ||
|
||
### overrides | ||
When used as the top-level manifest (such as when running `vcpkg | ||
install` in the directory), overrides allow a manifest to | ||
short-circuit dependency resolution and specify exactly the | ||
version to use. These can be used to handle version conflicts, | ||
such as with `version-string` dependencies. | ||
|
||
Overrides are not considered from ports consumed as a dependency. | ||
|
||
## Example top-level manifest: | ||
```json | ||
{ | ||
"name": "example", | ||
"version": "1.0", | ||
"builtin-baseline": "a14a6bcb27287e3ec138dba1b948a0cdbc337a3a", | ||
"dependencies": [ | ||
{ "name": "zlib", "version>=": "1.2.11#8" }, | ||
"rapidjson" | ||
], | ||
"overrides": [ | ||
{ "name": "rapidjson", "version": "2020-09-14" } | ||
] | ||
} | ||
``` | ||
See also the [manifest documentation](manifests.md) for more syntax information. | ||
|
||
## Original Specification | ||
|
||
See also the [original specification](https://github.com/vicroms/vcpkg/blob/versioning-spec/docs/specifications/versioning.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
scripts/testing/version-files/without-default-baseline-2/port_versions/z-/zlib.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ | ||
"versions": [ | ||
{ | ||
"git-tree": "7bb2b2f3783303a4dd41163553fe4cc103dc9262", | ||
"version-string": "1.2.11", | ||
"port-version": 9 | ||
}, | ||
{ | ||
"git-tree": "4927735fa9baca564ebddf6e6880de344b20d7a8", | ||
"version-string": "1.2.11", | ||
"port-version": 8 | ||
} | ||
] | ||
} |
7 changes: 7 additions & 0 deletions
7
scripts/testing/version-files/without-default-baseline-2/vcpkg.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"name": "without-default-baseline-test-2", | ||
"version-string": "0", | ||
"dependencies": [ | ||
"zlib" | ||
] | ||
} |
Oops, something went wrong.