# SPDX-FileCopyrightText: no # SPDX-License-Identifier: CC0-1.0 # # Configuration for the shell process job. # # Executes a list of commands found under the key *script*. # If the top-level key *dontChroot* is true, then the commands # are executed in the context of the live system, otherwise # in the context of the target system. In all of the commands, # the following variable expansions will take place: # - `ROOT` is replaced by the root mount point of the **target** # system from the point of view of the command (when run in the target # system, e.g. when *dontChroot* is false, that will be `/`). # - `USER` is replaced by the username, set on the user page. # - `LANG` is replaced by the language chosen for the user-interface # of Calamares, set on the welcome page. This may not reflect the # chosen system language from the locale page. # # As a special case, variables of the form `gs[key]` where `key` is # a dotted-keys string and `gs` is literally the letters `g` and `s`, # use **any** value from Global Storage. For example, # # gs[branding.bootloader] # # This variable refers to the GS value stored in `bootloader` in the # `branding` map. Examine the Debug window for information about the # keys stored in GS. Only strings and integers are exposed this way, # lists and other data types do not set any variable this way. # # Variables are written as `${var}`, e.g. `${ROOT}`. # Write `$$` to get a shell-escaped `\$` in the shell command. # It is not possible to get an un-escaped `$` in the shell command # (either the command will fail because of undefined variables, or # you get a shell-escaped `\$`). # # The (global) timeout for the command list can be set with # the *timeout* key. The value is a time in seconds, default # is 30 seconds if not set. The timeout **must** be tuned, either # globally or per-command (see below in the description of *script*), # to the load or expected running-time of the command. # # - Setting a timeout of 30 for a `touch` command is probably exessive # - Setting a timeout of 1 for a `touch` command might be low, # on a slow disk where touch needs to be loaded from CDROM # - Setting a timeout of 30 for a 1GB download is definitely low # - Setting a timeout of 3600 for a 1GB download is going to leave # the user in uncertainty for a loooong time. # # The (global) verbosity of a command can be set to `true` or `false`. # When set to `true`, command output is logged one line at a time. # Otherwise the output is logged when the command completes. # Line-at-a-time logging is appropriate for commands that take # a long time to complete and produce their own (progress) output. # # If a command starts with "-" (a single minus sign), then the # return value of the command following the - is ignored; otherwise, # a failing command will abort the installation. This is much like # make's use of - in a command. # # The value of *script* may be: # - a single string; this is one command that is executed. # - a single object (see below). # - a list of items; these are executed one at a time, by # separate shells (/bin/sh -c is invoked for each command). # Each list item may be: # - a single string; this is one command that is executed. # - a single object, specifying a key *command* and (optionally) # a key *timeout* to set the timeout for this specific # command differently from the global setting. An optional # key *environment* is a list of strings to put into the # environment of the command. An optional key *verbose* # overrides the global *verbose* setting in this file. # # Using a single object is not generally useful because the same effect # can be obtained with a single string and a global timeout, except # when the command needs environment-settings. When there are # multiple commands to execute, one of them might have # a different timeout than the others. # # The environment strings should all be "KEY='some value'" strings, # as if they can be typed into the shell. Quoting the environment # strings with "" in YAML is recommended. Adding the '' quotes ensures # that the value will not be interpreted by the shell. Writing # environment strings is the same as placing `export KEY='some value' ;` # in front of the *command*. # # Calamares variable expansion is **also** done on the environment strings. # Write `$$` to get a literal `$` in the shell command. # # To change the description of the job, set the *name* entries in *i18n*. --- # Set to true to run in host, rather than target system dontChroot: false # Tune this for the commands you're actually running, or # use the list-of-items form of commands to tune the timeout # for each command individually. timeout: 200 # This will copy the output from the command into the Calamares # log file. No processing is done beyond log-each-line-separately, # so this can introduce weirdness in the log if the script # outputs e.g. escape codes. # # The default is `false`. This can also be set for each # command individually. verbose: false # Script may be a single string (because false returns an error exit # code, this will trigger a failure in the installation): # # script: "/usr/bin/false" # Script may be a list of strings (because false returns an error exit # code, **but** the command starts with a "-", the error exit is # ignored and installation continues): # # script: # - "-/usr/bin/false" # - "/bin/ls" # - "/usr/bin/true" # Script may be a list of items # - if the touch command fails, it is ignored # - there is nothing special about the invocation of true # - the slowloris command has a different timeout from the other commands # - the echo command logs its output line-by-line script: - command: "sh /usr/local/bin/install-sc.sh" verbose: true # You can change the description of the job (as it is displayed in the # progress bar during installation) by defining an *i18n* key, which # has a *name* field and optionally, translations as *name[lang]*. # # Without a translation here, the default name from the source code # is used, "Shell Processes Job". # # i18n: # name: "Shell process" # name[nl]: "Schelpenpad" # name[en_GB]: "Just a moment"