{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://hydrilla.koszko.org/schemas/package_source-2.schema.json", "title": "Package source", "description": "Definition of a Hydrilla source package", "allOf": [{ "description": "Definition of a Hydrilla source package - validation rules common for all minor schema versions", "type": "object", "required": [ "$schema", "source_name", "copyright", "upstream_url", "definitions" ], "properties": { "$schema": { "description": "Mark this instance as conforming to package source schema 1.x or 2.x", "type": "string", "pattern": "^https://hydrilla\\.koszko\\.org/schemas/package_source-[12]\\.(([1-9][0-9]*|0)\\.)*schema\\.json$" }, "source_name": { "$ref": "./common_definitions-1.0.1.schema.json#/definitions/source_name" }, "copyright": { "description": "Which files from the source package indicate its license terms and should be included in the distribution packages", "$ref": "./common_definitions-1.0.1.schema.json#/definitions/file_ref_list" }, "upstream_url": { "description": "Where this software/work initially comes from", "type": "string" }, "comment": { "$ref": "./common_definitions-1.0.1.schema.json#/definitions/comment" }, "definitions": { "description": "Definitions of site resources and pattern->payload mappings", "type": "array", "items": { "anyOf": [{ "$ref": "./common_definitions-1.0.1.schema.json#/definitions/resource_definition_base" }, { "$ref": "./common_definitions-1.0.1.schema.json#/definitions/mapping_definition_base" }] } }, "additional_files": { "description": "Files which should be included in the source archive produced by Hydrilla builder in addition to script and copyright files", "$ref": "./common_definitions-1.0.1.schema.json#/definitions/file_ref_list", "default": [] }, "reuse_generate_spdx_report": { "description": "Should report.spdx be automatically generated for the package using REUSE tool", "type": "boolean", "default": false } } }, { "description": "Definition of a Hydrilla source package - validation rules common for versions 2 and higher", "if": { "type": "object", "properties": { "$schema": { "description": "Select instances that specify schema version 1.0.x", "type": "string", "pattern": "^https://hydrilla\\.koszko\\.org/schemas/package_source-2\\..*schema\\.json$" } } }, "else": { "description": "Validate the piggybacking correctness", "type": "object", "properties": { "piggyback_on": { "anyOf": [{ "$ref": "#/definitions/piggyback_apt" }] } } } }], "definitions": { "piggyback_apt": { "description": "Specify packages from APT software system that should be used for constructing this package", "type": "object", "required": [ "system", "packages", "dependencies" ], "properties": { "system": { "description": "Which software system to use", "const": "apt" }, "distribution": { "description": "Which pre-defined APT-based distribution to use (currently the only available one is Trisquel 10 Nabia)", "const": "nabia" }, "sources_list": { "description": "What lines should be added to the sources.list file that will be generated; those will be used together with pre-defined lines for chosen distribution (if any)", "type": "array", "items": { "description": "A sources.list line like \"deb-src http://archive.trisquel.info/trisquel/ nabia main\"", "type": "string", "pattern": "^deb(-src)?(\\s+[^\\s]+){3}$" }, "default": [] }, "trusted_keys": { "description": "Fingerprints of additional PGP keys that should be used with supplied sources.list entries", "type": "array", "items": { "description": "A PGP fingerprint (40 hexadecimal characters)", "type": "string", "pattern": "^[0-9A-E]{40}$" }, "default": [] }, "packages": { "description": "Specifiers of packages that should be used, can include version constraints", "type": "array", "items": { "description": "A package specifier like \"libjs-jquery=3.3.1~dfsg-3\"", "type": "string" }, "minItems": 1 }, "dependencies": { "description": "Boolean indicating whether dependent APT packages should also be downloaded and used", "type": "boolean" }, "depend_on_base_packages": { "description": "Boolean indicating whether the resulting resource packages should depend on 'apt-common-licenses' Haketilo package", "type": "boolean", "default": true } } } } }