def load_environment(args: argparse.Namespace) -> dict[str, str]:
env = {
"SYSTEMD_TMPFILES_FORCE_SUBVOL": "0",
- "KERNEL_INSTALL_BYPASS": "1",
- "SYSTEMD_HWDB_UPDATE_BYPASS": "1",
"TERM": finalize_term(),
}
def scripts(cls, context: Context) -> dict[str, list[PathString]]:
return {}
+ @classmethod
+ def finalize_environment(cls, context: Context) -> dict[str, str]:
+ env = {
+ "HOME": "/", # Make sure rpm doesn't pick up ~/.rpmmacros and ~/.rpmrc.
+ }
+
+ if "SYSTEMD_HWDB_UPDATE_BYPASS" not in context.config.environment:
+ env["SYSTEMD_HWDB_UPDATE_BYPASS"] = "1"
+
+ if (
+ "KERNEL_INSTALL_BYPASS" not in context.config.environment and
+ context.config.bootable != ConfigFeature.disabled
+ ):
+ env["KERNEL_INSTALL_BYPASS"] = "1"
+
+ return env
+
@classmethod
def mounts(cls, context: Context) -> list[Mount]:
mounts = [
from pathlib import Path
from typing import NamedTuple, Optional
-from mkosi.config import Config
+from mkosi.config import Config, ConfigFeature
from mkosi.context import Context
from mkosi.installer import PackageManager
from mkosi.log import die
for repo in repos:
f.write(str(repo))
+ @classmethod
+ def finalize_environment(cls, context: Context) -> dict[str, str]:
+ env = {
+ "APT_CONFIG": "/etc/apt.conf",
+ "DEBIAN_FRONTEND" : "noninteractive",
+ "DEBCONF_INTERACTIVE_SEEN": "true",
+ }
+
+ if "INITRD" not in context.config.environment and context.config.bootable != ConfigFeature.disabled:
+ env["INITRD"] = "No"
+
+ return super().finalize_environment(context) | env
+
@classmethod
def cmd(cls, context: Context, command: str) -> list[PathString]:
debarch = context.config.distribution.architecture(context.config.architecture)
cmdline: list[PathString] = [
"env",
- "APT_CONFIG=/etc/apt.conf",
- "DEBIAN_FRONTEND=noninteractive",
- "DEBCONF_INTERACTIVE_SEEN=true",
- "INITRD=No",
+ *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()]),
command,
"-o", f"APT::Architecture={debarch}",
"-o", f"APT::Architectures={debarch}",
cmdline: list[PathString] = [
"env",
- "HOME=/", # Make sure rpm doesn't pick up ~/.rpmmacros and ~/.rpmrc.
+ *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()]),
dnf,
"--assumeyes",
"--best",
@classmethod
def cmd(cls, context: Context) -> list[PathString]:
return [
+ "env",
+ *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()]),
"pacman",
"--root=/buildroot",
"--logfile=/dev/null",
f.write("\n")
+ @classmethod
+ def finalize_environment(cls, context: Context) -> dict[str, str]:
+ return super().finalize_environment(context) | {"ZYPP_CONF": "/etc/zypp/zypp.conf"}
+
@classmethod
def cmd(cls, context: Context) -> list[PathString]:
return [
"env",
- "ZYPP_CONF=/etc/zypp/zypp.conf",
- "HOME=/",
+ *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()]),
"zypper",
"--installroot=/buildroot",
"--cache-dir=/var/cache/zypp",