diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 664432e88..6c37d454c 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -295,6 +295,9 @@ def install_distribution(context: Context) -> None: context, context.config.packages ) + with complete_step(f"Finalizing {context.config.distribution.pretty_name()}"): + context.config.distribution.finalize(context) + for f in ( "var/lib/systemd/random-seed", "var/lib/systemd/credential.secret", diff --git a/mkosi/distributions/__init__.py b/mkosi/distributions/__init__.py index 381becc29..9a7bac688 100644 --- a/mkosi/distributions/__init__.py +++ b/mkosi/distributions/__init__.py @@ -42,6 +42,10 @@ def setup(cls, context: "Context") -> None: def install(cls, context: "Context") -> None: raise NotImplementedError + @classmethod + def finalize(cls, context: "Context") -> None: + raise NotImplementedError + @classmethod def filesystem(cls) -> str: return "ext4" @@ -127,6 +131,9 @@ def setup(self, context: "Context") -> None: def install(self, context: "Context") -> None: return self.installer().install(context) + def finalize(self, context: "Context") -> None: + return self.installer().finalize(context) + def filesystem(self) -> str: return self.installer().filesystem() diff --git a/mkosi/distributions/arch.py b/mkosi/distributions/arch.py index 8373306a7..72d377b91 100644 --- a/mkosi/distributions/arch.py +++ b/mkosi/distributions/arch.py @@ -63,6 +63,10 @@ def setup(cls, context: Context) -> None: def install(cls, context: Context) -> None: Pacman.install(context, ["filesystem"], apivfs=False) + @classmethod + def finalize(cls, context: Context) -> None: + pass + @classmethod def repositories(cls, context: Context) -> Iterable[PacmanRepository]: if context.config.local_mirror: diff --git a/mkosi/distributions/centos.py b/mkosi/distributions/centos.py index 9144b12fa..b6033da29 100644 --- a/mkosi/distributions/centos.py +++ b/mkosi/distributions/centos.py @@ -79,6 +79,10 @@ def setup(cls, context: Context) -> None: def install(cls, context: Context) -> None: Dnf.install(context, ["basesystem"], apivfs=False) + @classmethod + def finalize(cls, context: Context) -> None: + pass + @classmethod def architecture(cls, arch: Architecture) -> str: a = { diff --git a/mkosi/distributions/custom.py b/mkosi/distributions/custom.py index 8c36cfdec..c10978f3e 100644 --- a/mkosi/distributions/custom.py +++ b/mkosi/distributions/custom.py @@ -27,3 +27,7 @@ def setup(cls, context: Context) -> None: @classmethod def install(cls, context: Context) -> None: pass + + @classmethod + def finalize(cls, context: Context) -> None: + pass diff --git a/mkosi/distributions/debian.py b/mkosi/distributions/debian.py index 4ceec90da..ac8c4f9c4 100644 --- a/mkosi/distributions/debian.py +++ b/mkosi/distributions/debian.py @@ -189,6 +189,8 @@ def install(cls, context: Context) -> None: fixup_os_release(context) + @classmethod + def finalize(cls, context: Context) -> None: if ( "apt" in itertools.chain(context.config.packages, context.config.volatile_packages) or (context.root / "usr/bin/apt").exists() diff --git a/mkosi/distributions/fedora.py b/mkosi/distributions/fedora.py index 833e820e2..0f31e9052 100644 --- a/mkosi/distributions/fedora.py +++ b/mkosi/distributions/fedora.py @@ -130,6 +130,10 @@ def setup(cls, context: Context) -> None: def install(cls, context: Context) -> None: Dnf.install(context, ["basesystem"], apivfs=False) + @classmethod + def finalize(cls, context: Context) -> None: + pass + @classmethod def repositories(cls, context: Context) -> Iterable[RpmRepository]: gpgurls = find_fedora_rpm_gpgkeys(context) diff --git a/mkosi/distributions/opensuse.py b/mkosi/distributions/opensuse.py index e959cfbd6..99549084a 100644 --- a/mkosi/distributions/opensuse.py +++ b/mkosi/distributions/opensuse.py @@ -55,6 +55,10 @@ def setup(cls, context: Context) -> None: def install(cls, context: Context) -> None: cls.package_manager(context.config).install(context, ["filesystem"], apivfs=False) + @classmethod + def finalize(cls, context: Context) -> None: + pass + @classmethod def repositories(cls, context: Context) -> Iterable[RpmRepository]: if context.config.local_mirror: