summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-05-04 11:44:05 +0200
committerWojtek Kosior <koszko@koszko.org>2022-05-10 12:40:45 +0200
commit4b4da5a02bc311603469eea7b3dfd4f1bbb911fd (patch)
tree511521bb96a5d7a88d8dfce3d40e16694312f198
parent09634f3446866f712a022327683b1149d8f46bf0 (diff)
downloadhydrilla-json-schemas-4b4da5a02bc311603469eea7b3dfd4f1bbb911fd.tar.gz
hydrilla-json-schemas-4b4da5a02bc311603469eea7b3dfd4f1bbb911fd.zip
support piggybacking on other software systems in Hydrilla source packages
-rw-r--r--package_source-1.0.1.schema.json56
-rw-r--r--package_source-2.schema.json141
-rw-r--r--package_source-2.schema.json.license (renamed from package_source-1.0.1.schema.json.license)0
3 files changed, 141 insertions, 56 deletions
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-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-1.0.1.schema.json.license b/package_source-2.schema.json.license
index f41d511..f41d511 100644
--- a/package_source-1.0.1.schema.json.license
+++ b/package_source-2.schema.json.license