{ "$id": "https://github.com/canonical/rockcraft/blob/main/schema/rockcraft.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "ExecCheck": { "additionalProperties": false, "description": "Model for a check that executes a command.", "properties": { "override": { "description": "How this check is combined with another same-named check.", "enum": [ "merge", "replace" ], "title": "Override", "type": "string" }, "level": { "anyOf": [ { "enum": [ "alive", "ready" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Check level, used for filtering checks when calling the health endpoint.", "title": "Level" }, "period": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "How frequently to run this check.", "examples": [ "10s", "30m" ], "title": "Period" }, "timeout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The time before the check fails if not completed. Must be less than ``period``.", "examples": [ "5s", "2m" ], "title": "Timeout" }, "threshold": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of consecutive errors before the check is considered failed.", "title": "Threshold" }, "exec": { "$ref": "#/$defs/ExecCheckOptions" } }, "required": [ "override", "exec" ], "title": "ExecCheck", "type": "object" }, "ExecCheckOptions": { "additionalProperties": false, "description": "Lightweight schema validation for a Pebble exec check.", "properties": { "command": { "description": "The command to execute for this health check.", "examples": [ "/usr/bin/health-check" ], "title": "Command", "type": "string" }, "service-context": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Run the check as the given service's user and group, with that service's working directory and environment variables set.", "title": "Service-Context" }, "environment": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "default": null, "description": "A mapping of environment variables with which to run the check.", "title": "Environment" }, "user": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The user that will run the check.", "title": "User" }, "user-id": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The UID of the user that will run the check.", "title": "User-Id" }, "group": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The group name for the check process to run as.", "title": "Group" }, "group-id": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The GID of the group that will run the check.", "title": "Group-Id" }, "working-dir": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The working directory in which the command will run.", "title": "Working-Dir" } }, "required": [ "command" ], "title": "ExecCheckOptions", "type": "object" }, "FailureExitState": { "description": "What to do on a failure exit.", "enum": [ "restart", "shutdown", "success-shutdown", "ignore" ], "title": "FailureExitState", "type": "string" }, "HttpCheck": { "additionalProperties": false, "description": "Model for a check that uses HTTP.", "properties": { "override": { "description": "How this check is combined with another same-named check.", "enum": [ "merge", "replace" ], "title": "Override", "type": "string" }, "level": { "anyOf": [ { "enum": [ "alive", "ready" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Check level, used for filtering checks when calling the health endpoint.", "title": "Level" }, "period": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "How frequently to run this check.", "examples": [ "10s", "30m" ], "title": "Period" }, "timeout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The time before the check fails if not completed. Must be less than ``period``.", "examples": [ "5s", "2m" ], "title": "Timeout" }, "threshold": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of consecutive errors before the check is considered failed.", "title": "Threshold" }, "http": { "$ref": "#/$defs/HttpCheckOptions" } }, "required": [ "override", "http" ], "title": "HttpCheck", "type": "object" }, "HttpCheckOptions": { "additionalProperties": false, "description": "Lightweight schema validation for a Pebble HTTP check.", "properties": { "url": { "description": "The URL to fetch", "examples": [ "https://example.com/foo", "http://localhost/health-check" ], "format": "uri", "minLength": 1, "title": "Url", "type": "string" }, "headers": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "default": null, "description": "Headers to send with the HTTP request.", "examples": [ { "X-Health-Check": "true" } ], "title": "Headers" } }, "required": [ "url" ], "title": "HttpCheckOptions", "type": "object" }, "Platform": { "additionalProperties": false, "description": "A single platform entry in the platforms dictionary.\n\nThis model defines how a single value under the ``platforms`` key works for a project.", "properties": { "build-on": { "anyOf": [ { "items": { "type": "string" }, "type": "array", "uniqueItems": true }, { "type": "string" } ], "examples": [ "amd64", [ "arm64", "riscv64" ] ], "minLength": 1, "title": "Build-On" }, "build-for": { "oneOf": [ { "title": "Build-For", "minItems": 1, "uniqueItems": true, "type": "array", "items": { "type": "string" } }, { "title": "Build-For", "type": "string" } ] } }, "required": [ "build-on", "build-for" ], "title": "Platform", "type": "object" }, "Service": { "additionalProperties": false, "description": "Lightweight schema validation for a Pebble service.\n\nBased on\nhttps://canonical-pebble.readthedocs-hosted.com/en/latest/reference/layer-specification/", "properties": { "override": { "description": "Whether to replace pre-existing service definitions or merge them.", "enum": [ "merge", "replace" ], "title": "Override", "type": "string" }, "command": { "description": "The command used to run the service.", "examples": [ "/usr/bin/ls", "/usr/bin/somedaemon --db=/db/path [ --port 8080 ]" ], "title": "Command", "type": "string" }, "summary": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A short summary of the service.", "title": "Summary" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A detailed, potentially multi-line, description of the service.", "title": "Description" }, "startup": { "anyOf": [ { "enum": [ "enabled", "disabled" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Whether the service is enabled automatically when the rock starts.", "title": "Startup" }, "after": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The names of other services that this service should start after.", "title": "After" }, "before": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The names of other services that this service should start before.", "title": "Before" }, "requires": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The names of other services that this service requires in order to start.", "title": "Requires" }, "environment": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "default": null, "description": "Environment variables to set for this process.", "title": "Environment" }, "user": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Run the service as this user.", "title": "User" }, "user-id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Run the service with this user ID.", "title": "User-Id" }, "group": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Run the service as this group.", "title": "Group" }, "group-id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Run the service with this group ID.", "title": "Group-Id" }, "working-dir": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Working directory for the service command.", "title": "Working-Dir" }, "on-success": { "anyOf": [ { "$ref": "#/$defs/SuccessExitState" }, { "type": "null" } ], "default": null, "description": "What to do when the service exits with success." }, "on-failure": { "anyOf": [ { "$ref": "#/$defs/FailureExitState" }, { "type": "null" } ], "default": null, "description": "What to do when the service exits with an error." }, "on-check-failure": { "anyOf": [ { "additionalProperties": { "$ref": "#/$defs/FailureExitState" }, "type": "object" }, { "type": "null" } ], "default": null, "description": "What to do when a health check fails.", "title": "On-Check-Failure" }, "backoff-delay": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Initial backoff delay for the 'restart' exit action.", "examples": [ "500ms", "10s" ], "title": "Backoff-Delay" }, "backoff-factor": { "anyOf": [ { "minimum": 1.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Multiplication factor for backoff delay.", "examples": [ "2.0", "1.000001" ], "title": "Backoff-Factor" }, "backoff-limit": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Maximum backoff delay.", "examples": [ "30s", "1m" ], "title": "Backoff-Limit" }, "kill-delay": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "How long to wait after a SIGTERM and exit pebble uses SIGKILL.", "examples": [ "10s", "1m" ], "title": "Kill-Delay" } }, "required": [ "override", "command" ], "title": "Service", "type": "object" }, "SuccessExitState": { "description": "What to do on exit success.", "enum": [ "restart", "shutdown", "failure-shutdown", "ignore" ], "title": "SuccessExitState", "type": "string" }, "TcpCheck": { "additionalProperties": false, "description": "Model for a check that uses TCP.", "properties": { "override": { "description": "How this check is combined with another same-named check.", "enum": [ "merge", "replace" ], "title": "Override", "type": "string" }, "level": { "anyOf": [ { "enum": [ "alive", "ready" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Check level, used for filtering checks when calling the health endpoint.", "title": "Level" }, "period": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "How frequently to run this check.", "examples": [ "10s", "30m" ], "title": "Period" }, "timeout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The time before the check fails if not completed. Must be less than ``period``.", "examples": [ "5s", "2m" ], "title": "Timeout" }, "threshold": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of consecutive errors before the check is considered failed.", "title": "Threshold" }, "tcp": { "$ref": "#/$defs/TcpCheckOptions" } }, "required": [ "override", "tcp" ], "title": "TcpCheck", "type": "object" }, "TcpCheckOptions": { "additionalProperties": false, "description": "Lightweight schema validation for a Pebble TCP check.", "properties": { "port": { "description": "The TCP port to check is open.", "maximum": 65535, "minimum": 1, "title": "Port", "type": "integer" }, "host": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The hostname or IP address to check. Defaults to 'localhost'.", "examples": [ "localhost", "::1", "127.0.0.1" ], "title": "Host" } }, "required": [ "port" ], "title": "TcpCheckOptions", "type": "object" }, "Part": { "description": "The part specification data.", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "title": "PartSpec", "type": "object", "allOf": [ { "if": { "properties": { "plugin": { "const": "dump" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "nil" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "ant" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "ant-build-targets": { "default": [], "items": { "type": "string" }, "title": "Ant-Build-Targets", "type": "array" }, "ant-build-file": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Ant-Build-File" }, "ant-properties": { "additionalProperties": { "type": "string" }, "default": {}, "title": "Ant-Properties", "type": "object" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "autotools" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "autotools-configure-parameters": { "default": [], "items": { "type": "string" }, "title": "Autotools-Configure-Parameters", "type": "array" }, "autotools-bootstrap-parameters": { "default": [], "items": { "type": "string" }, "title": "Autotools-Bootstrap-Parameters", "type": "array" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "cargo-use" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "cmake" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "cmake-parameters": { "default": [], "items": { "type": "string" }, "title": "Cmake-Parameters", "type": "array" }, "cmake-generator": { "default": "Unix Makefiles", "title": "Cmake-Generator", "type": "string" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "dotnet" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "dotnet-build-configuration": { "default": "Release", "title": "Dotnet-Build-Configuration", "type": "string" }, "dotnet-self-contained-runtime-identifier": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Dotnet-Self-Contained-Runtime-Identifier" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "go" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "go-buildtags": { "default": [], "items": { "type": "string" }, "title": "Go-Buildtags", "type": "array" }, "go-generate": { "default": [], "items": { "type": "string" }, "title": "Go-Generate", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "go-use" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "gradle" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "gradle-init-script": { "default": "", "title": "Gradle-Init-Script", "type": "string" }, "gradle-parameters": { "default": [], "items": { "type": "string" }, "title": "Gradle-Parameters", "type": "array" }, "gradle-task": { "default": "build", "title": "Gradle-Task", "type": "string" }, "gradle-use-daemon": { "default": false, "title": "Gradle-Use-Daemon", "type": "boolean" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "jlink" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "jlink-jars": { "default": [], "items": { "type": "string" }, "title": "Jlink-Jars", "type": "array" }, "jlink-extra-modules": { "default": [], "items": { "type": "string" }, "title": "Jlink-Extra-Modules", "type": "array" }, "jlink-modules": { "default": [], "items": { "type": "string" }, "title": "Jlink-Modules", "type": "array" }, "jlink-multi-release": { "anyOf": [ { "type": "integer" }, { "type": "string" } ], "default": "base", "title": "Jlink-Multi-Release" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "make" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "make-parameters": { "default": [], "items": { "type": "string" }, "title": "Make-Parameters", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "maven" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "maven-parameters": { "default": [], "items": { "type": "string" }, "title": "Maven-Parameters", "type": "array" }, "maven-use-wrapper": { "default": false, "title": "Maven-Use-Wrapper", "type": "boolean" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "maven-use" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "maven-use-parameters": { "default": [], "items": { "type": "string" }, "title": "Maven-Use-Parameters", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "meson" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "meson-parameters": { "default": [], "items": { "type": "string" }, "title": "Meson-Parameters", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "npm" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "npm-include-node": { "default": false, "title": "Npm-Include-Node", "type": "boolean" }, "npm-node-version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Npm-Node-Version" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "poetry" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "poetry-with": { "description": "dependency groups to include. By default, only the main dependencies are included.", "items": { "type": "string" }, "title": "Dependency groups to include", "type": "array", "uniqueItems": true }, "poetry-export-extra-args": { "description": "extra arguments to pass to poetry export when creating requirements.txt.", "items": { "type": "string" }, "title": "Extra arguments for poetry export", "type": "array" }, "poetry-pip-extra-args": { "description": "extra arguments to pass to pip install installing dependencies.", "items": { "type": "string" }, "title": "Extra arguments for pip install", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "python" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "python-requirements": { "default": [], "items": { "type": "string" }, "title": "Python-Requirements", "type": "array" }, "python-constraints": { "default": [], "items": { "type": "string" }, "title": "Python-Constraints", "type": "array" }, "python-packages": { "default": [ "pip", "setuptools", "wheel" ], "items": { "type": "string" }, "title": "Python-Packages", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "qmake" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "qmake-parameters": { "default": [], "items": { "type": "string" }, "title": "Qmake-Parameters", "type": "array" }, "qmake-project-file": { "default": "", "title": "Qmake-Project-File", "type": "string" }, "qmake-major-version": { "default": 5, "title": "Qmake-Major-Version", "type": "integer" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "ruby" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "ruby-gems": { "default": [], "items": { "type": "string" }, "title": "Ruby-Gems", "type": "array" }, "ruby-use-bundler": { "default": false, "title": "Ruby-Use-Bundler", "type": "boolean" }, "ruby-flavor": { "anyOf": [ { "$ref": "#/$defs/RubyFlavor" }, { "type": "null" } ], "default": null }, "ruby-version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Ruby-Version" }, "ruby-use-jemalloc": { "default": false, "title": "Ruby-Use-Jemalloc", "type": "boolean" }, "ruby-shared": { "default": false, "title": "Ruby-Shared", "type": "boolean" }, "ruby-configure-options": { "default": [], "items": { "type": "string" }, "title": "Ruby-Configure-Options", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "rust" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "rust-features": { "default": [], "items": { "type": "string" }, "title": "Rust-Features", "type": "array" }, "rust-path": { "default": [ "." ], "items": { "type": "string" }, "title": "Rust-Path", "type": "array" }, "rust-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Rust-Channel" }, "rust-use-global-lto": { "default": false, "title": "Rust-Use-Global-Lto", "type": "boolean" }, "rust-no-default-features": { "default": false, "title": "Rust-No-Default-Features", "type": "boolean" }, "rust-ignore-toolchain-file": { "default": false, "title": "Rust-Ignore-Toolchain-File", "type": "boolean" }, "rust-cargo-parameters": { "default": [], "items": { "type": "string" }, "title": "Rust-Cargo-Parameters", "type": "array" }, "rust-inherit-ldflags": { "default": false, "title": "Rust-Inherit-Ldflags", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "scons" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "scons-parameters": { "default": [], "items": { "type": "string" }, "title": "Scons-Parameters", "type": "array" }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } }, { "if": { "properties": { "plugin": { "const": "uv" } } }, "then": { "$comment": "common properties had to be repeated here or they would be considered invalid by the schema validator otherwise", "properties": { "plugin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The plugin to build the part with.", "examples": [ "python", "dump" ], "title": "Plugin", "enum": [ "dump", "nil", "ant", "autotools", "cargo-use", "cmake", "dotnet", "go", "go-use", "gradle", "jlink", "make", "maven", "maven-use", "meson", "npm", "poetry", "python", "qmake", "ruby", "rust", "scons", "uv" ] }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The location of the source files for the part.", "examples": [ ".", "https://github.com/canonical/dqlite" ], "title": "Source" }, "uv-extras": { "description": "Optional extra dependencies to include when installing.", "items": { "type": "string" }, "title": "Optional extra dependencies", "type": "array", "uniqueItems": true }, "uv-groups": { "description": "Optional dependency groups to include when installing.", "items": { "type": "string" }, "title": "Optional dependency groups", "type": "array", "uniqueItems": true }, "source-checksum": { "default": "", "description": "The checksum of the downloaded source, to ensure integrity.", "examples": [ "sha256/1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7" ], "title": "Source-Checksum", "type": "string" }, "source-channel": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source-Channel" }, "source-branch": { "default": "", "description": "The target branch for Git sources.", "examples": [ "main", "hotfix/2.10" ], "title": "Source-Branch", "type": "string" }, "source-commit": { "default": "", "description": "The target commit for Git sources.", "examples": [ "36086af03fc4941a8ac219648ce77401743f3ae0" ], "title": "Source-Commit", "type": "string" }, "source-depth": { "default": 0, "description": "The commit depth to fetch for Git sources.", "examples": [ "1" ], "title": "Source-Depth", "type": "integer" }, "source-subdir": { "default": "", "description": "The subdirectory of the unpacked source where the build will occur.", "examples": [ "src", "demo_nodes_cpp" ], "title": "Source-Subdir", "type": "string" }, "source-submodules": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The registered submodules to fetch from Git sources.", "examples": [ "[third_party/googletest, third_party/jsoncpp]", "[libbpf]" ], "title": "Source-Submodules" }, "source-tag": { "default": "", "description": "The target tag for Git sources.", "examples": [ "1.0.1" ], "title": "Source-Tag", "type": "string" }, "source-type": { "default": "", "description": "The format of the part's source.", "examples": [ "git", "local" ], "title": "Source-Type", "type": "string" }, "disable-parallel": { "default": false, "description": "Whether to disable CPU multithreading during the build step.", "examples": [ "true" ], "title": "Disable-Parallel", "type": "boolean" }, "after": { "default": [], "description": "The parts to process before starting this part's build.", "examples": [ "[build-deps, daemon]" ], "items": { "type": "string" }, "title": "After", "type": "array" }, "overlay-packages": { "default": [], "description": "The packages to install in the part's layer.", "examples": [ "[ed]" ], "items": { "type": "string" }, "title": "Overlay-Packages", "type": "array" }, "stage-snaps": { "default": [], "description": "The snaps to include in the stage environment.", "examples": [ "[go/1.17, chisel/latest/candidate, mir-kiosk-x11]" ], "items": { "type": "string" }, "title": "Stage-Snaps", "type": "array" }, "stage-packages": { "default": [], "description": "The packages or Chisel slices to include in the stage environment.", "examples": [ "[curl, libxml2]" ], "items": { "type": "string" }, "title": "Stage-Packages", "type": "array" }, "build-snaps": { "default": [], "description": "The snaps to install in the build environment.", "examples": [ "[go/latest/stable, node/stable]" ], "items": { "type": "string" }, "title": "Build-Snaps", "type": "array" }, "build-packages": { "default": [], "description": "The packages to install in the build environment.", "examples": [ "[git, libffi-dev, libssl-dev]" ], "items": { "type": "string" }, "title": "Build-Packages", "type": "array" }, "build-environment": { "default": [], "description": "The environment variables to define for the build step, as key-value pairs.", "examples": [ "[{MESSAGE: \"Hello world!\"}, {NAME: \"Craft Parts\"}]" ], "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "title": "Build-Environment", "type": "array" }, "build-attributes": { "default": [], "description": "Identifiers that control specific behaviors during the build.", "examples": [ "[enable-usrmerge]", "[disable-usrmerge]" ], "items": { "type": "string" }, "title": "Build-Attributes", "type": "array" }, "organize": { "additionalProperties": { "type": "string" }, "description": "A map of files from the build directory to their destinations in the stage directory.", "examples": [ "{hello.py: bin/hello}" ], "title": "Organize", "type": "object" }, "overlay": { "description": "The files to copy from the part's layer to the stage directory.", "examples": [ "[bin, usr/bin]", "[-etc/cloud/cloud.cfg.d/90_dpkg.cfg]" ], "items": { "type": "string" }, "title": "Overlay", "type": "array" }, "stage": { "description": "The files to copy from the build directory to the stage directory.", "examples": [ "[usr/bin/*, usr/share]", "[-usr, zfsutils-linux]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Stage", "type": "array" }, "prime": { "description": "", "examples": [ "[usr/lib/*/qt6/plugins/tls/*, -usr/share/thumbnailers]" ], "items": { "description": "relative path", "minLength": 1, "type": "string" }, "title": "Prime", "type": "array" }, "override-pull": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the pull step.", "examples": [ "|\n craftctl default\n rm $CRAFT_PART_SRC/pyproject.toml" ], "title": "Override-Pull" }, "overlay-script": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run after the part's overlay packages are installed.", "examples": [ "|\n rm -f ${CRAFT_OVERLAY}/usr/bin/vi ${CRAFT_OVERLAY}/usr/bin/vim*\n rm -f ${CRAFT_OVERLAY}/usr/bin/emacs*\n rm -f ${CRAFT_OVERLAY}/bin/nano" ], "title": "Overlay-Script" }, "override-build": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the build step.", "examples": [ "|\n cd cmd/webhook\n mkdir $CRAFT_PART_INSTALL/ko-app\n go build -o $CRAFT_PART_INSTALL/ko-app/webhook -a ." ], "title": "Override-Build" }, "override-stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the stage step.", "examples": [ "|\n craftctl default\n chown -R 499 \"${CRAFT_PART_INSTALL}/entrypoint.sh\"" ], "title": "Override-Stage" }, "override-prime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The commands to run instead of the default behavior of the prime step.", "examples": [ "|\n craftctl default\n mkdir -p $CRAFT_PRIME/var/lib/mysql\n mkdir -p $CRAFT_PRIME/var/lib/mysqld" ], "title": "Override-Prime" }, "permissions": { "default": [], "description": "The ownership and permission settings for a set of files in the part's prime directory.", "examples": [ "[{owner: 2000, group: 2000}, {path: srv/indico/start-indico.sh, mode: \"544\"}, {path: etc/, mode: \"755\"}]" ], "items": { "$ref": "#/$defs/Permissions" }, "title": "Permissions", "type": "array" } }, "additionalProperties": false } } ] }, "Permissions": { "description": "Description of the ownership and permission settings for a set of files.\n\nA ``Permissions`` object specifies that a given pattern-like ``path`` should\nbe owned by ``owner`` with a given ``group``, and have the read/write/execute\nbits defined by ``mode``.\n\nNotes\n-----\n- ``path`` is optional and defaults to \"everything\";\n- ``owner`` and ``group`` are optional if both are omitted - that is, if\n one of the pair is specified then both must be;\n- ``mode`` is a string containing an integer in base 8. For example, \"755\",\n \"0755\" and \"0o755\" are all accepted and are the equivalent of calling\n ``chmod 755 ...``.", "properties": { "path": { "default": "*", "description": "The file path, relative to the prime directory, being assigned permissions.", "title": "Path", "type": "string" }, "owner": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The numeric user ID (UID) of the desired owner on the host system.", "title": "Owner" }, "group": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The numeric group (GID) of the desired owner group on the host system.", "title": "Group" }, "mode": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The numeric representation of the file's read, write, and execute permissions.", "title": "Mode" } }, "title": "Permissions", "type": "object" }, "RubyFlavor": { "description": "All Ruby implementations supported by ruby-install.", "enum": [ "ruby", "jruby", "truffleruby", "mruby" ], "title": "RubyFlavor", "type": "string" } }, "additionalProperties": false, "description": "Rockcraft project definition.", "properties": { "name": { "description": "The name of the project. This is used when uploading, publishing, or installing.\n\nThe project name must consist only of lower-case ASCII letters (``a``-``z``), numerals\n(``0``-``9``), and hyphens (``-``). It must contain at least one letter, not start or\nend with a hyphen, and not contain two consecutive hyphens. The maximum length is 40\ncharacters.\n", "examples": [ "ubuntu", "jupyterlab-desktop", "lxd", "digikam", "kafka", "mysql-router-k8s" ], "maxLength": 40, "minLength": 1, "title": "Project Name", "type": "string" }, "title": { "anyOf": [ { "description": "A human-readable title.", "examples": [ "Ubuntu Linux", "Jupyter Lab Desktop", "LXD", "DigiKam", "Apache Kafka", "MySQL Router K8s charm" ], "maxLength": 40, "minLength": 2, "title": "Title", "type": "string" }, { "type": "null" } ], "default": null, "title": "Title" }, "version": { "anyOf": [ { "description": "The version of the project, enclosed in quotation marks.", "examples": [ "\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\"" ], "maxLength": 32, "title": "version string", "type": "string" }, { "type": "null" } ], "default": null, "title": "Version" }, "summary": { "description": "A short, single line description of the rock.", "title": "Summary", "type": "string" }, "description": { "description": "A full description of the rock, potentially including multiple paragraphs.", "title": "Description", "type": "string" }, "base": { "description": "The base system image for the rock.", "enum": [ "bare", "ubuntu@20.04", "ubuntu@22.04", "ubuntu@24.04", "ubuntu@25.10", "ubuntu@26.04" ], "title": "Base", "type": "string" }, "build-base": { "anyOf": [ { "enum": [ "ubuntu@20.04", "ubuntu@22.04", "ubuntu@24.04", "ubuntu@25.10", "devel" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "The system used to build the rock.", "title": "Build-Base" }, "platforms": { "additionalProperties": { "oneOf": [ { "type": "null" }, { "$ref": "#/$defs/Platform" } ] }, "description": "Determines which architectures the project builds and runs on.", "examples": [ "{amd64: {build-on: [amd64], build-for: [amd64]}, arm64: {build-on: [amd64, arm64], build-for: [arm64]}}" ], "patternProperties": { "(amd64|arm64|armhf|i386|ppc64el|riscv64|s390x)": { "anyOf": [ { "type": "null" }, { "properties": { "build-on": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ], "title": "Build-On" }, "build-for": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ], "title": "Build-For" } }, "required": [ "build-on" ], "type": "object" } ] } }, "propertyNames": { "description": "The name of this platform. May not contain '/'", "examples": [ "riscv64", "my-special-platform" ], "not": { "enum": [ "*", "any" ] } }, "title": "Platforms", "type": "object" }, "contact": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "uniqueItems": true }, { "type": "null" } ], "default": null, "description": "The author's contact links and email addresses.", "examples": [ "[contact@example.com, https://example.com/contact]" ], "title": "Contact" }, "issues": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "uniqueItems": true }, { "type": "null" } ], "default": null, "description": "The links and email addresses for submitting issues, bugs, and feature requests.", "examples": [ "[issues@example.com, https://example.com/issues]" ], "title": "Issues" }, "source-code": { "anyOf": [ { "format": "uri", "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "description": "The links to the source code of the project.", "examples": [ "[https://github.com/canonical/craft-application]" ], "title": "Source-Code" }, "license": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The project's license as an SPDX expression", "examples": [ "GPL-3.0+", "Apache-2.0" ], "title": "License" }, "adopt-info": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Selects a part to inherit metadata from.", "examples": [ "foo-part" ], "title": "Adopt-Info" }, "parts": { "additionalProperties": { "$ref": "#/$defs/Part" }, "description": "The self-contained software pieces needed to create the final artifact.", "examples": [ "{cloud-init: {plugin: python, source-type: git, source: https://git.launchpad.net/cloud-init}}" ], "title": "Parts", "type": "object" }, "package-repositories": { "anyOf": [ { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The package repositories to use for build and stage packages.", "examples": [ "[{type: apt, components: [main], suites: [xenial], key-id: 78E1918602959B9C59103100F1831DDAFC42E99D, url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu}]" ], "title": "Package-Repositories" }, "environment": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "default": null, "description": "Additional environment variables for the base image's OCI environment.", "title": "Environment" }, "run-user": { "anyOf": [ { "const": "_daemon_", "type": "string" }, { "type": "null" } ], "default": null, "description": "The default OCI user. If unset, runs as root.", "title": "Run-User" }, "services": { "anyOf": [ { "additionalProperties": { "$ref": "#/$defs/Service" }, "type": "object" }, { "type": "null" } ], "default": null, "description": "Services to run in the rock, using Pebble's layer specification syntax.", "title": "Services" }, "checks": { "anyOf": [ { "additionalProperties": { "oneOf": [ { "$ref": "#/$defs/HttpCheck" }, { "$ref": "#/$defs/TcpCheck" }, { "$ref": "#/$defs/ExecCheck" } ] }, "type": "object" }, { "type": "null" } ], "default": null, "description": "Health checks for this rock.", "title": "Checks" }, "entrypoint-service": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The optional name of the Pebble service to serve as the entrypoint.", "examples": [ "my-service" ], "title": "Entrypoint-Service" }, "entrypoint-command": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Overrides the rock's default Pebble OCI entrypoint and CMD properties.", "examples": [ "echo [ Hello ]" ], "title": "Entrypoint-Command" } }, "required": [ "name", "summary", "description", "base", "platforms", "parts" ], "title": "Rockcraft project", "type": "object" }