spack.schema package

Submodules

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'}]},
                        'environment': {
                            'type': 'object',
                            'default': {},
                            'additionalProperties': False,
                            'properties': {
                                'set': {
                                    'type': 'object',
                                    'patternProperties': {
                                        # Variable name
                                        r'\w[\w-]*': {
                                            'anyOf': [{'type': 'string'},
                                                      {'type': 'number'}]
                                        }
                                    }
                                },
                                'unset': {
                                    'type': 'object',
                                    'patternProperties': {
                                        # Variable name
                                        r'\w[\w-]*': {'type': 'null'}
                                    }
                                },
                                'prepend-path': {
                                    'type': 'object',
                                    'patternProperties': {
                                        # Variable name
                                        r'\w[\w-]*': {
                                            'anyOf': [{'type': 'string'},
                                                      {'type': 'number'}]
                                        }
                                    }
                                },
                                'append-path': {
                                    'type': 'object',
                                    'patternProperties': {
                                        # Variable name
                                        r'\w[\w-]*': {
                                            'anyOf': [{'type': 'string'},
                                                      {'type': 'number'}]
                                        }
                                    }
                                }
                            }
                        },
                        'extra_rpaths': {
                            'type': 'array',
                            'default': [],
                            'items': {'type': 'string'}
                        }
                    }
                }
            }
        }]
    }
}


#: Full schema with metadata
schema = {
    '$schema': 'http://json-schema.org/schema#',
    'title': 'Spack compiler configuration file schema',
    'type': 'object',
    'additionalProperties': False,
    'properties': properties,
}
spack.schema.compilers.properties = {'compilers': {'type': 'array', 'items': [{'type': 'object', 'additionalProperties': False, 'properties': {'compiler': {'required': ['paths', 'spec', 'modules', 'operating_system'], 'type': 'object', 'additionalProperties': False, 'properties': {'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'paths': {'required': ['cc', 'cxx', 'f77', 'fc'], 'type': 'object', 'additionalProperties': False, 'properties': {'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'spec': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'target': {'type': 'string'}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'unset': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'null'}}}, 'prepend-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'flags': {'type': 'object', 'additionalProperties': False, 'properties': {'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}}}}]}}

Properties for inclusion in other schemas

spack.schema.compilers.schema = {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'compilers': {'type': 'array', 'items': [{'type': 'object', 'additionalProperties': False, 'properties': {'compiler': {'required': ['paths', 'spec', 'modules', 'operating_system'], 'type': 'object', 'additionalProperties': False, 'properties': {'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'paths': {'required': ['cc', 'cxx', 'f77', 'fc'], 'type': 'object', 'additionalProperties': False, 'properties': {'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'spec': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'target': {'type': 'string'}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'unset': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'null'}}}, 'prepend-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'flags': {'type': 'object', 'additionalProperties': False, 'properties': {'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}}}}]}}, 'title': 'Spack compiler configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.config module

Schema for config.yaml configuration file.

#: Properties for inclusion in other schemas
properties = {
    'config': {
        'type': 'object',
        'default': {},
        'properties': {
            'install_tree': {'type': 'string'},
            'install_hash_length': {'type': 'integer', 'minimum': 1},
            'install_path_scheme': {'type': 'string'},
            'build_stage': {
                'oneOf': [
                    {'type': 'string'},
                    {'type': 'array',
                     'items': {'type': 'string'}}],
            },
            'template_dirs': {
                'type': 'array',
                'items': {'type': 'string'}
            },
            'module_roots': {
                'type': 'object',
                'additionalProperties': False,
                'properties': {
                    'tcl': {'type': 'string'},
                    'lmod': {'type': 'string'},
                    'dotkit': {'type': 'string'},
                },
            },
            'source_cache': {'type': 'string'},
            'misc_cache': {'type': 'string'},
            'verify_ssl': {'type': 'boolean'},
            'debug': {'type': 'boolean'},
            'checksum': {'type': 'boolean'},
            'locks': {'type': 'boolean'},
            'dirty': {'type': 'boolean'},
            'build_language': {'type': 'string'},
            'build_jobs': {'type': 'integer', 'minimum': 1},
            'ccache': {'type': 'boolean'},
            'db_lock_timeout': {'type': 'integer', 'minimum': 1},
            'package_lock_timeout': {
                'anyOf': [
                    {'type': 'integer', 'minimum': 1},
                    {'type': 'null'}
                ],
            },
        },
    },
}


#: Full schema with metadata
schema = {
    '$schema': 'http://json-schema.org/schema#',
    'title': 'Spack core configuration file schema',
    'type': 'object',
    'additionalProperties': False,
    'properties': properties,
}
spack.schema.config.properties = {'config': {'type': 'object', 'default': {}, 'properties': {'source_cache': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'template_dirs': {'type': 'array', 'items': {'type': 'string'}}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'verify_ssl': {'type': 'boolean'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'install_hash_length': {'type': 'integer', 'minimum': 1}, 'build_language': {'type': 'string'}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'package_lock_timeout': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'install_tree': {'type': 'string'}, 'install_path_scheme': {'type': 'string'}, 'build_jobs': {'type': 'integer', 'minimum': 1}, 'module_roots': {'type': 'object', 'additionalProperties': False, 'properties': {'dotkit': {'type': 'string'}, 'tcl': {'type': 'string'}, 'lmod': {'type': 'string'}}}, 'db_lock_timeout': {'type': 'integer', 'minimum': 1}, 'debug': {'type': 'boolean'}}}}

Properties for inclusion in other schemas

spack.schema.config.schema = {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'config': {'type': 'object', 'default': {}, 'properties': {'source_cache': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'template_dirs': {'type': 'array', 'items': {'type': 'string'}}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'verify_ssl': {'type': 'boolean'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'install_hash_length': {'type': 'integer', 'minimum': 1}, 'build_language': {'type': 'string'}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'package_lock_timeout': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'install_tree': {'type': 'string'}, 'install_path_scheme': {'type': 'string'}, 'build_jobs': {'type': 'integer', 'minimum': 1}, 'module_roots': {'type': 'object', 'additionalProperties': False, 'properties': {'dotkit': {'type': 'string'}, 'tcl': {'type': 'string'}, 'lmod': {'type': 'string'}}}, 'db_lock_timeout': {'type': 'integer', 'minimum': 1}, 'debug': {'type': 'boolean'}}}}, 'title': 'Spack core configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.env module

Schema for env.yaml configuration file.

                    },
                    'specs': {
                        # Specs is a list of specs, which can have
                        # optional additional properties in a sub-dict
                        'type': 'array',
                        'default': [],
                        'additionalProperties': False,
                        'items': {
                            'anyOf': [
                                {'type': 'string'},
                                {'type': 'null'},
                                {'type': 'object'},
                            ]
                        }
                    }
                }
            )
        }
    }
}

spack.schema.merged module

