context.config.distribution.install_packages(context, context.config.build_packages)
+def install_volatile_packages(context: Context) -> None:
+ if not context.config.volatile_packages:
+ return
+
+ with complete_step(f"Installing volatile packages for {context.config.distribution.pretty_name()}"):
+ context.config.distribution.install_packages(context, context.config.volatile_packages)
+
+
def remove_packages(context: Context) -> None:
"""Remove packages listed in config.remove_packages"""
"--incremental", str(config.incremental),
"--acl", str(config.acl),
*(f"--package={package}" for package in config.initrd_packages),
+ *(f"--volatile-package={package}" for package in config.initrd_volatile_packages),
*(["--package-directory", str(package_dir)] if package_dir else []),
"--output", "initrd",
*(["--image-id", config.image_id] if config.image_id else []),
finalize_staging(context)
return
+ install_volatile_packages(context)
install_build_dest(context)
install_extra_trees(context)
run_postinst_scripts(context)
packages: list[str]
build_packages: list[str]
+ volatile_packages: list[str]
package_directories: list[Path]
with_recommends: bool
with_docs: bool
unified_kernel_images: ConfigFeature
initrds: list[Path]
initrd_packages: list[str]
+ initrd_volatile_packages: list[str]
microcode_host: bool
kernel_command_line: list[str]
kernel_modules_include: list[str]
parse=config_make_list_parser(delimiter=","),
help="Additional packages needed for build scripts",
),
+ ConfigSetting(
+ dest="volatile_packages",
+ long="--volatile-package",
+ metavar="PACKAGE",
+ section="Content",
+ parse=config_make_list_parser(delimiter=","),
+ help="Packages to install after executing build scripts",
+ ),
ConfigSetting(
dest="package_directories",
long="--package-directory",
parse=config_make_list_parser(delimiter=","),
help="Add additional packages to the default initrd",
),
+ ConfigSetting(
+ dest="initrd_volatile_packages",
+ long="--initrd-volatile-package",
+ metavar="PACKAGE",
+ section="Content",
+ parse=config_make_list_parser(delimiter=","),
+ help="Packages to install in the initrd that are not cached",
+ ),
ConfigSetting(
dest="kernel_command_line",
metavar="OPTIONS",
{bold("CONTENT")}:
Packages: {line_join_list(config.packages)}
Build Packages: {line_join_list(config.build_packages)}
+ Volatile Packages: {line_join_list(config.volatile_packages)}
With Documentation: {yes_no(config.with_docs)}
Base Trees: {line_join_list(config.base_trees)}
Shim Bootloader: {config.shim_bootloader}
Initrds: {line_join_list(config.initrds)}
Initrd Packages: {line_join_list(config.initrd_packages)}
+ Initrd Volatile Packages: {line_join_list(config.initrd_volatile_packages)}
Kernel Command Line: {line_join_list(config.kernel_command_line)}
Kernel Modules Include: {line_join_list(config.kernel_modules_include)}
Kernel Modules Exclude: {line_join_list(config.kernel_modules_exclude)}
`mkosi.build` scripts require to operate. Note that packages listed
here will be absent in the final image.
+`VolatilePackages=`, `--volatile-package=`
+
+: Similar to `Packages=`, but packages configured with this setting are
+ not cached when `Incremental=` is enabled and are installed after
+ executing any build scripts.
+
+: Specifically, this setting can be used to install packages that change
+ often or which are built by a build script.
+
`PackageDirectories=`, `--package-directory=`
: Specify directories containing extra packages to be made available during
separated list of package specifications. This option may be used
multiple times in which case the specified package lists are combined.
+`InitrdVolatilePackages=`, `--initrd-volatile-package=`
+
+: Similar to `VolatilePackages=`, except it applies to the default
+ initrd.
+
`MicrocodeHost=`, `--microcode-host=`
: When set to true only include microcode for the host's CPU in the image.
"InitrdPackages": [
"clevis"
],
+ "InitrdVolatilePackages": [
+ "abc"
+ ],
"Initrds": [
"/efi/initrd1",
"/efi/initrd2"
"Type": "file"
},
"VirtualMachineMonitor": "qemu",
+ "VolatilePackages": [
+ "abc"
+ ],
"WithDocs": true,
"WithNetwork": false,
"WithRecommends": true,
incremental = False,
initrd_include = [Path("/foo/bar"),],
initrd_packages = ["clevis"],
+ initrd_volatile_packages = ["abc"],
initrds = [Path("/efi/initrd1"), Path("/efi/initrd2")],
microcode_host=True,
kernel_command_line = [],
verity_certificate = Path("/path/to/cert"),
verity_key = None,
verity_key_source = KeySource(type=KeySource.Type.file),
+ volatile_packages = ["abc"],
with_docs = True,
with_network = False,
with_recommends = True,