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', 'properties': {'compiler': {'type': 'object', 'required': ['paths', 'spec', 'modules', 'operating_system'], 'properties': {'target': {'type': 'string'}, 'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'flags': {'type': 'object', 'properties': {'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'spec': {'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'operating_system': {'type': 'string'}, 'environment': {'type': 'object', 'default': {}, 'properties': {'prepend-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'null'}}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}, 'additionalProperties': False}, 'paths': {'type': 'object', 'additionalProperties': False, 'properties': {'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'required': ['cc', 'cxx', 'f77', 'fc']}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}

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', 'properties': {'compiler': {'type': 'object', 'required': ['paths', 'spec', 'modules', 'operating_system'], 'properties': {'target': {'type': 'string'}, 'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'flags': {'type': 'object', 'properties': {'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'spec': {'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'operating_system': {'type': 'string'}, 'environment': {'type': 'object', 'default': {}, 'properties': {'prepend-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'null'}}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}, 'additionalProperties': False}, 'paths': {'type': 'object', 'additionalProperties': False, 'properties': {'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'required': ['cc', 'cxx', 'f77', 'fc']}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, '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': {'misc_cache': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'template_dirs': {'type': 'array', 'items': {'type': 'string'}}, 'ccache': {'type': 'boolean'}, 'package_lock_timeout': {'anyOf': [{'minimum': 1, 'type': 'integer'}, {'type': 'null'}]}, 'install_tree': {'type': 'string'}, 'module_roots': {'type': 'object', 'properties': {'tcl': {'type': 'string'}, 'dotkit': {'type': 'string'}, 'lmod': {'type': 'string'}}, 'additionalProperties': False}, 'source_cache': {'type': 'string'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'locks': {'type': 'boolean'}, 'build_language': {'type': 'string'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'verify_ssl': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'checksum': {'type': 'boolean'}, 'debug': {'type': 'boolean'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}}}}

Properties for inclusion in other schemas

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

Full schema with metadata

spack.schema.env module

Schema for env.yaml configuration file.

                            'type': 'string'
                        },
                    },
                    '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', 'properties': {'compiler': {'type': 'object', 'required': ['paths', 'spec', 'modules', 'operating_system'], 'properties': {'target': {'type': 'string'}, 'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'flags': {'type': 'object', 'properties': {'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'spec': {'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'operating_system': {'type': 'string'}, 'environment': {'type': 'object', 'default': {}, 'properties': {'prepend-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'null'}}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}, 'additionalProperties': False}, 'paths': {'type': 'object', 'additionalProperties': False, 'properties': {'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'required': ['cc', 'cxx', 'f77', 'fc']}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'config': {'type': 'object', 'default': {}, 'properties': {'misc_cache': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'template_dirs': {'type': 'array', 'items': {'type': 'string'}}, 'ccache': {'type': 'boolean'}, 'package_lock_timeout': {'anyOf': [{'minimum': 1, 'type': 'integer'}, {'type': 'null'}]}, 'install_tree': {'type': 'string'}, 'module_roots': {'type': 'object', 'properties': {'tcl': {'type': 'string'}, 'dotkit': {'type': 'string'}, 'lmod': {'type': 'string'}}, 'additionalProperties': False}, 'source_cache': {'type': 'string'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'locks': {'type': 'boolean'}, 'build_language': {'type': 'string'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'verify_ssl': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'checksum': {'type': 'boolean'}, 'debug': {'type': 'boolean'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}}}, 'mirrors': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'additionalProperties': False}, 'modules': {'type': 'object', 'default': {}, 'properties': {'tcl': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {}]}, 'enable': {'type': 'array', 'default': [], 'items': {'type': 'string', 'enum': ['tcl', 'dotkit', 'lmod']}}, 'dotkit': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {}]}, 'prefix_inspections': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'$ref': '#/definitions/array_of_strings'}}}, 'lmod': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {'hierarchical_scheme': {'$ref': '#/definitions/array_of_strings'}, 'core_compilers': {'$ref': '#/definitions/array_of_strings'}}]}}, 'additionalProperties': False}, 'packages': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'object', 'default': {}, 'properties': {'providers': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'modules': {'type': 'object', 'default': {}}, 'compiler': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'paths': {'type': 'object', 'default': {}}, 'version': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'permissions': {'type': 'object', 'properties': {'write': {'type': 'string', 'enum': ['user', 'group', 'world']}, 'group': {'type': 'string'}, 'read': {'type': 'string', 'enum': ['user', 'group', 'world']}}, 'additionalProperties': False}, 'buildable': {'type': 'boolean', 'default': True}, 'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'additionalProperties': False}}, 'additionalProperties': False}, '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, 'definitions': {'module_type_configuration': {'type': 'object', 'default': {}, 'anyOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'minimum': 0, 'type': 'integer', 'default': 7}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'blacklist': {'$ref': '#/definitions/array_of_strings'}, 'whitelist': {'$ref': '#/definitions/array_of_strings'}, 'naming_scheme': {'type': 'string'}}}, {'patternProperties': {'\\w[\\w-]*': {'$ref': '#/definitions/module_file_configuration'}}}]}, 'module_file_configuration': {'type': 'object', 'default': {}, 'properties': {'template': {'type': 'string'}, 'conflict': {'$ref': '#/definitions/array_of_strings'}, 'autoload': {'$ref': '#/definitions/dependency_selection'}, 'load': {'$ref': '#/definitions/array_of_strings'}, 'prerequisites': {'$ref': '#/definitions/dependency_selection'}, 'filter': {'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'suffixes': {'$ref': '#/definitions/dictionary_of_strings'}, 'environment': {'type': 'object', 'default': {}, 'properties': {'unset': {'$ref': '#/definitions/array_of_strings'}, 'append_path': {'$ref': '#/definitions/dictionary_of_strings'}, 'set': {'$ref': '#/definitions/dictionary_of_strings'}, 'prepend_path': {'$ref': '#/definitions/dictionary_of_strings'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'dictionary_of_strings': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'dependency_selection': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'array_of_strings': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'properties': {'packages': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'object', 'default': {}, 'properties': {'providers': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'modules': {'type': 'object', 'default': {}}, 'compiler': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'paths': {'type': 'object', 'default': {}}, 'version': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'permissions': {'type': 'object', 'properties': {'write': {'type': 'string', 'enum': ['user', 'group', 'world']}, 'group': {'type': 'string'}, 'read': {'type': 'string', 'enum': ['user', 'group', 'world']}}, 'additionalProperties': False}, 'buildable': {'type': 'boolean', 'default': True}, 'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'config': {'type': 'object', 'default': {}, 'properties': {'misc_cache': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'template_dirs': {'type': 'array', 'items': {'type': 'string'}}, 'ccache': {'type': 'boolean'}, 'package_lock_timeout': {'anyOf': [{'minimum': 1, 'type': 'integer'}, {'type': 'null'}]}, 'install_tree': {'type': 'string'}, 'module_roots': {'type': 'object', 'properties': {'tcl': {'type': 'string'}, 'dotkit': {'type': 'string'}, 'lmod': {'type': 'string'}}, 'additionalProperties': False}, 'source_cache': {'type': 'string'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'locks': {'type': 'boolean'}, 'build_language': {'type': 'string'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}, 'verify_ssl': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'checksum': {'type': 'boolean'}, 'debug': {'type': 'boolean'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}}}, 'modules': {'type': 'object', 'default': {}, 'properties': {'tcl': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {}]}, 'enable': {'type': 'array', 'default': [], 'items': {'type': 'string', 'enum': ['tcl', 'dotkit', 'lmod']}}, 'dotkit': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {}]}, 'prefix_inspections': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'$ref': '#/definitions/array_of_strings'}}}, 'lmod': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {'hierarchical_scheme': {'$ref': '#/definitions/array_of_strings'}, 'core_compilers': {'$ref': '#/definitions/array_of_strings'}}]}}, 'additionalProperties': False}, 'compilers': {'type': 'array', 'items': [{'type': 'object', 'properties': {'compiler': {'type': 'object', 'required': ['paths', 'spec', 'modules', 'operating_system'], 'properties': {'target': {'type': 'string'}, 'extra_rpaths': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'flags': {'type': 'object', 'properties': {'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'spec': {'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'operating_system': {'type': 'string'}, 'environment': {'type': 'object', 'default': {}, 'properties': {'prepend-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'unset': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'null'}}}, 'set': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}, 'append-path': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}}}, 'additionalProperties': False}, 'paths': {'type': 'object', 'additionalProperties': False, 'properties': {'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'required': ['cc', 'cxx', 'f77', 'fc']}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'repos': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'mirrors': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'additionalProperties': False}}, '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': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'additionalProperties': False}}

Properties for inclusion in other schemas

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

Full schema with metadata

spack.schema.modules module

Schema for modules.yaml configuration file.

#: Definitions for parts of module schema
definitions = {
    'array_of_strings': {
        'type': 'array',
        'default': [],
        'items': {
            'type': 'string'
        }
    },
    'dictionary_of_strings': {
        'type': 'object',
        'patternProperties': {
            r'\w[\w-]*': {  # key
                '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': {
                '$ref': '#/definitions/dependency_selection'},
            'prerequisites': {
                '$ref': '#/definitions/dependency_selection'},
            'conflict': {
                '$ref': '#/definitions/array_of_strings'},
            'load': {
                '$ref': '#/definitions/array_of_strings'},
            'suffixes': {
                '$ref': '#/definitions/dictionary_of_strings'},
            'environment': {
                'type': 'object',
                'default': {},
                'additionalProperties': False,
                'properties': {
                    'set': {
                        '$ref': '#/definitions/dictionary_of_strings'},
                    'unset': {
                        '$ref': '#/definitions/array_of_strings'},
                    'prepend_path': {
                        '$ref': '#/definitions/dictionary_of_strings'},
                    'append_path': {
                        '$ref': '#/definitions/dictionary_of_strings'}
                }
            }
        }
    },
    'module_type_configuration': {
        'type': 'object',
        'default': {},
        'anyOf': [
            {'properties': {
                'verbose': {
                    'type': 'boolean',
                    'default': False
                },
                'hash_length': {
                    'type': 'integer',
                    'minimum': 0,
                    'default': 7
                },
                'whitelist': {
                    '$ref': '#/definitions/array_of_strings'},
                'blacklist': {
                    '$ref': '#/definitions/array_of_strings'},
                'blacklist_implicits': {
                    'type': 'boolean',
                    'default': False
                },
                'naming_scheme': {
                    'type': 'string'  # Can we be more specific here?
                }
            }},
            {'patternProperties': {
                r'\w[\w-]*': {
                    '$ref': '#/definitions/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-]*': {
                        '$ref': '#/definitions/array_of_strings'}}},
            'enable': {
                'type': 'array',
                'default': [],
                'items': {
                    'type': 'string',
                    'enum': ['tcl', 'dotkit', 'lmod']}},
            'lmod': {
                'allOf': [
                    # Base configuration
                    {'$ref': '#/definitions/module_type_configuration'},
                    {
                        'core_compilers': {
                            '$ref': '#/definitions/array_of_strings'
                        },
                        'hierarchical_scheme': {
                            '$ref': '#/definitions/array_of_strings'
                        }
                    }  # Specific lmod extensions
                ]
            },
            'tcl': {
                'allOf': [
                    # Base configuration
                    {'$ref': '#/definitions/module_type_configuration'},
                    {}  # Specific tcl extensions
                ]
            },
            'dotkit': {
                'allOf': [
                    # Base configuration
                    {'$ref': '#/definitions/module_type_configuration'},
                    {}  # Specific dotkit extensions
                ]
            },
        },
    },
}


#: Full schema with metadata
schema = {
    '$schema': 'http://json-schema.org/schema#',
    'title': 'Spack module file configuration file schema',
    'definitions': definitions,
    'type': 'object',
    'additionalProperties': False,
    'properties': properties,
}
spack.schema.modules.definitions = {'array_of_strings': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'dependency_selection': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'dictionary_of_strings': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'module_file_configuration': {'type': 'object', 'default': {}, 'properties': {'template': {'type': 'string'}, 'conflict': {'$ref': '#/definitions/array_of_strings'}, 'autoload': {'$ref': '#/definitions/dependency_selection'}, 'load': {'$ref': '#/definitions/array_of_strings'}, 'prerequisites': {'$ref': '#/definitions/dependency_selection'}, 'filter': {'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'suffixes': {'$ref': '#/definitions/dictionary_of_strings'}, 'environment': {'type': 'object', 'default': {}, 'properties': {'unset': {'$ref': '#/definitions/array_of_strings'}, 'append_path': {'$ref': '#/definitions/dictionary_of_strings'}, 'set': {'$ref': '#/definitions/dictionary_of_strings'}, 'prepend_path': {'$ref': '#/definitions/dictionary_of_strings'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'module_type_configuration': {'type': 'object', 'default': {}, 'anyOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'minimum': 0, 'type': 'integer', 'default': 7}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'blacklist': {'$ref': '#/definitions/array_of_strings'}, 'whitelist': {'$ref': '#/definitions/array_of_strings'}, 'naming_scheme': {'type': 'string'}}}, {'patternProperties': {'\\w[\\w-]*': {'$ref': '#/definitions/module_file_configuration'}}}]}}

Definitions for parts of module schema

spack.schema.modules.schema = {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'definitions': {'module_type_configuration': {'type': 'object', 'default': {}, 'anyOf': [{'properties': {'verbose': {'type': 'boolean', 'default': False}, 'hash_length': {'minimum': 0, 'type': 'integer', 'default': 7}, 'blacklist_implicits': {'type': 'boolean', 'default': False}, 'blacklist': {'$ref': '#/definitions/array_of_strings'}, 'whitelist': {'$ref': '#/definitions/array_of_strings'}, 'naming_scheme': {'type': 'string'}}}, {'patternProperties': {'\\w[\\w-]*': {'$ref': '#/definitions/module_file_configuration'}}}]}, 'module_file_configuration': {'type': 'object', 'default': {}, 'properties': {'template': {'type': 'string'}, 'conflict': {'$ref': '#/definitions/array_of_strings'}, 'autoload': {'$ref': '#/definitions/dependency_selection'}, 'load': {'$ref': '#/definitions/array_of_strings'}, 'prerequisites': {'$ref': '#/definitions/dependency_selection'}, 'filter': {'type': 'object', 'default': {}, 'properties': {'environment_blacklist': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'suffixes': {'$ref': '#/definitions/dictionary_of_strings'}, 'environment': {'type': 'object', 'default': {}, 'properties': {'unset': {'$ref': '#/definitions/array_of_strings'}, 'append_path': {'$ref': '#/definitions/dictionary_of_strings'}, 'set': {'$ref': '#/definitions/dictionary_of_strings'}, 'prepend_path': {'$ref': '#/definitions/dictionary_of_strings'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'dictionary_of_strings': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}}, 'dependency_selection': {'type': 'string', 'enum': ['none', 'direct', 'all']}, 'array_of_strings': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'properties': {'modules': {'type': 'object', 'default': {}, 'properties': {'tcl': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {}]}, 'enable': {'type': 'array', 'default': [], 'items': {'type': 'string', 'enum': ['tcl', 'dotkit', 'lmod']}}, 'dotkit': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {}]}, 'prefix_inspections': {'type': 'object', 'patternProperties': {'\\w[\\w-]*': {'$ref': '#/definitions/array_of_strings'}}}, 'lmod': {'allOf': [{'$ref': '#/definitions/module_type_configuration'}, {'hierarchical_scheme': {'$ref': '#/definitions/array_of_strings'}, 'core_compilers': {'$ref': '#/definitions/array_of_strings'}}]}}, 'additionalProperties': False}}, 'title': 'Spack module file configuration file schema', 'type': 'object'}

Full schema with metadata

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': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'object', 'default': {}, 'properties': {'providers': {'type': 'object', 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'type': 'array', 'default': [], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'modules': {'type': 'object', 'default': {}}, 'compiler': {'type': 'array', 'default': [], 'items': {'type': 'string'}}, 'paths': {'type': 'object', 'default': {}}, 'version': {'type': 'array', 'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'permissions': {'type': 'object', 'properties': {'write': {'type': 'string', 'enum': ['user', 'group', 'world']}, 'group': {'type': 'string'}, 'read': {'type': 'string', 'enum': ['user', 'group', 'world']}}, 'additionalProperties': False}, 'buildable': {'type': 'boolean', 'default': True}, 'variants': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}]}}, 'additionalProperties': False}}, 'additionalProperties': False}}

Properties for inclusion in other schemas

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