mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-28 05:49:02 +08:00
4f8fb510ba
* [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
312 lines
8.4 KiB
JSON
312 lines
8.4 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"id": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
|
|
"title": "Vcpkg manifest",
|
|
"description": "Vcpkg manifest file. See https://github.com/microsoft/vcpkg/blob/master/docs/specifications/manifests.md.",
|
|
"definitions": {
|
|
"identifier": {
|
|
"description": "Identifiers used for feature names.",
|
|
"allOf": [
|
|
{
|
|
"description": "Identifier are lowercase with digits and dashes.",
|
|
"type": "string",
|
|
"pattern": "[a-z0-9]+(-[a-z0-9]+)*"
|
|
},
|
|
{
|
|
"not": {
|
|
"description": "Identifiers must not be a Windows filesystem or vcpkg reserved name.",
|
|
"type": "string",
|
|
"pattern": "^prn|aux|nul|con|lpt[1-9]|com[1-9]|core|default$"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"version-text": {
|
|
"type": "string",
|
|
"pattern": "[^#]+"
|
|
},
|
|
"has-schemed-version": {
|
|
"type": "object",
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"version-string": {
|
|
"description": "Text used to identify an arbitrary version",
|
|
"type": "string",
|
|
"pattern": "^[^#]+$"
|
|
}
|
|
},
|
|
"required": [
|
|
"version-string"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"version": {
|
|
"description": "A relaxed version string (1.2.3.4...)",
|
|
"type": "string",
|
|
"pattern": "^\\d+(\\.\\d+)*$"
|
|
}
|
|
},
|
|
"required": [
|
|
"version"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"version-semver": {
|
|
"description": "A semantic version string. See https://semver.org/",
|
|
"type": "string",
|
|
"pattern": "^\\d+\\.\\d+\\.\\d+([+-].+)?$"
|
|
}
|
|
},
|
|
"required": [
|
|
"version-semver"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"version-date": {
|
|
"description": "A date version string (e.g. 2020-01-20)",
|
|
"type": "string",
|
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}(\\.\\d+)*$"
|
|
}
|
|
},
|
|
"required": [
|
|
"version-date"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"port-version": {
|
|
"description": "A non-negative integer indicating the port revision. If this field doesn't exist, it's assumed to be `0`.",
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"default": 0
|
|
},
|
|
"package-name": {
|
|
"description": "Name of a package.",
|
|
"allOf": [
|
|
{
|
|
"description": "Package name must be a dot-separated list of valid identifiers",
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*(\\.[a-z0-9]+(-[a-z0-9]+)*)*$"
|
|
},
|
|
{
|
|
"not": {
|
|
"description": "Identifiers must not be a Windows filesystem or vcpkg reserved name.",
|
|
"type": "string",
|
|
"pattern": "(^|\\.)(prn|aux|nul|con|lpt[1-9]|com[1-9]|core|default)(\\.|$)"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"description-field": {
|
|
"description": "A string or array of strings containing the description of a package or feature.",
|
|
"oneOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"dependency-object": {
|
|
"description": "Expanded form of a dependency with explicit features and platform.",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"$ref": "#/definitions/package-name"
|
|
},
|
|
"features": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/identifier"
|
|
}
|
|
},
|
|
"default-features": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"platform": {
|
|
"$ref": "#/definitions/platform-expression"
|
|
},
|
|
"version>=": {
|
|
"description": "Minimum required version",
|
|
"type": "string",
|
|
"pattern": "^[^#]+(#\\d+)?$"
|
|
}
|
|
},
|
|
"patternProperties": {
|
|
"^\\$": {}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"dependency": {
|
|
"description": "A dependency fetchable by Vcpkg.",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/definitions/package-name"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/dependency-object"
|
|
}
|
|
]
|
|
},
|
|
"override": {
|
|
"description": "A version override.",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"$ref": "#/definitions/identifier"
|
|
},
|
|
"version": {
|
|
"$ref": "#/definitions/version-text"
|
|
},
|
|
"port-version": {
|
|
"$ref": "#/definitions/port-version"
|
|
}
|
|
},
|
|
"patternProperties": {
|
|
"^\\$": {}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"version"
|
|
]
|
|
},
|
|
"platform-expression": {
|
|
"description": "A specification of a set of platforms. See https://github.com/microsoft/vcpkg/blob/master/docs/specifications/manifests.md#definitions.",
|
|
"type": "string"
|
|
},
|
|
"feature": {
|
|
"description": "A package feature that can be activated by consumers.",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"$ref": "#/definitions/identifier"
|
|
},
|
|
"description": {
|
|
"$ref": "#/definitions/description-field"
|
|
},
|
|
"dependencies": {
|
|
"description": "Dependencies used by this feature.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/dependency"
|
|
}
|
|
}
|
|
},
|
|
"patternProperties": {
|
|
"^\\$": {}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"description"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"type": "object",
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"name": {
|
|
"description": "The name of the top-level package",
|
|
"$ref": "#/definitions/package-name"
|
|
},
|
|
"version-string": {},
|
|
"version": {},
|
|
"version-date": {},
|
|
"version-semver": {},
|
|
"port-version": {
|
|
"$ref": "#/definitions/port-version"
|
|
},
|
|
"maintainers": {
|
|
"description": "An array of strings which contain the authors of a package",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": {
|
|
"$ref": "#/definitions/description-field"
|
|
},
|
|
"homepage": {
|
|
"description": "A url which points to the homepage of a package.",
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"documentation": {
|
|
"description": "A url which points to the documentation of a package.",
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"license": {
|
|
"description": "An SPDX license expression at version 3.9.",
|
|
"type": "string"
|
|
},
|
|
"builtin-baseline": {
|
|
"description": "A vcpkg repository commit for version control.",
|
|
"type": "string"
|
|
},
|
|
"dependencies": {
|
|
"description": "Dependencies that are always required.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/dependency"
|
|
}
|
|
},
|
|
"overrides": {
|
|
"description": "Version overrides for dependencies.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/override"
|
|
}
|
|
},
|
|
"dev-dependencies": {
|
|
"description": "Dependencies only required for developers (testing and the like).",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/dependency"
|
|
}
|
|
},
|
|
"features": {
|
|
"description": "An array of features supported by the package",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/feature"
|
|
}
|
|
},
|
|
"default-features": {
|
|
"description": "Features enabled by default with the package.",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/identifier"
|
|
}
|
|
},
|
|
"supports": {
|
|
"$ref": "#/definitions/platform-expression"
|
|
}
|
|
},
|
|
"patternProperties": {
|
|
"^\\$": {}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"$ref": "#/definitions/has-schemed-version"
|
|
}
|
|
]
|
|
}
|