spack.schema package¶
This module contains jsonschema files for all of Spack’s YAML formats.
Submodules¶
spack.schema.bootstrap module¶
Schema for bootstrap.yaml configuration file.
- spack.schema.bootstrap.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'bootstrap': {'properties': {'enable': {'type': 'boolean'}, 'root': {'type': 'string'}, 'sources': {'items': {'additionalProperties': False, 'properties': {'metadata': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'metadata'], 'type': 'object'}, 'type': 'array'}, 'trusted': {'patternProperties': {'\\w[\\w-]*': {'type': 'boolean'}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack bootstrap configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.buildcache_spec module¶
Schema for a buildcache spec.yaml file
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack buildcache specfile schema",
"type": "object",
"additionalProperties": False,
"properties": {
"buildinfo": {
"type": "object",
"additionalProperties": False,
"required": ["relative_prefix"],
"properties": {
"relative_prefix": {"type": "string"},
"relative_rpaths": {"type": "boolean"},
},
},
"spec": {
"type": "object",
"additionalProperties": True,
"items": spack.schema.spec.properties,
},
"binary_cache_checksum": {
"type": "object",
"properties": {"hash_algorithm": {"type": "string"}, "hash": {"type": "string"}},
},
"buildcache_layout_version": {"type": "number"},
},
}
spack.schema.cdash module¶
Schema for cdash.yaml configuration file.
#: Properties for inclusion in other schemas
properties = {
"cdash": {
"type": "object",
"additionalProperties": False,
# "required": ["build-group", "url", "project", "site"],
"required": ["build-group"],
"patternProperties": {
r"build-group": {"type": "string"},
r"url": {"type": "string"},
r"project": {"type": "string"},
r"site": {"type": "string"},
},
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack cdash configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.cdash.properties = {'cdash': {'additionalProperties': False, 'patternProperties': {'build-group': {'type': 'string'}, 'project': {'type': 'string'}, 'site': {'type': 'string'}, 'url': {'type': 'string'}}, 'required': ['build-group'], 'type': 'object'}}¶
Properties for inclusion in other schemas
- spack.schema.cdash.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'cdash': {'additionalProperties': False, 'patternProperties': {'build-group': {'type': 'string'}, 'project': {'type': 'string'}, 'site': {'type': 'string'}, 'url': {'type': 'string'}}, 'required': ['build-group'], 'type': 'object'}}, 'title': 'Spack cdash configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.ci module¶
Schema for gitlab-ci.yaml configuration file.
import spack.schema.gitlab_ci
# Schema for script fields
# List of lists and/or strings
# This is similar to what is allowed in
# the gitlab schema
script_schema = {
"type": "array",
"items": {"anyOf": [{"type": "string"}, {"type": "array", "items": {"type": "string"}}]},
}
# Schema for CI image
image_schema = {
"oneOf": [
{"type": "string"},
{
"type": "object",
"properties": {
"name": {"type": "string"},
"entrypoint": {"type": "array", "items": {"type": "string"}},
},
},
]
}
# Additional attributes are allow
# and will be forwarded directly to the
# CI target YAML for each job.
attributes_schema = {
"type": "object",
"additionalProperties": True,
"properties": {
"image": image_schema,
"tags": {"type": "array", "items": {"type": "string"}},
"variables": {
"type": "object",
"patternProperties": {r"[\w\d\-_\.]+": {"type": "string"}},
},
"before_script": script_schema,
"script": script_schema,
"after_script": script_schema,
},
}
submapping_schema = {
"type": "object",
"additionalProperties": False,
"required": ["submapping"],
"properties": {
"match_behavior": {"type": "string", "enum": ["first", "merge"], "default": "first"},
"submapping": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": False,
"required": ["match"],
"properties": {
"match": {"type": "array", "items": {"type": "string"}},
"build-job": attributes_schema,
"build-job-remove": attributes_schema,
},
},
},
},
}
named_attributes_schema = {
"oneOf": [
{
"type": "object",
"additionalProperties": False,
"properties": {"noop-job": attributes_schema, "noop-job-remove": attributes_schema},
},
{
"type": "object",
"additionalProperties": False,
"properties": {"build-job": attributes_schema, "build-job-remove": attributes_schema},
},
{
"type": "object",
"additionalProperties": False,
"properties": {"copy-job": attributes_schema, "copy-job-remove": attributes_schema},
},
{
"type": "object",
"additionalProperties": False,
"properties": {
"reindex-job": attributes_schema,
"reindex-job-remove": attributes_schema,
},
},
{
"type": "object",
"additionalProperties": False,
"properties": {
"signing-job": attributes_schema,
"signing-job-remove": attributes_schema,
},
},
{
"type": "object",
"additionalProperties": False,
"properties": {
"cleanup-job": attributes_schema,
"cleanup-job-remove": attributes_schema,
},
},
{
"type": "object",
"additionalProperties": False,
"properties": {"any-job": attributes_schema, "any-job-remove": attributes_schema},
},
]
}
pipeline_gen_schema = {
"type": "array",
"items": {"oneOf": [submapping_schema, named_attributes_schema]},
}
core_shared_properties = union_dicts(
{
"pipeline-gen": pipeline_gen_schema,
"bootstrap": {
"type": "array",
"items": {
"anyOf": [
{"type": "string"},
{
"type": "object",
"additionalProperties": False,
"required": ["name"],
"properties": {
"name": {"type": "string"},
"compiler-agnostic": {"type": "boolean", "default": False},
},
},
]
},
},
"rebuild-index": {"type": "boolean"},
"broken-specs-url": {"type": "string"},
"broken-tests-packages": {"type": "array", "items": {"type": "string"}},
"target": {"type": "string", "enum": ["gitlab"], "default": "gitlab"},
}
)
ci_properties = {
"anyOf": [
{
"type": "object",
"additionalProperties": False,
# "required": ["mappings"],
"properties": union_dicts(
core_shared_properties, {"enable-artifacts-buildcache": {"type": "boolean"}}
),
},
{
"type": "object",
"additionalProperties": False,
# "required": ["mappings"],
"properties": union_dicts(
core_shared_properties, {"temporary-storage-url-prefix": {"type": "string"}}
),
},
]
}
#: Properties for inclusion in other schemas
properties = {
"ci": {
"oneOf": [
ci_properties,
# Allow legacy format under `ci` for `config update ci`
spack.schema.gitlab_ci.gitlab_ci_properties,
]
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack CI configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
def update(data):
import llnl.util.tty as tty
import spack.ci
import spack.environment as ev
# Warn if deprecated section is still in the environment
ci_env = ev.active_environment()
if ci_env:
env_config = ev.config_dict(ci_env.manifest)
if "gitlab-ci" in env_config:
tty.die("Error: `gitlab-ci` section detected with `ci`, these are not compatible")
# Detect if the ci section is using the new pipeline-gen
# If it is, assume it has already been converted
return spack.ci.translate_deprecated_config(data)
- spack.schema.ci.properties = {'ci': {'oneOf': [{'anyOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'pipeline-gen': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'required': ['submapping'], 'properties': {'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'submapping': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}}}}, {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'noop-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'noop-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'copy-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'copy-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'reindex-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'reindex-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'signing-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'signing-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'cleanup-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'cleanup-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'any-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'any-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}]}]}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'target': {'type': 'string', 'enum': ['gitlab'], 'default': 'gitlab'}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'pipeline-gen': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'required': ['submapping'], 'properties': {'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'submapping': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}}}}, {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'noop-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'noop-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'copy-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'copy-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'reindex-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'reindex-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'signing-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'signing-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'cleanup-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'cleanup-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'any-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'any-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}]}]}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'target': {'type': 'string', 'enum': ['gitlab'], 'default': 'gitlab'}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}, {'anyOf': [{'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}]}}¶
Properties for inclusion in other schemas
- spack.schema.ci.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'ci': {'oneOf': [{'anyOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'pipeline-gen': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'required': ['submapping'], 'properties': {'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'submapping': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}}}}, {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'noop-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'noop-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'copy-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'copy-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'reindex-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'reindex-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'signing-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'signing-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'cleanup-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'cleanup-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'any-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'any-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}]}]}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'target': {'type': 'string', 'enum': ['gitlab'], 'default': 'gitlab'}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'pipeline-gen': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'required': ['submapping'], 'properties': {'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'submapping': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}}}}, {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'noop-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'noop-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'copy-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'copy-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'reindex-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'reindex-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'signing-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'signing-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'cleanup-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'cleanup-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'any-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'any-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}]}]}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'target': {'type': 'string', 'enum': ['gitlab'], 'default': 'gitlab'}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}, {'anyOf': [{'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}]}}, 'title': 'Spack CI configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.compilers module¶
Schema for compilers.yaml configuration file.
#: Properties for inclusion in other schemas
properties = {
"compilers": {
"type": "array",
"items": [
{
"type": "object",
"additionalProperties": False,
"properties": {
"compiler": {
"type": "object",
"additionalProperties": False,
"required": ["paths", "spec", "modules", "operating_system"],
"properties": {
"paths": {
"type": "object",
"required": ["cc", "cxx", "f77", "fc"],
"additionalProperties": False,
"properties": {
"cc": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"cxx": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"f77": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"fc": {"anyOf": [{"type": "string"}, {"type": "null"}]},
},
},
"flags": {
"type": "object",
"additionalProperties": False,
"properties": {
"cflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"cxxflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"fflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"cppflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"ldflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"ldlibs": {"anyOf": [{"type": "string"}, {"type": "null"}]},
},
},
"spec": {"type": "string"},
"operating_system": {"type": "string"},
"target": {"type": "string"},
"alias": {"anyOf": [{"type": "string"}, {"type": "null"}]},
"modules": {
"anyOf": [{"type": "string"}, {"type": "null"}, {"type": "array"}]
},
"implicit_rpaths": {
"anyOf": [
{"type": "array", "items": {"type": "string"}},
{"type": "boolean"},
]
},
"environment": spack.schema.environment.definition,
"extra_rpaths": {
"type": "array",
"default": [],
"items": {"type": "string"},
},
},
}
},
}
],
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack compiler configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.compilers.properties = {'compilers': {'items': [{'type': 'object', 'additionalProperties': False, 'properties': {'compiler': {'type': 'object', 'additionalProperties': False, 'required': ['paths', 'spec', 'modules', 'operating_system'], 'properties': {'paths': {'type': 'object', 'required': ['cc', 'cxx', 'f77', 'fc'], 'additionalProperties': False, 'properties': {'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'flags': {'type': 'object', 'additionalProperties': False, 'properties': {'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'spec': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'target': {'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'implicit_rpaths': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'boolean'}]}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}, 'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}], 'type': 'array'}}¶
Properties for inclusion in other schemas
- spack.schema.compilers.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'compilers': {'items': [{'type': 'object', 'additionalProperties': False, 'properties': {'compiler': {'type': 'object', 'additionalProperties': False, 'required': ['paths', 'spec', 'modules', 'operating_system'], 'properties': {'paths': {'type': 'object', 'required': ['cc', 'cxx', 'f77', 'fc'], 'additionalProperties': False, 'properties': {'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'flags': {'type': 'object', 'additionalProperties': False, 'properties': {'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'spec': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'target': {'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'implicit_rpaths': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'boolean'}]}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}, 'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}], 'type': 'array'}}, 'title': 'Spack compiler configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.concretizer module¶
Schema for concretizer.yaml configuration file.
"concretizer": {
"type": "object",
"additionalProperties": False,
"properties": {
"reuse": {
"oneOf": [{"type": "boolean"}, {"type": "string", "enum": ["dependencies"]}]
},
"enable_node_namespace": {"type": "boolean"},
"targets": {
"type": "object",
"properties": {
"host_compatible": {"type": "boolean"},
"granularity": {"type": "string", "enum": ["generic", "microarchitectures"]},
},
},
"unify": {
"oneOf": [{"type": "boolean"}, {"type": "string", "enum": ["when_possible"]}]
},
},
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack concretizer configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.concretizer.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'concretizer': {'additionalProperties': False, 'properties': {'enable_node_namespace': {'type': 'boolean'}, 'reuse': {'oneOf': [{'type': 'boolean'}, {'type': 'string', 'enum': ['dependencies']}]}, 'targets': {'properties': {'granularity': {'enum': ['generic', 'microarchitectures'], 'type': 'string'}, 'host_compatible': {'type': 'boolean'}}, 'type': 'object'}, 'unify': {'oneOf': [{'type': 'boolean'}, {'type': 'string', 'enum': ['when_possible']}]}}, 'type': 'object'}}, 'title': 'Spack concretizer configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.config module¶
Schema for config.yaml configuration file.
import spack.schema.projections
#: Properties for inclusion in other schemas
properties = {
"config": {
"type": "object",
"default": {},
"properties": {
"flags": {
"type": "object",
"properties": {
"keep_werror": {"type": "string", "enum": ["all", "specific", "none"]}
},
},
"shared_linking": {
"anyOf": [
{"type": "string", "enum": ["rpath", "runpath"]},
{
"type": "object",
"properties": {
"type": {"type": "string", "enum": ["rpath", "runpath"]},
"bind": {"type": "boolean"},
},
},
]
},
"install_tree": {
"anyOf": [
{
"type": "object",
"properties": union_dicts(
{"root": {"type": "string"}},
{
"padded_length": {
"oneOf": [
{"type": "integer", "minimum": 0},
{"type": "boolean"},
]
}
},
spack.schema.projections.properties,
),
},
{"type": "string"}, # deprecated
]
},
"install_hash_length": {"type": "integer", "minimum": 1},
"install_path_scheme": {"type": "string"}, # deprecated
"build_stage": {
"oneOf": [{"type": "string"}, {"type": "array", "items": {"type": "string"}}]
},
"stage_name": {"type": "string"},
"test_stage": {"type": "string"},
"extensions": {"type": "array", "items": {"type": "string"}},
"template_dirs": {"type": "array", "items": {"type": "string"}},
"license_dir": {"type": "string"},
"source_cache": {"type": "string"},
"misc_cache": {"type": "string"},
"environments_root": {"type": "string"},
"connect_timeout": {"type": "integer", "minimum": 0},
"verify_ssl": {"type": "boolean"},
"suppress_gpg_warnings": {"type": "boolean"},
"install_missing_compilers": {"type": "boolean"},
"debug": {"type": "boolean"},
"checksum": {"type": "boolean"},
"deprecated": {"type": "boolean"},
"locks": {"type": "boolean"},
"dirty": {"type": "boolean"},
"build_language": {"type": "string"},
"build_jobs": {"type": "integer", "minimum": 1},
"ccache": {"type": "boolean"},
"concretizer": {"type": "string", "enum": ["original", "clingo"]},
"db_lock_timeout": {"type": "integer", "minimum": 1},
"package_lock_timeout": {
"anyOf": [{"type": "integer", "minimum": 1}, {"type": "null"}]
},
"allow_sgid": {"type": "boolean"},
"binary_index_root": {"type": "string"},
"url_fetch_method": {"type": "string", "enum": ["urllib", "curl"]},
"additional_external_search_paths": {"type": "array", "items": {"type": "string"}},
"binary_index_ttl": {"type": "integer", "minimum": 0},
},
"deprecatedProperties": {
"properties": ["module_roots"],
"message": "config:module_roots has been replaced by "
"modules:[module set]:roots and is ignored",
"error": False,
},
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack core configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
def update(data):
"""Update the data in place to remove deprecated properties.
Args:
data (dict): dictionary to be updated
Returns:
True if data was changed, False otherwise
"""
# currently deprecated properties are
# install_tree: <string>
# install_path_scheme: <string>
# updated: install_tree: {root: <string>,
# projections: <projections_dict}
# root replaces install_tree, projections replace install_path_scheme
changed = False
install_tree = data.get("install_tree", None)
if isinstance(install_tree, str):
# deprecated short-form install tree
# add value as `root` in updated install_tree
data["install_tree"] = {"root": install_tree}
changed = True
install_path_scheme = data.pop("install_path_scheme", None)
if install_path_scheme:
projections_data = {"projections": {"all": install_path_scheme}}
# update projections with install_scheme
# whether install_tree was updated or not
# we merge the yaml to ensure we don't invalidate other projections
update_data = data.get("install_tree", {})
update_data = spack.config.merge_yaml(update_data, projections_data)
data["install_tree"] = update_data
changed = True
use_curl = data.pop("use_curl", None)
if use_curl is not None:
data["url_fetch_method"] = "curl" if use_curl else "urllib"
changed = True
shared_linking = data.get("shared_linking", None)
if isinstance(shared_linking, str):
# deprecated short-form shared_linking: rpath/runpath
# add value as `type` in updated shared_linking
data["shared_linking"] = {"type": shared_linking, "bind": False}
changed = True
return changed
- spack.schema.config.properties = {'config': {'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:module_roots has been replaced by modules:[module set]:roots and is ignored', 'properties': ['module_roots']}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'binary_index_ttl': {'minimum': 0, 'type': 'integer'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'dirty': {'type': 'boolean'}, 'environments_root': {'type': 'string'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'properties': {'keep_werror': {'enum': ['all', 'specific', 'none'], 'type': 'string'}}, 'type': 'object'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_tree': {'anyOf': [{'type': 'object', 'properties': {'root': {'type': 'string'}, 'padded_length': {'oneOf': [{'type': 'integer', 'minimum': 0}, {'type': 'boolean'}]}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}}}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'shared_linking': {'anyOf': [{'type': 'string', 'enum': ['rpath', 'runpath']}, {'type': 'object', 'properties': {'type': {'type': 'string', 'enum': ['rpath', 'runpath']}, 'bind': {'type': 'boolean'}}}]}, 'source_cache': {'type': 'string'}, 'stage_name': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'type': 'object'}}¶
Properties for inclusion in other schemas
- spack.schema.config.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'config': {'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:module_roots has been replaced by modules:[module set]:roots and is ignored', 'properties': ['module_roots']}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'binary_index_ttl': {'minimum': 0, 'type': 'integer'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'dirty': {'type': 'boolean'}, 'environments_root': {'type': 'string'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'properties': {'keep_werror': {'enum': ['all', 'specific', 'none'], 'type': 'string'}}, 'type': 'object'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_tree': {'anyOf': [{'type': 'object', 'properties': {'root': {'type': 'string'}, 'padded_length': {'oneOf': [{'type': 'integer', 'minimum': 0}, {'type': 'boolean'}]}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}}}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'shared_linking': {'anyOf': [{'type': 'string', 'enum': ['rpath', 'runpath']}, {'type': 'object', 'properties': {'type': {'type': 'string', 'enum': ['rpath', 'runpath']}, 'bind': {'type': 'boolean'}}}]}, 'source_cache': {'type': 'string'}, 'stage_name': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'type': 'object'}}, 'title': 'Spack core configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.container module¶
Schema for the ‘container’ subsection of Spack environments.
- spack.schema.container.container_schema = {'additionalProperties': False, 'deprecatedProperties': {'error': False, 'message': 'container:extra_instructions has been deprecated and will be removed in Spack v0.21. Set container:template appropriately to use custom Jinja2 templates instead.', 'properties': ['extra_instructions']}, 'properties': {'depfile': {'default': False, 'type': 'boolean'}, 'docker': {'additionalProperties': False, 'default': {}, 'type': 'object'}, 'extra_instructions': {'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'type': 'object'}, 'format': {'enum': ['docker', 'singularity'], 'type': 'string'}, 'images': {'anyOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'os': {'type': 'string'}, 'spack': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additional_properties': False, 'properties': {'url': {'type': 'string'}, 'ref': {'type': 'string'}, 'resolve_sha': {'type': 'boolean', 'default': False}, 'verify': {'type': 'boolean', 'default': False}}}]}}, 'required': ['os', 'spack']}, {'type': 'object', 'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'required': ['build', 'final']}]}, 'labels': {'type': 'object'}, 'os_packages': {'additionalProperties': False, 'properties': {'build': {'items': {'type': 'string'}, 'type': 'array'}, 'command': {'enum': ['apt', 'yum', 'zypper', 'apk', 'yum_amazon'], 'type': 'string'}, 'final': {'items': {'type': 'string'}, 'type': 'array'}, 'update': {'type': 'boolean'}}, 'type': 'object'}, 'singularity': {'additionalProperties': False, 'default': {}, 'properties': {'help': {'type': 'string'}, 'runscript': {'type': 'string'}, 'startscript': {'type': 'string'}, 'test': {'type': 'string'}}, 'type': 'object'}, 'strip': {'default': True, 'type': 'boolean'}, 'template': {'default': None, 'type': 'string'}}, 'type': 'object'}¶
Schema for the container attribute included in Spack environments
spack.schema.cray_manifest module¶
Schema for Cray descriptive manifest: this describes a set of installed packages on the system and also specifies dependency relationships between them (so this provides more information than external entries in packages configuration).
This does not specify a configuration - it is an input format that is consumed and transformed into Spack DB records.
spack.schema.database_index module¶
Schema for database index.json file
"installed": {"type": "boolean"},
"ref_count": {"type": "integer", "minimum": 0},
"explicit": {"type": "boolean"},
"installation_time": {"type": "number"},
},
}
},
},
"version": {"type": "string"},
},
}
},
}
- spack.schema.database_index.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'database': {'additionalProperties': False, 'properties': {'installs': {'patternProperties': {'^[\\w\\d]{32}$': {'properties': {'explicit': {'type': 'boolean'}, 'installation_time': {'type': 'number'}, 'installed': {'type': 'boolean'}, 'path': {'oneOf': [{'type': 'string'}, {'type': 'null'}]}, 'ref_count': {'minimum': 0, 'type': 'integer'}, 'spec': {'spec': {'additionalProperties': False, 'properties': {'_meta': {'properties': {'version': {'type': 'number'}}, 'type': 'object'}, 'nodes': {'items': {'additionalProperties': False, 'properties': {'arch': {'additionalProperties': False, 'properties': {'platform': {}, 'platform_os': {}, 'target': {'oneOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name', 'vendor', 'features', 'generation', 'parents'], 'properties': {'name': {'type': 'string'}, 'vendor': {'type': 'string'}, 'features': {'type': 'array', 'items': {'type': 'string'}}, 'generation': {'type': 'integer'}, 'parents': {'type': 'array', 'items': {'type': 'string'}}}}]}}, 'type': 'object'}, 'build_hash': {'type': 'string'}, 'build_spec': {'additionalProperties': False, 'properties': {'hash': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'hash'], 'type': 'object'}, 'compiler': {'additionalProperties': False, 'properties': {'name': {'type': 'string'}, 'version': {'type': 'string'}}, 'type': 'object'}, 'dependencies': {'patternProperties': {'\\w[\\w-]*': {'properties': {'hash': {'type': 'string'}, 'type': {'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'develop': {'anyOf': [{'type': 'boolean'}, {'type': 'string'}]}, 'full_hash': {'type': 'string'}, 'hash': {'type': 'string'}, 'name': {'type': 'string'}, 'namespace': {'type': 'string'}, 'package_hash': {'type': 'string'}, 'parameters': {'additionalProperties': True, 'properties': {'cflags': {'items': {'type': 'string'}, 'type': 'array'}, 'cppflags': {'items': {'type': 'string'}, 'type': 'array'}, 'cxxflags': {'items': {'type': 'string'}, 'type': 'array'}, 'fflags': {'items': {'type': 'string'}, 'type': 'array'}, 'ldflags': {'items': {'type': 'string'}, 'type': 'array'}, 'ldlib': {'items': {'type': 'string'}, 'type': 'array'}, 'patches': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['cflags', 'cppflags', 'cxxflags', 'fflags', 'ldflags', 'ldlibs'], 'type': 'object'}, 'patches': {'items': {}, 'type': 'array'}, 'version': {'oneOf': [{'type': 'string'}, {'type': 'number'}]}}, 'required': ['version', 'arch', 'compiler', 'namespace', 'parameters'], 'type': 'object'}, 'type': 'array'}}, 'required': ['_meta', 'nodes'], 'type': 'object'}}}, 'type': 'object'}}, 'type': 'object'}, 'version': {'type': 'string'}}, 'required': ['installs', 'version'], 'type': 'object'}}, 'required': ['database'], 'title': 'Spack spec schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.env module¶
Schema for env.yaml configuration file.
},
{"type": "string"},
{"type": "null"},
]
},
}
projections_scheme = spack.schema.projections.properties["projections"]
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack environment file schema",
"type": "object",
"additionalProperties": False,
"patternProperties": {
"^env|spack$": {
"type": "object",
"default": {},
"additionalProperties": False,
"properties": union_dicts(
# Include deprecated "gitlab-ci" section
spack.schema.gitlab_ci.properties,
# merged configuration scope schemas
spack.schema.merged.properties,
# extra environment schema properties
{
"include": {"type": "array", "default": [], "items": {"type": "string"}},
"develop": {
"type": "object",
"default": {},
"additionalProperties": False,
"patternProperties": {
r"\w[\w-]*": {
"type": "object",
"additionalProperties": False,
"properties": {
"spec": {"type": "string"},
"path": {"type": "string"},
},
}
},
},
"definitions": {
"type": "array",
"default": [],
"items": {
"type": "object",
"properties": {"when": {"type": "string"}},
"patternProperties": {r"^(?!when$)\w*": spec_list_schema},
},
},
"specs": spec_list_schema,
"view": {
"anyOf": [
{"type": "boolean"},
{"type": "string"},
{
"type": "object",
"patternProperties": {
r"\w+": {
"required": ["root"],
"additionalProperties": False,
"properties": {
"root": {"type": "string"},
"link": {
"type": "string",
"pattern": "(roots|all|run)",
},
"link_type": {"type": "string"},
"select": {
"type": "array",
"items": {"type": "string"},
},
"exclude": {
"type": "array",
"items": {"type": "string"},
},
"projections": projections_scheme,
},
}
},
},
]
},
},
),
}
},
}
def update(data):
"""Update the data in place to remove deprecated properties.
Args:
data (dict): dictionary to be updated
Returns:
True if data was changed, False otherwise
"""
import spack.ci
if "gitlab-ci" in data:
data["ci"] = data.pop("gitlab-ci")
if "ci" in data:
return spack.ci.translate_deprecated_config(data["ci"])
# There are not currently any deprecated attributes in this section
# that have not been removed
return False
- spack.schema.env.keys = ('spack', 'env')¶
legal first keys in the schema
spack.schema.environment module¶
Schema for environment modifications. Meant for inclusion in other schemas.
spack.schema.gitlab_ci module¶
Schema for gitlab-ci.yaml configuration file.
image_schema = {
"oneOf": [
{"type": "string"},
{
"type": "object",
"properties": {
"name": {"type": "string"},
"entrypoint": {"type": "array", "items": {"type": "string"}},
},
},
]
}
runner_attributes_schema_items = {
"image": image_schema,
"tags": {"type": "array", "items": {"type": "string"}},
"variables": {"type": "object", "patternProperties": {r"[\w\d\-_\.]+": {"type": "string"}}},
"before_script": {"type": "array", "items": {"type": "string"}},
"script": {"type": "array", "items": {"type": "string"}},
"after_script": {"type": "array", "items": {"type": "string"}},
}
runner_selector_schema = {
"type": "object",
"additionalProperties": False,
"required": ["tags"],
"properties": runner_attributes_schema_items,
}
remove_attributes_schema = {
"type": "object",
"additionalProperties": False,
"required": ["tags"],
"properties": {"tags": {"type": "array", "items": {"type": "string"}}},
}
core_shared_properties = union_dicts(
runner_attributes_schema_items,
{
"bootstrap": {
"type": "array",
"items": {
"anyOf": [
{"type": "string"},
{
"type": "object",
"additionalProperties": False,
"required": ["name"],
"properties": {
"name": {"type": "string"},
"compiler-agnostic": {"type": "boolean", "default": False},
},
},
]
},
},
"match_behavior": {"type": "string", "enum": ["first", "merge"], "default": "first"},
"mappings": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": False,
"required": ["match"],
"properties": {
"match": {"type": "array", "items": {"type": "string"}},
"remove-attributes": remove_attributes_schema,
"runner-attributes": runner_selector_schema,
},
},
},
"service-job-attributes": runner_selector_schema,
"signing-job-attributes": runner_selector_schema,
"rebuild-index": {"type": "boolean"},
"broken-specs-url": {"type": "string"},
"broken-tests-packages": {"type": "array", "items": {"type": "string"}},
},
)
gitlab_ci_properties = {
"anyOf": [
{
"type": "object",
"additionalProperties": False,
"required": ["mappings"],
"properties": union_dicts(
core_shared_properties, {"enable-artifacts-buildcache": {"type": "boolean"}}
),
},
{
"type": "object",
"additionalProperties": False,
"required": ["mappings"],
"properties": union_dicts(
core_shared_properties, {"temporary-storage-url-prefix": {"type": "string"}}
),
},
]
}
#: Properties for inclusion in other schemas
properties = {"gitlab-ci": gitlab_ci_properties}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack gitlab-ci configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.gitlab_ci.properties = {'gitlab-ci': {'anyOf': [{'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}}¶
Properties for inclusion in other schemas
- spack.schema.gitlab_ci.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'gitlab-ci': {'anyOf': [{'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}}, 'title': 'Spack gitlab-ci configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.merged module¶
Schema for configuration merged into one file.
spack.schema.upstreams.properties,
)
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack merged configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.merged.properties = {'bootstrap': {'properties': {'enable': {'type': 'boolean'}, 'root': {'type': 'string'}, 'sources': {'items': {'additionalProperties': False, 'properties': {'metadata': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'metadata'], 'type': 'object'}, 'type': 'array'}, 'trusted': {'patternProperties': {'\\w[\\w-]*': {'type': 'boolean'}}, 'type': 'object'}}, 'type': 'object'}, 'cdash': {'additionalProperties': False, 'patternProperties': {'build-group': {'type': 'string'}, 'project': {'type': 'string'}, 'site': {'type': 'string'}, 'url': {'type': 'string'}}, 'required': ['build-group'], 'type': 'object'}, 'ci': {'oneOf': [{'anyOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'pipeline-gen': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'required': ['submapping'], 'properties': {'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'submapping': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}}}}, {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'noop-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'noop-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'copy-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'copy-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'reindex-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'reindex-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'signing-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'signing-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'cleanup-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'cleanup-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'any-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'any-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}]}]}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'target': {'type': 'string', 'enum': ['gitlab'], 'default': 'gitlab'}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'pipeline-gen': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'required': ['submapping'], 'properties': {'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'submapping': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}}}}, {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'noop-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'noop-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'copy-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'copy-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'reindex-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'reindex-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'signing-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'signing-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'cleanup-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'cleanup-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'any-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'any-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}]}]}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'target': {'type': 'string', 'enum': ['gitlab'], 'default': 'gitlab'}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}, {'anyOf': [{'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}]}, 'compilers': {'items': [{'type': 'object', 'additionalProperties': False, 'properties': {'compiler': {'type': 'object', 'additionalProperties': False, 'required': ['paths', 'spec', 'modules', 'operating_system'], 'properties': {'paths': {'type': 'object', 'required': ['cc', 'cxx', 'f77', 'fc'], 'additionalProperties': False, 'properties': {'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'flags': {'type': 'object', 'additionalProperties': False, 'properties': {'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'spec': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'target': {'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'implicit_rpaths': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'boolean'}]}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}, 'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}], 'type': 'array'}, 'concretizer': {'additionalProperties': False, 'properties': {'enable_node_namespace': {'type': 'boolean'}, 'reuse': {'oneOf': [{'type': 'boolean'}, {'type': 'string', 'enum': ['dependencies']}]}, 'targets': {'properties': {'granularity': {'enum': ['generic', 'microarchitectures'], 'type': 'string'}, 'host_compatible': {'type': 'boolean'}}, 'type': 'object'}, 'unify': {'oneOf': [{'type': 'boolean'}, {'type': 'string', 'enum': ['when_possible']}]}}, 'type': 'object'}, 'config': {'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:module_roots has been replaced by modules:[module set]:roots and is ignored', 'properties': ['module_roots']}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'binary_index_ttl': {'minimum': 0, 'type': 'integer'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'dirty': {'type': 'boolean'}, 'environments_root': {'type': 'string'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'properties': {'keep_werror': {'enum': ['all', 'specific', 'none'], 'type': 'string'}}, 'type': 'object'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_tree': {'anyOf': [{'type': 'object', 'properties': {'root': {'type': 'string'}, 'padded_length': {'oneOf': [{'type': 'integer', 'minimum': 0}, {'type': 'boolean'}]}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}}}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'shared_linking': {'anyOf': [{'type': 'string', 'enum': ['rpath', 'runpath']}, {'type': 'object', 'properties': {'type': {'type': 'string', 'enum': ['rpath', 'runpath']}, 'bind': {'type': 'boolean'}}}]}, 'source_cache': {'type': 'string'}, 'stage_name': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'type': 'object'}, 'container': {'additionalProperties': False, 'deprecatedProperties': {'error': False, 'message': 'container:extra_instructions has been deprecated and will be removed in Spack v0.21. Set container:template appropriately to use custom Jinja2 templates instead.', 'properties': ['extra_instructions']}, 'properties': {'depfile': {'default': False, 'type': 'boolean'}, 'docker': {'additionalProperties': False, 'default': {}, 'type': 'object'}, 'extra_instructions': {'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'type': 'object'}, 'format': {'enum': ['docker', 'singularity'], 'type': 'string'}, 'images': {'anyOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'os': {'type': 'string'}, 'spack': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additional_properties': False, 'properties': {'url': {'type': 'string'}, 'ref': {'type': 'string'}, 'resolve_sha': {'type': 'boolean', 'default': False}, 'verify': {'type': 'boolean', 'default': False}}}]}}, 'required': ['os', 'spack']}, {'type': 'object', 'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'required': ['build', 'final']}]}, 'labels': {'type': 'object'}, 'os_packages': {'additionalProperties': False, 'properties': {'build': {'items': {'type': 'string'}, 'type': 'array'}, 'command': {'enum': ['apt', 'yum', 'zypper', 'apk', 'yum_amazon'], 'type': 'string'}, 'final': {'items': {'type': 'string'}, 'type': 'array'}, 'update': {'type': 'boolean'}}, 'type': 'object'}, 'singularity': {'additionalProperties': False, 'default': {}, 'properties': {'help': {'type': 'string'}, 'runscript': {'type': 'string'}, 'startscript': {'type': 'string'}, 'test': {'type': 'string'}}, 'type': 'object'}, 'strip': {'default': True, 'type': 'boolean'}, 'template': {'default': None, 'type': 'string'}}, 'type': 'object'}, 'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'object', 'required': ['fetch', 'push'], 'properties': {'fetch': {'type': ['string', 'object']}, 'push': {'type': ['string', 'object']}}}]}}, 'type': 'object'}, 'modules': {'additionalProperties': False, 'patternProperties': {'^(?!prefix_inspections$)\\w[\\w-]*$': {'additionalProperties': False, 'default': {}, 'properties': {'arch_folder': {'type': 'boolean'}, 'enable': {'default': [], 'items': {'enum': ['tcl', 'lmod'], 'type': 'string'}, 'type': 'array'}, 'lmod': {'allOf': [{'type': 'object', 'default': {}, 'allOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'minimum': 0, 'default': 7}, 'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'include': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_implicits': {'type': 'boolean', 'default': False}, 'defaults': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}, 'all': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}, '^[\\^@%+~]': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}]}, {'type': 'object', 'properties': {'core_compilers': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'hierarchy': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'core_specs': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'filter_hierarchy_specs': {'type': 'object', 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}]}, 'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'roots': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}, 'tcl': {'allOf': [{'type': 'object', 'default': {}, 'allOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'minimum': 0, 'default': 7}, 'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'include': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_implicits': {'type': 'boolean', 'default': False}, 'defaults': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}, 'all': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}, '^[\\^@%+~]': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}]}, {}]}, 'use_view': {'anyOf': [{'type': 'string'}, {'type': 'boolean'}]}}, 'type': 'object'}}, 'properties': {'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'packages': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'externals': {'items': {'additionalProperties': True, 'properties': {'extra_attributes': {'type': 'object'}, 'modules': {'items': {'type': 'string'}, 'type': 'array'}, 'prefix': {'type': 'string'}, 'spec': {'type': 'string'}}, 'required': ['spec'], 'type': 'object'}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'providers': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'require': {'oneOf': [{'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'one_of': {'type': 'array', 'items': {'type': 'string'}}, 'any_of': {'type': 'array', 'items': {'type': 'string'}}, 'spec': {'type': 'string'}, 'message': {'type': 'string'}, 'when': {'type': 'string'}}}, {'type': 'string'}]}}, {'type': 'string'}]}, 'target': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'version': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'upstreams': {'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'install_tree': {'type': 'string'}, 'modules': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}}¶
Properties for inclusion in other schemas
- spack.schema.merged.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'bootstrap': {'properties': {'enable': {'type': 'boolean'}, 'root': {'type': 'string'}, 'sources': {'items': {'additionalProperties': False, 'properties': {'metadata': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'metadata'], 'type': 'object'}, 'type': 'array'}, 'trusted': {'patternProperties': {'\\w[\\w-]*': {'type': 'boolean'}}, 'type': 'object'}}, 'type': 'object'}, 'cdash': {'additionalProperties': False, 'patternProperties': {'build-group': {'type': 'string'}, 'project': {'type': 'string'}, 'site': {'type': 'string'}, 'url': {'type': 'string'}}, 'required': ['build-group'], 'type': 'object'}, 'ci': {'oneOf': [{'anyOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'pipeline-gen': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'required': ['submapping'], 'properties': {'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'submapping': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}}}}, {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'noop-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'noop-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'copy-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'copy-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'reindex-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'reindex-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'signing-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'signing-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'cleanup-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'cleanup-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'any-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'any-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}]}]}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'target': {'type': 'string', 'enum': ['gitlab'], 'default': 'gitlab'}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'pipeline-gen': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'required': ['submapping'], 'properties': {'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'submapping': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}}}}, {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'noop-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'noop-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'build-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'build-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'copy-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'copy-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'reindex-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'reindex-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'signing-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'signing-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'cleanup-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'cleanup-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}, {'type': 'object', 'additionalProperties': False, 'properties': {'any-job': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}, 'any-job-remove': {'type': 'object', 'additionalProperties': True, 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'after_script': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}}}}}]}]}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'target': {'type': 'string', 'enum': ['gitlab'], 'default': 'gitlab'}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}, {'anyOf': [{'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'enable-artifacts-buildcache': {'type': 'boolean'}}}, {'type': 'object', 'additionalProperties': False, 'required': ['mappings'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}, 'bootstrap': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'compiler-agnostic': {'type': 'boolean', 'default': False}}}]}}, 'match_behavior': {'type': 'string', 'enum': ['first', 'merge'], 'default': 'first'}, 'mappings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': False, 'required': ['match'], 'properties': {'match': {'type': 'array', 'items': {'type': 'string'}}, 'remove-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}}}, 'runner-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}}}}, 'service-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'signing-job-attributes': {'type': 'object', 'additionalProperties': False, 'required': ['tags'], 'properties': {'image': {'oneOf': [{'type': 'string'}, {'type': 'object', 'properties': {'name': {'type': 'string'}, 'entrypoint': {'type': 'array', 'items': {'type': 'string'}}}}]}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'variables': {'type': 'object', 'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}}, 'before_script': {'type': 'array', 'items': {'type': 'string'}}, 'script': {'type': 'array', 'items': {'type': 'string'}}, 'after_script': {'type': 'array', 'items': {'type': 'string'}}}}, 'rebuild-index': {'type': 'boolean'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'type': 'array', 'items': {'type': 'string'}}, 'temporary-storage-url-prefix': {'type': 'string'}}}]}]}, 'compilers': {'items': [{'type': 'object', 'additionalProperties': False, 'properties': {'compiler': {'type': 'object', 'additionalProperties': False, 'required': ['paths', 'spec', 'modules', 'operating_system'], 'properties': {'paths': {'type': 'object', 'required': ['cc', 'cxx', 'f77', 'fc'], 'additionalProperties': False, 'properties': {'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'flags': {'type': 'object', 'additionalProperties': False, 'properties': {'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'spec': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'target': {'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'implicit_rpaths': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'boolean'}]}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}, 'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}], 'type': 'array'}, 'concretizer': {'additionalProperties': False, 'properties': {'enable_node_namespace': {'type': 'boolean'}, 'reuse': {'oneOf': [{'type': 'boolean'}, {'type': 'string', 'enum': ['dependencies']}]}, 'targets': {'properties': {'granularity': {'enum': ['generic', 'microarchitectures'], 'type': 'string'}, 'host_compatible': {'type': 'boolean'}}, 'type': 'object'}, 'unify': {'oneOf': [{'type': 'boolean'}, {'type': 'string', 'enum': ['when_possible']}]}}, 'type': 'object'}, 'config': {'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:module_roots has been replaced by modules:[module set]:roots and is ignored', 'properties': ['module_roots']}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'binary_index_ttl': {'minimum': 0, 'type': 'integer'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'dirty': {'type': 'boolean'}, 'environments_root': {'type': 'string'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'properties': {'keep_werror': {'enum': ['all', 'specific', 'none'], 'type': 'string'}}, 'type': 'object'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_tree': {'anyOf': [{'type': 'object', 'properties': {'root': {'type': 'string'}, 'padded_length': {'oneOf': [{'type': 'integer', 'minimum': 0}, {'type': 'boolean'}]}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}}}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'shared_linking': {'anyOf': [{'type': 'string', 'enum': ['rpath', 'runpath']}, {'type': 'object', 'properties': {'type': {'type': 'string', 'enum': ['rpath', 'runpath']}, 'bind': {'type': 'boolean'}}}]}, 'source_cache': {'type': 'string'}, 'stage_name': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'type': 'object'}, 'container': {'additionalProperties': False, 'deprecatedProperties': {'error': False, 'message': 'container:extra_instructions has been deprecated and will be removed in Spack v0.21. Set container:template appropriately to use custom Jinja2 templates instead.', 'properties': ['extra_instructions']}, 'properties': {'depfile': {'default': False, 'type': 'boolean'}, 'docker': {'additionalProperties': False, 'default': {}, 'type': 'object'}, 'extra_instructions': {'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'type': 'object'}, 'format': {'enum': ['docker', 'singularity'], 'type': 'string'}, 'images': {'anyOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'os': {'type': 'string'}, 'spack': {'anyOf': [{'type': 'string'}, {'type': 'object', 'additional_properties': False, 'properties': {'url': {'type': 'string'}, 'ref': {'type': 'string'}, 'resolve_sha': {'type': 'boolean', 'default': False}, 'verify': {'type': 'boolean', 'default': False}}}]}}, 'required': ['os', 'spack']}, {'type': 'object', 'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'required': ['build', 'final']}]}, 'labels': {'type': 'object'}, 'os_packages': {'additionalProperties': False, 'properties': {'build': {'items': {'type': 'string'}, 'type': 'array'}, 'command': {'enum': ['apt', 'yum', 'zypper', 'apk', 'yum_amazon'], 'type': 'string'}, 'final': {'items': {'type': 'string'}, 'type': 'array'}, 'update': {'type': 'boolean'}}, 'type': 'object'}, 'singularity': {'additionalProperties': False, 'default': {}, 'properties': {'help': {'type': 'string'}, 'runscript': {'type': 'string'}, 'startscript': {'type': 'string'}, 'test': {'type': 'string'}}, 'type': 'object'}, 'strip': {'default': True, 'type': 'boolean'}, 'template': {'default': None, 'type': 'string'}}, 'type': 'object'}, 'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'object', 'required': ['fetch', 'push'], 'properties': {'fetch': {'type': ['string', 'object']}, 'push': {'type': ['string', 'object']}}}]}}, 'type': 'object'}, 'modules': {'additionalProperties': False, 'patternProperties': {'^(?!prefix_inspections$)\\w[\\w-]*$': {'additionalProperties': False, 'default': {}, 'properties': {'arch_folder': {'type': 'boolean'}, 'enable': {'default': [], 'items': {'enum': ['tcl', 'lmod'], 'type': 'string'}, 'type': 'array'}, 'lmod': {'allOf': [{'type': 'object', 'default': {}, 'allOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'minimum': 0, 'default': 7}, 'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'include': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_implicits': {'type': 'boolean', 'default': False}, 'defaults': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}, 'all': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}, '^[\\^@%+~]': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}]}, {'type': 'object', 'properties': {'core_compilers': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'hierarchy': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'core_specs': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'filter_hierarchy_specs': {'type': 'object', 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}]}, 'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'roots': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}, 'tcl': {'allOf': [{'type': 'object', 'default': {}, 'allOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'minimum': 0, 'default': 7}, 'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'include': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_implicits': {'type': 'boolean', 'default': False}, 'defaults': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}, 'all': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}, '^[\\^@%+~]': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}]}, {}]}, 'use_view': {'anyOf': [{'type': 'string'}, {'type': 'boolean'}]}}, 'type': 'object'}}, 'properties': {'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'packages': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'externals': {'items': {'additionalProperties': True, 'properties': {'extra_attributes': {'type': 'object'}, 'modules': {'items': {'type': 'string'}, 'type': 'array'}, 'prefix': {'type': 'string'}, 'spec': {'type': 'string'}}, 'required': ['spec'], 'type': 'object'}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'providers': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'require': {'oneOf': [{'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'one_of': {'type': 'array', 'items': {'type': 'string'}}, 'any_of': {'type': 'array', 'items': {'type': 'string'}}, 'spec': {'type': 'string'}, 'message': {'type': 'string'}, 'when': {'type': 'string'}}}, {'type': 'string'}]}}, {'type': 'string'}]}, 'target': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'version': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'upstreams': {'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'install_tree': {'type': 'string'}, 'modules': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack merged configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.mirrors module¶
Schema for mirrors.yaml configuration file.
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
"""Schema for mirrors.yaml configuration file.
.. literalinclude:: _spack_root/lib/spack/spack/schema/mirrors.py
"""
#: Properties for inclusion in other schemas
properties = {
"mirrors": {
"type": "object",
"default": {},
"additionalProperties": False,
"patternProperties": {
r"\w[\w-]*": {
"anyOf": [
{"type": "string"},
{
"type": "object",
"required": ["fetch", "push"],
"properties": {
"fetch": {"type": ["string", "object"]},
"push": {"type": ["string", "object"]},
},
},
]
}
},
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack mirror configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.mirrors.properties = {'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'object', 'required': ['fetch', 'push'], 'properties': {'fetch': {'type': ['string', 'object']}, 'push': {'type': ['string', 'object']}}}]}}, 'type': 'object'}}¶
Properties for inclusion in other schemas
- spack.schema.mirrors.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'object', 'required': ['fetch', 'push'], 'properties': {'fetch': {'type': ['string', 'object']}, 'push': {'type': ['string', 'object']}}}]}}, 'type': 'object'}}, 'title': 'Spack mirror configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.modules module¶
Schema for modules.yaml configuration file.
#: Matches a spec or a multi-valued variant but not another
#: valid keyword.
#:
#: THIS NEEDS TO BE UPDATED FOR EVERY NEW KEYWORD THAT
#: IS ADDED IMMEDIATELY BELOW THE MODULE TYPE ATTRIBUTE
spec_regex = (
r"(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|"
r"whitelist|blacklist|" # DEPRECATED: remove in 0.20.
r"include|exclude|" # use these more inclusive/consistent options
r"projections|naming_scheme|core_compilers|all)(^\w[\w-]*)"
)
#: Matches a valid name for a module set
valid_module_set_name = r"^(?!prefix_inspections$)\w[\w-]*$"
#: Matches an anonymous spec, i.e. a spec without a root name
anonymous_spec_regex = r"^[\^@%+~]"
#: Definitions for parts of module schema
array_of_strings = {"type": "array", "default": [], "items": {"type": "string"}}
dictionary_of_strings = {"type": "object", "patternProperties": {r"\w[\w-]*": {"type": "string"}}}
dependency_selection = {"type": "string", "enum": ["none", "direct", "all"]}
module_file_configuration = {
"type": "object",
"default": {},
"additionalProperties": False,
"properties": {
"filter": {
"type": "object",
"default": {},
"additionalProperties": False,
"properties": {
# DEPRECATED: remove in 0.20.
"environment_blacklist": {
"type": "array",
"default": [],
"items": {"type": "string"},
},
# use exclude_env_vars instead
"exclude_env_vars": {"type": "array", "default": [], "items": {"type": "string"}},
},
},
"template": {"type": "string"},
"autoload": dependency_selection,
"prerequisites": dependency_selection,
"conflict": array_of_strings,
"load": array_of_strings,
"suffixes": {
"type": "object",
"validate_spec": True,
"patternProperties": {r"\w[\w-]*": {"type": "string"}}, # key
},
"environment": spack.schema.environment.definition,
},
}
projections_scheme = spack.schema.projections.properties["projections"]
module_type_configuration = {
"type": "object",
"default": {},
"allOf": [
{
"properties": {
"verbose": {"type": "boolean", "default": False},
"hash_length": {"type": "integer", "minimum": 0, "default": 7},
# DEPRECATED: remove in 0.20.
"whitelist": array_of_strings,
"blacklist": array_of_strings,
"blacklist_implicits": {"type": "boolean", "default": False},
# whitelist/blacklist have been replaced with include/exclude
"include": array_of_strings,
"exclude": array_of_strings,
"exclude_implicits": {"type": "boolean", "default": False},
"defaults": array_of_strings,
"naming_scheme": {"type": "string"}, # Can we be more specific here?
"projections": projections_scheme,
"all": module_file_configuration,
}
},
{
"validate_spec": True,
"patternProperties": {
spec_regex: module_file_configuration,
anonymous_spec_regex: module_file_configuration,
},
},
],
}
module_config_properties = {
"use_view": {"anyOf": [{"type": "string"}, {"type": "boolean"}]},
"arch_folder": {"type": "boolean"},
"roots": {
"type": "object",
"properties": {"tcl": {"type": "string"}, "lmod": {"type": "string"}},
},
"enable": {
"type": "array",
"default": [],
"items": {"type": "string", "enum": ["tcl", "lmod"]},
},
"lmod": {
"allOf": [
# Base configuration
module_type_configuration,
{
"type": "object",
"properties": {
"core_compilers": array_of_strings,
"hierarchy": array_of_strings,
"core_specs": array_of_strings,
"filter_hierarchy_specs": {
"type": "object",
"patternProperties": {spec_regex: array_of_strings},
},
},
}, # Specific lmod extensions
]
},
"tcl": {
"allOf": [
# Base configuration
module_type_configuration,
{}, # Specific tcl extensions
]
},
"prefix_inspections": {
"type": "object",
"additionalProperties": False,
"patternProperties": {
# prefix-relative path to be inspected for existence
r"^[\w-]*": array_of_strings
},
},
}
# Properties for inclusion into other schemas (requires definitions)
properties = {
"modules": {
"type": "object",
"additionalProperties": False,
"properties": {
"prefix_inspections": {
"type": "object",
"additionalProperties": False,
"patternProperties": {
# prefix-relative path to be inspected for existence
r"^[\w-]*": array_of_strings
},
}
},
"patternProperties": {
valid_module_set_name: {
"type": "object",
"default": {},
"additionalProperties": False,
"properties": module_config_properties,
}
},
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack module file configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.modules.anonymous_spec_regex = '^[\\^@%+~]'¶
Matches an anonymous spec, i.e. a spec without a root name
- spack.schema.modules.array_of_strings = {'default': [], 'items': {'type': 'string'}, 'type': 'array'}¶
Definitions for parts of module schema
- spack.schema.modules.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'modules': {'additionalProperties': False, 'patternProperties': {'^(?!prefix_inspections$)\\w[\\w-]*$': {'additionalProperties': False, 'default': {}, 'properties': {'arch_folder': {'type': 'boolean'}, 'enable': {'default': [], 'items': {'enum': ['tcl', 'lmod'], 'type': 'string'}, 'type': 'array'}, 'lmod': {'allOf': [{'type': 'object', 'default': {}, 'allOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'minimum': 0, 'default': 7}, 'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'include': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_implicits': {'type': 'boolean', 'default': False}, 'defaults': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}, 'all': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}, '^[\\^@%+~]': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}]}, {'type': 'object', 'properties': {'core_compilers': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'hierarchy': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'core_specs': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'filter_hierarchy_specs': {'type': 'object', 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}]}, 'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'roots': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}, 'tcl': {'allOf': [{'type': 'object', 'default': {}, 'allOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'minimum': 0, 'default': 7}, 'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'include': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_implicits': {'type': 'boolean', 'default': False}, 'defaults': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'projections': {'type': 'object', 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}, 'all': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}, '^[\\^@%+~]': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'filter': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'exclude_env_vars': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'template': {'type': 'string'}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'environment': {'type': 'object', 'default': {}, 'additionalProperties': False, 'properties': {'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'remove_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}}}}}]}, {}]}, 'use_view': {'anyOf': [{'type': 'string'}, {'type': 'boolean'}]}}, 'type': 'object'}}, 'properties': {'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack module file configuration file schema', 'type': 'object'}¶
Full schema with metadata
- spack.schema.modules.spec_regex = '(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|whitelist|blacklist|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)'¶
Matches a spec or a multi-valued variant but not another valid keyword.
THIS NEEDS TO BE UPDATED FOR EVERY NEW KEYWORD THAT IS ADDED IMMEDIATELY BELOW THE MODULE TYPE ATTRIBUTE
- spack.schema.modules.valid_module_set_name = '^(?!prefix_inspections$)\\w[\\w-]*$'¶
Matches a valid name for a module set
spack.schema.packages module¶
Schema for packages.yaml configuration files.
properties = {
"packages": {
"type": "object",
"default": {},
"additionalProperties": False,
"patternProperties": {
r"\w[\w-]*": { # package name
"type": "object",
"default": {},
"additionalProperties": False,
"properties": {
"require": {
"oneOf": [
# 'require' can be a list of requirement_groups.
# each requirement group is a list of one or more
# specs. Either at least one or exactly one spec
# in the group must be satisfied (depending on
# whether you use "any_of" or "one_of",
# repectively)
{
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"additionalProperties": False,
"properties": {
"one_of": {
"type": "array",
"items": {"type": "string"},
},
"any_of": {
"type": "array",
"items": {"type": "string"},
},
"spec": {"type": "string"},
"message": {"type": "string"},
"when": {"type": "string"},
},
},
{"type": "string"},
]
},
},
# Shorthand for a single requirement group with
# one member
{"type": "string"},
]
},
"version": {
"type": "array",
"default": [],
# version strings (type should be string, number is still possible
# but deprecated. this is to avoid issues with e.g. 3.10 -> 3.1)
"items": {"anyOf": [{"type": "string"}, {"type": "number"}]},
},
"target": {
"type": "array",
"default": [],
# target names
"items": {"type": "string"},
},
"compiler": {
"type": "array",
"default": [],
"items": {"type": "string"},
}, # compiler specs
"buildable": {"type": "boolean", "default": True},
"permissions": {
"type": "object",
"additionalProperties": False,
"properties": {
"read": {"type": "string", "enum": ["user", "group", "world"]},
"write": {"type": "string", "enum": ["user", "group", "world"]},
"group": {"type": "string"},
},
},
# If 'get_full_repo' is promoted to a Package-level
# attribute, it could be useful to set it here
"package_attributes": {
"type": "object",
"additionalProperties": False,
"patternProperties": {r"\w+": {}},
},
"providers": {
"type": "object",
"default": {},
"additionalProperties": False,
"patternProperties": {
r"\w[\w-]*": {
"type": "array",
"default": [],
"items": {"type": "string"},
}
},
},
"variants": {
"oneOf": [
{"type": "string"},
{"type": "array", "items": {"type": "string"}},
]
},
"externals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"spec": {"type": "string"},
"prefix": {"type": "string"},
"modules": {"type": "array", "items": {"type": "string"}},
"extra_attributes": {"type": "object"},
},
"additionalProperties": True,
"required": ["spec"],
},
},
},
}
},
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack package configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
def update(data):
changed = False
for key in data:
version = data[key].get("version")
if not version or all(isinstance(v, str) for v in version):
continue
data[key]["version"] = [str(v) for v in version]
changed = True
return changed
- spack.schema.packages.properties = {'packages': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'externals': {'items': {'additionalProperties': True, 'properties': {'extra_attributes': {'type': 'object'}, 'modules': {'items': {'type': 'string'}, 'type': 'array'}, 'prefix': {'type': 'string'}, 'spec': {'type': 'string'}}, 'required': ['spec'], 'type': 'object'}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'providers': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'require': {'oneOf': [{'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'one_of': {'type': 'array', 'items': {'type': 'string'}}, 'any_of': {'type': 'array', 'items': {'type': 'string'}}, 'spec': {'type': 'string'}, 'message': {'type': 'string'}, 'when': {'type': 'string'}}}, {'type': 'string'}]}}, {'type': 'string'}]}, 'target': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'version': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}}¶
Properties for inclusion in other schemas
- spack.schema.packages.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'packages': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'externals': {'items': {'additionalProperties': True, 'properties': {'extra_attributes': {'type': 'object'}, 'modules': {'items': {'type': 'string'}, 'type': 'array'}, 'prefix': {'type': 'string'}, 'spec': {'type': 'string'}}, 'required': ['spec'], 'type': 'object'}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'providers': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'require': {'oneOf': [{'type': 'array', 'items': {'oneOf': [{'type': 'object', 'additionalProperties': False, 'properties': {'one_of': {'type': 'array', 'items': {'type': 'string'}}, 'any_of': {'type': 'array', 'items': {'type': 'string'}}, 'spec': {'type': 'string'}, 'message': {'type': 'string'}, 'when': {'type': 'string'}}}, {'type': 'string'}]}}, {'type': 'string'}]}, 'target': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'version': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack package configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.projections module¶
Schema for projections.yaml configuration file.
#: Properties for inclusion in other schemas
properties = {
"projections": {"type": "object", "patternProperties": {r"all|\w[\w-]*": {"type": "string"}}}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack view projection configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.projections.properties = {'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}}¶
Properties for inclusion in other schemas
- spack.schema.projections.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}}, 'title': 'Spack view projection configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.repos module¶
Schema for repos.yaml configuration file.
#: Properties for inclusion in other schemas
properties = {"repos": {"type": "array", "default": [], "items": {"type": "string"}}}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack repository configuration file schema",
"type": "object",
"additionalProperties": False,
"properties": properties,
}
- spack.schema.repos.properties = {'repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}¶
Properties for inclusion in other schemas
- spack.schema.repos.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Spack repository configuration file schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.spec module¶
Schema for a spec found in spec descriptor or database index.json files
TODO: This needs to be updated? Especially the hashes under properties.
target = {
"oneOf": [
{"type": "string"},
{
"type": "object",
"additionalProperties": False,
"required": ["name", "vendor", "features", "generation", "parents"],
"properties": {
"name": {"type": "string"},
"vendor": {"type": "string"},
"features": {"type": "array", "items": {"type": "string"}},
"generation": {"type": "integer"},
"parents": {"type": "array", "items": {"type": "string"}},
},
},
]
}
arch = {
"type": "object",
"additionalProperties": False,
"properties": {"platform": {}, "platform_os": {}, "target": target},
}
dependencies = {
"type": "object",
"patternProperties": {
r"\w[\w-]*": { # package name
"type": "object",
"properties": {
"hash": {"type": "string"},
"type": {"type": "array", "items": {"type": "string"}},
},
}
},
}
build_spec = {
"type": "object",
"additionalProperties": False,
"required": ["name", "hash"],
"properties": {"name": {"type": "string"}, "hash": {"type": "string"}},
}
#: Properties for inclusion in other schemas
properties = {
"spec": {
"type": "object",
"additionalProperties": False,
"required": ["_meta", "nodes"],
"properties": {
"_meta": {"type": "object", "properties": {"version": {"type": "number"}}},
"nodes": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": False,
"required": ["version", "arch", "compiler", "namespace", "parameters"],
"properties": {
"name": {"type": "string"},
"hash": {"type": "string"},
"package_hash": {"type": "string"},
# these hashes were used on some specs prior to 0.18
"full_hash": {"type": "string"},
"build_hash": {"type": "string"},
"version": {"oneOf": [{"type": "string"}, {"type": "number"}]},
"arch": arch,
"compiler": {
"type": "object",
"additionalProperties": False,
"properties": {
"name": {"type": "string"},
"version": {"type": "string"},
},
},
"develop": {"anyOf": [{"type": "boolean"}, {"type": "string"}]},
"namespace": {"type": "string"},
"parameters": {
"type": "object",
"required": [
"cflags",
"cppflags",
"cxxflags",
"fflags",
"ldflags",
"ldlibs",
],
"additionalProperties": True,
"properties": {
"patches": {"type": "array", "items": {"type": "string"}},
"cflags": {"type": "array", "items": {"type": "string"}},
"cppflags": {"type": "array", "items": {"type": "string"}},
"cxxflags": {"type": "array", "items": {"type": "string"}},
"fflags": {"type": "array", "items": {"type": "string"}},
"ldflags": {"type": "array", "items": {"type": "string"}},
"ldlib": {"type": "array", "items": {"type": "string"}},
},
},
"patches": {"type": "array", "items": {}},
"dependencies": dependencies,
"build_spec": build_spec,
},
},
},
},
}
}
#: Full schema with metadata
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Spack spec schema",
"type": "object",
"additionalProperties": False,
"patternProperties": properties,
}
- spack.schema.spec.properties = {'spec': {'additionalProperties': False, 'properties': {'_meta': {'properties': {'version': {'type': 'number'}}, 'type': 'object'}, 'nodes': {'items': {'additionalProperties': False, 'properties': {'arch': {'additionalProperties': False, 'properties': {'platform': {}, 'platform_os': {}, 'target': {'oneOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name', 'vendor', 'features', 'generation', 'parents'], 'properties': {'name': {'type': 'string'}, 'vendor': {'type': 'string'}, 'features': {'type': 'array', 'items': {'type': 'string'}}, 'generation': {'type': 'integer'}, 'parents': {'type': 'array', 'items': {'type': 'string'}}}}]}}, 'type': 'object'}, 'build_hash': {'type': 'string'}, 'build_spec': {'additionalProperties': False, 'properties': {'hash': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'hash'], 'type': 'object'}, 'compiler': {'additionalProperties': False, 'properties': {'name': {'type': 'string'}, 'version': {'type': 'string'}}, 'type': 'object'}, 'dependencies': {'patternProperties': {'\\w[\\w-]*': {'properties': {'hash': {'type': 'string'}, 'type': {'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'develop': {'anyOf': [{'type': 'boolean'}, {'type': 'string'}]}, 'full_hash': {'type': 'string'}, 'hash': {'type': 'string'}, 'name': {'type': 'string'}, 'namespace': {'type': 'string'}, 'package_hash': {'type': 'string'}, 'parameters': {'additionalProperties': True, 'properties': {'cflags': {'items': {'type': 'string'}, 'type': 'array'}, 'cppflags': {'items': {'type': 'string'}, 'type': 'array'}, 'cxxflags': {'items': {'type': 'string'}, 'type': 'array'}, 'fflags': {'items': {'type': 'string'}, 'type': 'array'}, 'ldflags': {'items': {'type': 'string'}, 'type': 'array'}, 'ldlib': {'items': {'type': 'string'}, 'type': 'array'}, 'patches': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['cflags', 'cppflags', 'cxxflags', 'fflags', 'ldflags', 'ldlibs'], 'type': 'object'}, 'patches': {'items': {}, 'type': 'array'}, 'version': {'oneOf': [{'type': 'string'}, {'type': 'number'}]}}, 'required': ['version', 'arch', 'compiler', 'namespace', 'parameters'], 'type': 'object'}, 'type': 'array'}}, 'required': ['_meta', 'nodes'], 'type': 'object'}}¶
Properties for inclusion in other schemas
- spack.schema.spec.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'patternProperties': {'spec': {'additionalProperties': False, 'properties': {'_meta': {'properties': {'version': {'type': 'number'}}, 'type': 'object'}, 'nodes': {'items': {'additionalProperties': False, 'properties': {'arch': {'additionalProperties': False, 'properties': {'platform': {}, 'platform_os': {}, 'target': {'oneOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': False, 'required': ['name', 'vendor', 'features', 'generation', 'parents'], 'properties': {'name': {'type': 'string'}, 'vendor': {'type': 'string'}, 'features': {'type': 'array', 'items': {'type': 'string'}}, 'generation': {'type': 'integer'}, 'parents': {'type': 'array', 'items': {'type': 'string'}}}}]}}, 'type': 'object'}, 'build_hash': {'type': 'string'}, 'build_spec': {'additionalProperties': False, 'properties': {'hash': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'hash'], 'type': 'object'}, 'compiler': {'additionalProperties': False, 'properties': {'name': {'type': 'string'}, 'version': {'type': 'string'}}, 'type': 'object'}, 'dependencies': {'patternProperties': {'\\w[\\w-]*': {'properties': {'hash': {'type': 'string'}, 'type': {'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'develop': {'anyOf': [{'type': 'boolean'}, {'type': 'string'}]}, 'full_hash': {'type': 'string'}, 'hash': {'type': 'string'}, 'name': {'type': 'string'}, 'namespace': {'type': 'string'}, 'package_hash': {'type': 'string'}, 'parameters': {'additionalProperties': True, 'properties': {'cflags': {'items': {'type': 'string'}, 'type': 'array'}, 'cppflags': {'items': {'type': 'string'}, 'type': 'array'}, 'cxxflags': {'items': {'type': 'string'}, 'type': 'array'}, 'fflags': {'items': {'type': 'string'}, 'type': 'array'}, 'ldflags': {'items': {'type': 'string'}, 'type': 'array'}, 'ldlib': {'items': {'type': 'string'}, 'type': 'array'}, 'patches': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['cflags', 'cppflags', 'cxxflags', 'fflags', 'ldflags', 'ldlibs'], 'type': 'object'}, 'patches': {'items': {}, 'type': 'array'}, 'version': {'oneOf': [{'type': 'string'}, {'type': 'number'}]}}, 'required': ['version', 'arch', 'compiler', 'namespace', 'parameters'], 'type': 'object'}, 'type': 'array'}}, 'required': ['_meta', 'nodes'], 'type': 'object'}}, 'title': 'Spack spec schema', 'type': 'object'}¶
Full schema with metadata
spack.schema.upstreams module¶
- spack.schema.upstreams.properties = {'upstreams': {'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'install_tree': {'type': 'string'}, 'modules': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}}¶
Properties for inclusion in other schemas
- spack.schema.upstreams.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'upstreams': {'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'install_tree': {'type': 'string'}, 'modules': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack core configuration file schema', 'type': 'object'}¶
Full schema with metadata