Schema for configuration merged into one file.

}
spack.schema.merged.properties = {'compilers': {'type': 'array', 'items': [{'type': 'object', 'additionalProperties': False, 'properties': {'compiler': {'required': ['paths', 'spec', 'modules', 'operating_system'], 'type': 'object', 'additionalProperties': False, 'properties': {'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'paths': {'required': ['cc', 'cxx', 'f77', 'fc'], 'type': 'object', 'additionalProperties': False, 'properties': {'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'spec': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'target': {'type': 'string'}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'unset': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'null'}}}, 'prepend-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'flags': {'type': 'object', 'additionalProperties': False, 'properties': {'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}}}}]}, 'config': {'type': 'object', 'default': {}, 'properties': {'source_cache': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'template_dirs': {'type': 'array', 'items': {'type': 'string'}}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'verify_ssl': {'type': 'boolean'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'install_hash_length': {'type': 'integer', 'minimum': 1}, 'build_language': {'type': 'string'}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'package_lock_timeout': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'install_tree': {'type': 'string'}, 'install_path_scheme': {'type': 'string'}, 'build_jobs': {'type': 'integer', 'minimum': 1}, 'module_roots': {'type': 'object', 'additionalProperties': False, 'properties': {'dotkit': {'type': 'string'}, 'tcl': {'type': 'string'}, 'lmod': {'type': 'string'}}}, 'db_lock_timeout': {'type': 'integer', 'minimum': 1}, 'debug': {'type': 'boolean'}}}, 'mirrors': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'modules': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'enable': {'type': 'array', 'default': [], 'items': {'type': 'string', 'enum': ['tcl', 'dotkit', 'lmod']}}, 'prefix_inspections': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'dotkit': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {}]}, 'tcl': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {}]}, 'lmod': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {'type': 'object', 'properties': {'hierarchy': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'core_compilers': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}]}}}, 'packages': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'modules': {'type': 'object', 'default': {}}, 'paths': {'type': 'object', 'default': {}}, 'compiler': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'version': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'providers': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'buildable': {'type': 'boolean', 'default': True}, 'permissions': {'type': 'object', 'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'write': {'type': 'string', 'enum': ['user', 'group', 'world']}, 'read': {'type': 'string', 'enum': ['user', 'group', 'world']}}}}}}}, 'repos': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}

Properties for inclusion in other schemas

spack.schema.merged.schema = {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'repos': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'compilers': {'type': 'array', 'items': [{'type': 'object', 'additionalProperties': False, 'properties': {'compiler': {'required': ['paths', 'spec', 'modules', 'operating_system'], 'type': 'object', 'additionalProperties': False, 'properties': {'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'paths': {'required': ['cc', 'cxx', 'f77', 'fc'], 'type': 'object', 'additionalProperties': False, 'properties': {'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'spec': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'target': {'type': 'string'}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'unset': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'null'}}}, 'prepend-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'flags': {'type': 'object', 'additionalProperties': False, 'properties': {'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}}}}]}, 'modules': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'enable': {'type': 'array', 'default': [], 'items': {'type': 'string', 'enum': ['tcl', 'dotkit', 'lmod']}}, 'prefix_inspections': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'dotkit': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {}]}, 'tcl': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {}]}, 'lmod': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {'type': 'object', 'properties': {'hierarchy': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'core_compilers': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}]}}}, 'packages': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'modules': {'type': 'object', 'default': {}}, 'paths': {'type': 'object', 'default': {}}, 'compiler': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'version': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'providers': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'buildable': {'type': 'boolean', 'default': True}, 'permissions': {'type': 'object', 'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'write': {'type': 'string', 'enum': ['user', 'group', 'world']}, 'read': {'type': 'string', 'enum': ['user', 'group', 'world']}}}}}}}, 'config': {'type': 'object', 'default': {}, 'properties': {'source_cache': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'template_dirs': {'type': 'array', 'items': {'type': 'string'}}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'verify_ssl': {'type': 'boolean'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'install_hash_length': {'type': 'integer', 'minimum': 1}, 'build_language': {'type': 'string'}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'package_lock_timeout': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'install_tree': {'type': 'string'}, 'install_path_scheme': {'type': 'string'}, 'build_jobs': {'type': 'integer', 'minimum': 1}, 'module_roots': {'type': 'object', 'additionalProperties': False, 'properties': {'dotkit': {'type': 'string'}, 'tcl': {'type': 'string'}, 'lmod': {'type': 'string'}}}, 'db_lock_timeout': {'type': 'integer', 'minimum': 1}, 'debug': {'type': 'boolean'}}}, 'mirrors': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}, 'title': 'Spack merged configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.mirrors module

Schema for mirrors.yaml configuration file.

#: Properties for inclusion in other schemas
properties = {
    'mirrors': {
        'type': 'object',
        'default': {},
        'additionalProperties': False,
        'patternProperties': {
            r'\w[\w-]*': {'type': 'string'},
        },
    },
}


#: Full schema with metadata
schema = {
    '$schema': 'http://json-schema.org/schema#',
    'title': 'Spack mirror configuration file schema',
    'type': 'object',
    'additionalProperties': False,
    'properties': properties,
}
spack.schema.mirrors.properties = {'mirrors': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}

Properties for inclusion in other schemas

spack.schema.mirrors.schema = {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'mirrors': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}, 'title': 'Spack mirror configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.modules module

Schema for modules.yaml configuration file.

#: valid keyword.
#:
#: THIS NEEDS TO BE UPDATED FOR EVERY NEW KEYWORD THAT
#: IS ADDED IMMEDIATELY BELOW THE MODULE TYPE ATTRIBUTE
spec_regex = r'(?!hierarchy|verbose|hash_length|whitelist|' \
             r'blacklist|naming_scheme|core_compilers|all)(^\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': {
                'environment_blacklist': {
                    '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-]*': {  # key
                    'type': 'string'
                }
            }
        },
        'environment': {
            'type': 'object',
            'default': {},
            'additionalProperties': False,
            'properties': {
                'set': dictionary_of_strings,
                'unset': array_of_strings,
                'prepend_path': dictionary_of_strings,
                'append_path': dictionary_of_strings
            }
        }
    }
}

