summaryrefslogtreecommitdiff
path: root/schemas/chunk.json-schema
blob: 8de2fb5f2ccf96aebfc78505aa2f50012527bb9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
$schema: http://json-schema.org/draft-04/schema#
id: http://git.baserock.org/cgi-bin/cgit.cgi/baserock/baserock/definitions.git/tree/schemas/chunk.json-schema

description: |
  This is a JSON-Schema description of a 'chunk' .morph file, which is part of
  the Baserock definitions YAML representation format.

  This JSON-Schema file is valid for VERSION 7 of the Baserock definitions
  YAML serialisation format.

  The Baserock definitions format is the recommended way of representing
  Baserock definitions on disk. The actual data model is described separately.
  See https://wiki.baserock.org/definitions for more information.

  This schema is represented as YAML, so that it can be edited more easily.
  You may need to convert to JSON if using a JSON-Schema tool that expects
  its input to be an actual string containing data serialised as JSON.

definitions:
  # Corresponds to CommandSequence in Baserock data model.
  command-sequence:
    type: array
    items: { type: string }

  # Corresponds to DeviceNode in Baserock data model.
  device-node:
    type: object
    required: [type, filename, gid, uid, major, minor, permissions]
    properties:
      type: { type: string }
      filename: { type: string }
      gid: { type: integer }
      uid: { type: integer }
      major: { type: integer }
      minor: { type: integer }
      permissions: { type: string }

  # Defines one or more instances of ChunkArtifact from the Baserock data model.
  split-rules:
     type: array
     items:
       type: object

       required: [artifact, include]
       additionalProperties: false

       properties:
         artifact: {type: string}
         include:
           type: array
           items:
             type: string
             format: regex

  system-integration-commands:
    type: object
    patternProperties:
      # The property name here should correspond to the name of the chunk's
      # artifacts, probably the '-bins' artifact if you are using the normal
      # splitting rules.
      ^.*$:
        type: object
        patternProperties:
          ^.*$:
            $ref: "#/definitions/command-sequence"

# Corresponds to Chunk in Baserock data model.
type: object

additionalProperties: false
required: [ 'name', 'kind']

properties:
  name: { type: string }
  kind: { enum: [ "chunk" ] }

  description: { type: string }

  build-system: { type: string }
  max-jobs: { type: integer }

  products:
    $ref: "#/definitions/split-rules"

  pre-configure-commands:
    $ref: "#/definitions/command-sequence"
  configure-commands:
    $ref: "#/definitions/command-sequence"
  post-configure-commands:
    $ref: "#/definitions/command-sequence"
  pre-build-commands:
    $ref: "#/definitions/command-sequence"
  build-commands:
    $ref: "#/definitions/command-sequence"
  post-build-commands:
    $ref: "#/definitions/command-sequence"
  pre-install-commands:
    $ref: "#/definitions/command-sequence"
  install-commands:
    $ref: "#/definitions/command-sequence"
  post-install-commands:
    $ref: "#/definitions/command-sequence"
  pre-strip-commands:
    $ref: "#/definitions/command-sequence"
  strip-commands:
    $ref: "#/definitions/command-sequence"
  post-strip-commands:
    $ref: "#/definitions/command-sequence"

  system-integration:
    $ref: "#/definitions/system-integration-commands"

  devices:
    type: array
    items:
      $ref: "#/definitions/device-node"