From 4b4da5a02bc311603469eea7b3dfd4f1bbb911fd Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Wed, 4 May 2022 11:44:05 +0200 Subject: support piggybacking on other software systems in Hydrilla source packages --- package_source-1.0.1.schema.json | 56 ------------ package_source-1.0.1.schema.json.license | 5 -- package_source-2.schema.json | 141 +++++++++++++++++++++++++++++++ package_source-2.schema.json.license | 5 ++ 4 files changed, 146 insertions(+), 61 deletions(-) delete mode 100644 package_source-1.0.1.schema.json delete mode 100644 package_source-1.0.1.schema.json.license create mode 100644 package_source-2.schema.json create mode 100644 package_source-2.schema.json.license diff --git a/package_source-1.0.1.schema.json b/package_source-1.0.1.schema.json deleted file mode 100644 index 2f9482e..0000000 --- a/package_source-1.0.1.schema.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://hydrilla.koszko.org/schemas/package_source-1.0.1.schema.json", - "title": "Package source", - "description": "Definition of a Hydrilla source package", - "type": "object", - "required": [ - "$schema", - "source_name", - "copyright", - "upstream_url", - "definitions" - ], - "properties": { - "$schema": { - "description": "Mark this instance as conforming to package source schema 1.x", - "type": "string", - "pattern": "^https://hydrilla\\.koszko\\.org/schemas/package_source-1\\.(([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 - } - } -} diff --git a/package_source-1.0.1.schema.json.license b/package_source-1.0.1.schema.json.license deleted file mode 100644 index f41d511..0000000 --- a/package_source-1.0.1.schema.json.license +++ /dev/null @@ -1,5 +0,0 @@ -SPDX-License-Identifier: CC0-1.0 - -Copyright (C) 2022 Wojtek Kosior - -Available under the terms of Creative Commons Zero v1.0 Universal. diff --git a/package_source-2.schema.json b/package_source-2.schema.json new file mode 100644 index 0000000..962a209 --- /dev/null +++ b/package_source-2.schema.json @@ -0,0 +1,141 @@ +{ + "$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 + } + } + } + } +} diff --git a/package_source-2.schema.json.license b/package_source-2.schema.json.license new file mode 100644 index 0000000..f41d511 --- /dev/null +++ b/package_source-2.schema.json.license @@ -0,0 +1,5 @@ +SPDX-License-Identifier: CC0-1.0 + +Copyright (C) 2022 Wojtek Kosior + +Available under the terms of Creative Commons Zero v1.0 Universal. -- cgit v1.2.3