module_type_configuration = {
    'type': 'object',
    'default': {},
    'allOf': [
        {'properties': {
            'verbose': {
                'type': 'boolean',
                'default': False
            },
            'hash_length': {
                'type': 'integer',
                'minimum': 0,
                'default': 7
            },
            'whitelist': array_of_strings,
            'blacklist': array_of_strings,
            'blacklist_implicits': {
                'type': 'boolean',
                'default': False
            },
            'naming_scheme': {
                'type': 'string'  # Can we be more specific here?
            },
            'all': module_file_configuration,
        }
        },
        {'validate_spec': True,
         'patternProperties': {
             spec_regex: module_file_configuration,
             anonymous_spec_regex: module_file_configuration,
         }
         }
    ]
}


# Properties for inclusion into other schemas (requires definitions)
properties = {
    'modules': {
        'type': 'object',
        'default': {},
        'additionalProperties': False,
        'properties': {
            'prefix_inspections': {
                'type': 'object',
                'patternProperties': {
                    # prefix-relative path to be inspected for existence
                    r'\w[\w-]*': array_of_strings
                }
            },
            'enable': {
                'type': 'array',
                'default': [],
                'items': {
                    'type': 'string',
                    'enum': ['tcl', 'dotkit', 'lmod']}},
            'lmod': {
                'allOf': [
                    # Base configuration
                    module_type_configuration,
                    {
                        'type': 'object',
                        'properties': {
                            'core_compilers': array_of_strings,
                            'hierarchy': array_of_strings
                        },
                    }  # Specific lmod extensions
                ]
            },
            'tcl': {
                'allOf': [
                    # Base configuration
                    module_type_configuration,
                    {}  # Specific tcl extensions
                ]
            },
            'dotkit': {
                'allOf': [
                    # Base configuration
                    module_type_configuration,
                    {}  # Specific dotkit extensions
                ]
            },
        },
    },
}


