hpccm.primitives
source package hpccm.primitives
Classes
-
blob — The
blobprimitive inserts a file, without modification, into the corresponding place in the container specification file. If a relative path is specified, the path is relative to current directory. -
comment — The
commentprimitive inserts a comment into the corresponding place in the container specification file. -
copy — The
copyprimitive copies files from the host to the container image. -
environment — The
environmentprimitive sets the corresponding environment variables. Note, for Singularity, this primitive may set environment variables for the container runtime but not for the container build process (see this rationale). See the_exportparameter for more information. -
label — The
labelprimitive sets container metadata. -
raw — The
rawprimitive inserts the specified string, without modification, into the corresponding place in the container specification file. -
runscript — The
runscriptprimitive specifies the commands to be invoked when the container starts. -
shell — The
shellprimitive specifies a series of shell commands to execute. -
user — The
userprimitive sets the user name to use for any subsequent steps. -
workdir — The
workdirprimitive sets the working directory for any subsequent operations. As a side effect, if the directory does not exist, it is created.
class blob(**kwargs)
Bases : object
The blob primitive inserts a file, without modification, into the
corresponding place in the container specification file. If a
relative path is specified, the path is relative to current
directory.
Generally, the blob should be functionally equivalent for each container format.
Wherever possible, the blob primitive should be avoided and other, more portable, operations should be used instead.
Parameters
-
docker — Path to the file containing the Dockerfile blob (Docker specific).
-
singularity — Path to the file containing the Singularity blob (Singularity specific).
Examples
blob(docker='path/to/foo.docker', singularity='path/to/foo.singularity')
class comment(*args, **kwargs)
Bases : object
The comment primitive inserts a comment into the corresponding
place in the container specification file.
Parameters
-
_app — String containing the SCI-F identifier. This also causes the comment to be enclosed in a Singularity block to named
%apphelp(Singularity specific). -
reformat — Boolean flag to specify whether the comment string should be wrapped to fit into lines not exceeding 80 characters. The default is True.
Examples
comment('libfoo version X.Y')
Methods
-
merge — Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact merger.
method comment.merge(lst, _app=None)
Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact merger.
Raises
-
RuntimeError
class copy(**kwargs)
Bases : object
The copy primitive copies files from the host to the container
image.
Parameters
-
_app — String containing the SCI-F identifier. This also causes the Singularity block to named
%appfilesrather than%files(Singularity specific). -
_chown — Set the ownership of the file(s) in the container image (Docker specific).
-
dest — Path in the container image to copy the file(s)
-
_exclude_from — String or list of strings. One or more filenames containing rsync-style exclude patterns (e.g.,
.apptainerignore). Only used when building for Singularity or Apptainer. If specified, the copy operation is emitted in the%setupsection usingrsync --exclude-from=<file>rather than the standard%filescopy directive. This enables selective exclusion of files and directories during the image build, for example to omit large data files, caches, or temporary artifacts. Multiple exclusion files may be provided as a list or tuple. The default is an empty list (Singularity specific). -
files — A dictionary of file pairs, source and destination, to copy into the container image. If specified, has precedence over
destandsrc. -
_from — Set the source location to a previous build stage rather than the host filesystem (Docker specific).
-
_mkdir — Boolean flag specifying that the destination directory should be created in a separate
%setupstep. This can be used to work around the Singularity limitation that the destination directory must exist in the container image prior to copying files into the image. The default is False (Singularity specific). -
_post — Boolean flag specifying that file(s) should be first copied to
/and then moved to the final destination by a%poststep. This can be used to work around the Singularity limitation that the destination must exist in the container image prior to copying files into the image. The default is False (Singularity specific). -
src — A file, or a list of files, to copy
Examples
copy(src='component', dest='/opt/component')
copy(src=['a', 'b', 'c'], dest='/tmp')
copy(files={'a': '/tmp/a', 'b': '/opt/b'})
copy(src='.', dest='/opt/app', _exclude_from='.apptainerignore')
Methods
-
merge — Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact merger.
method copy.merge(lst, _app=None)
Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact merger.
Raises
-
RuntimeError
class environment(**kwargs)
Bases : object
The environment primitive sets the corresponding environment
variables. Note, for Singularity, this primitive may set
environment variables for the container runtime but not for the
container build process (see this
rationale).
See the _export parameter for more information.
Parameters
-
_app — String containing the SCI-F identifier. This also causes the Singularity block to named
%appenvrather than%environment(Singularity specific). -
_export — A Boolean flag to specify whether the environment should also be set for the Singularity build context (Singularity specific). Variables defined in the Singularity
%environmentsection are only defined when the container is run and not for subsequent build steps (unlike the analogous DockerENVinstruction). If this flag is true, then in addition to the%environmentsection, a identical%postsection is generated to export the variables for subsequent build steps. The default value is True. -
variables — A dictionary of key / value pairs. The default is an empty dictionary.
Examples
environment(variables={'PATH': '/usr/local/bin:$PATH'})
Methods
-
merge — Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact merger.
method environment.merge(lst, _app=None)
Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact merger.
Raises
-
RuntimeError
class label(**kwargs)
Bases : object
The label primitive sets container metadata.
Parameters
-
_app — String containing the SCI-F identifier. This also causes the Singularity block to named
%applabelsrather than%labels(Singularity specific). -
metadata — A dictionary of key / value pairs. The default is an empty dictionary.
Examples
label(metadata={'maintainer': 'jane@doe'})
Methods
-
merge — Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact.
method label.merge(lst, _app=None)
Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact.
Raises
-
RuntimeError
class raw(**kwargs)
Bases : object
The raw primitive inserts the specified string, without
modification, into the corresponding place in the container
specification file.
Generally, the string should be functionally equivalent for each container format.
Wherever possible, the raw primitive should be avoided and other, more portable, primitives should be used instead.
Raw primitive
Parameters
-
docker — String containing the Dockerfile instruction (Docker specific).
-
singularity — String containing the Singularity instruction (Singularity specific).
Examples
raw(docker='COPY --from=0 /usr/local/openmpi /usr/local/openmpi',
singularity='# no equivalent to --from')
class runscript(**kwargs)
Bases : object
The runscript primitive specifies the commands to be invoked
when the container starts.
Parameters
-
_args — Boolean flag to specify whether
"$@"should be appended to the command. If more than one command is specified, nothing is appended regardless of the value of this flag. The default is True (Singularity specific). -
_app — String containing the SCI-F identifier. This also causes the Singularity block to named
%apprunrather than%runscript(Singularity specific). -
commands — A list of commands to execute. The default is an empty list.
-
_exec — Boolean flag to specify whether
execshould be inserted to preface the final command. The default is True (Singularity specific).
Examples
runscript(commands=['cd /workdir', 'source env.sh'])
runscript(commands=['/usr/local/bin/entrypoint.sh'])
Methods
-
merge — Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact.
method runscript.merge(lst, _app=None)
Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact.
Raises
-
RuntimeError
class shell(**kwargs)
Bases : object
The shell primitive specifies a series of shell commands to
execute.
Parameters
-
_app — String containing the SCI-F identifier. This also causes the Singularity block to named
%appinstallrather than%post(Singularity specific). -
_appenv — Boolean flag to specify whether the general container environment should be also be loaded when executing a SCI-F
%appinstallblock. The default is False. -
_arguments — Specify additional Dockerfile RUN arguments (Docker specific).
-
chdir — Boolean flag to specify whether to change the working directory to
/before executing any commands. Docker automatically resets the working directory for eachRUNinstruction. Setting this option to True makes Singularity behave the same. This option is ignored for Docker. The default is True. -
commands — A list of commands to execute. The default is an empty list.
-
_test — Boolean flag to specify whether to use
%testinstead of%postand%apptestinstead of%appinstallas the Singularity section headings (Singularity specific).
Examples
shell(commands=['cd /path/to/src', './configure', 'make install'])
# Cache Go packages
shell(_arguments='--mount=type=cache,target=/root/.cache/go-build',
commands=['cd /path/to/go-src', 'go build'])
Methods
-
merge — Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact merger.
method shell.merge(lst, _app=None, _appenv=False, _test=False)
Merge one or more instances of the primitive into a single instance. Due to conflicts or option differences the merged primitive may not be exact merger.
Raises
-
RuntimeError
class user(**kwargs)
Bases : object
The user primitive sets the user name to use for any subsequent
steps.
This primitive is the null operation for Singularity.
Parameters
-
user — The user name to use. The default is an empty string.
Examples
user(user='ncognito')
class workdir(**kwargs)
Bases : object
The workdir primitive sets the working directory for any
subsequent operations. As a side effect, if the directory does
not exist, it is created.
Parameters
-
directory — The directory path.
Examples
workdir(directory='/path/to/directory')