#: Full schema with metadata
schema = {
    '$schema': 'http://json-schema.org/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/schema#', 'additionalProperties': False, 'properties': {'modules': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'enable': {'type': 'array', 'default': [], 'items': {'type': 'string', 'enum': ['tcl', 'dotkit', 'lmod']}}, 'prefix_inspections': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'dotkit': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {}]}, 'tcl': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {}]}, 'lmod': {'allOf': [{'allOf': [{'properties': {'whitelist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'all': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, 'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'type': 'integer', 'default': 7, 'minimum': 0}, 'blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'naming_scheme': {'type': 'string'}, 'blacklist_implicits': {'type': 'boolean', 'default': False}}}, {'validate_spec': True, 'patternProperties': {'(?!hierarchy|verbose|hash_length|whitelist|blacklist|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}, '^[\\^@%+~]': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'conflict': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'load': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'prerequisites': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'environment': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'append_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'unset': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'prepend_path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}}}, 'template': {'type': 'string'}, 'suffixes': {'type': 'object', 'validate_spec': True, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'autoload': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'filter': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}}}}}], 'type': 'object', 'default': {}}, {'type': 'object', 'properties': {'hierarchy': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'core_compilers': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}]}}}}, 'title': 'Spack module file configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.modules.spec_regex = '(?!hierarchy|verbose|hash_length|whitelist|blacklist|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.packages module

Schema for packages.yaml configuration files.

#: Properties for inclusion in other schemas
properties = {
    'packages': {
        'type': 'object',
        'default': {},
        'additionalProperties': False,
        'patternProperties': {
            r'\w[\w-]*': {  # package name
                'type': 'object',
                'default': {},
                'additionalProperties': False,
                'properties': {
                    'version': {
                        'type': 'array',
                        'default': [],
                        # version strings
                        'items': {'anyOf': [{'type': 'string'},
                                            {'type': 'number'}]}},
                    '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',
                            },
                        },
                    },
                    'modules': {
                        'type': 'object',
                        'default': {},
                    },
                    'providers': {
                        'type':  'object',
                        'default': {},
                        'additionalProperties': False,
                        'patternProperties': {
                            r'\w[\w-]*': {
                                'type': 'array',
                                'default': [],
                                'items': {'type': 'string'}, }, }, },
                    'paths': {
                        'type': 'object',
                        'default': {},
                    },
                    'variants': {
                        'oneOf': [
                            {'type': 'string'},
                            {'type': 'array',
                             'items': {'type': 'string'}}],
                    },
                },
            },
        },
    },
}


#: Full schema with metadata
schema = {
    '$schema': 'http://json-schema.org/schema#',
    'title': 'Spack package configuration file schema',
    'type': 'object',
    'additionalProperties': False,
    'properties': properties,
}
spack.schema.packages.properties = {'packages': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'modules': {'type': 'object', 'default': {}}, 'paths': {'type': 'object', 'default': {}}, 'compiler': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'version': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'providers': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'buildable': {'type': 'boolean', 'default': True}, 'permissions': {'type': 'object', 'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'write': {'type': 'string', 'enum': ['user', 'group', 'world']}, 'read': {'type': 'string', 'enum': ['user', 'group', 'world']}}}}}}}}

Properties for inclusion in other schemas

spack.schema.packages.schema = {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'packages': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'type': 'object', 'default': {}, 'properties': {'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'modules': {'type': 'object', 'default': {}}, 'paths': {'type': 'object', 'default': {}}, 'compiler': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'version': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'providers': {'additionalProperties': False, 'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}}, 'buildable': {'type': 'boolean', 'default': True}, 'permissions': {'type': 'object', 'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'write': {'type': 'string', 'enum': ['user', 'group', 'world']}, 'read': {'type': 'string', 'enum': ['user', 'group', 'world']}}}}}}}}, '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',
        'default': {},
        'patternProperties': {
            r'all|\w[\w-]*': {
                'type': 'string'
            },
        },
    },
}


#: Full schema with metadata
schema = {
    '$schema': 'http://json-schema.org/schema#',
    'title': 'Spack view projection configuration file schema',
    'type': 'object',
    'additionalProperties': False,
    'properties': properties,
}
spack.schema.projections.properties = {'projections': {'type': 'object', 'default': {}, 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}}

Properties for inclusion in other schemas

spack.schema.projections.schema = {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'projections': {'type': 'object', 'default': {}, 'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}}}, '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/schema#',
    'title': 'Spack repository configuration file schema',
    'type': 'object',
    'additionalProperties': False,
    'properties': properties,
}
spack.schema.repos.properties = {'repos': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}

Properties for inclusion in other schemas

spack.schema.repos.schema = {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'repos': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'title': 'Spack repository configuration file schema', 'type': 'object'}

Full schema with metadata

Module contents

This module contains jsonschema files for all of Spack’s YAML formats.