flock(context.config.package_cache_dir_or_default() / "cache" / subdir),
flock(context.config.package_cache_dir_or_default() / "lib" / subdir),
):
- context.config.distribution.sync(context)
+ context.config.distribution.package_manager(context.config).sync(context)
def run_sync(args: Args, config: Config, *, resources: Path) -> None:
def createrepo(cls, context: "Context") -> None:
raise NotImplementedError
- @classmethod
- def sync(cls, context: "Context") -> None:
- raise NotImplementedError
-
class Distribution(StrEnum):
# Please consult docs/distribution-policy.md and contact one
def createrepo(self, context: "Context") -> None:
return self.installer().createrepo(context)
- def sync(self, context: "Context") -> None:
- return self.installer().sync(context)
-
def installer(self) -> type[DistributionInstaller]:
modname = str(self).replace('-', '_')
mod = importlib.import_module(f"mkosi.distributions.{modname}")
def setup(cls, context: Context) -> None:
Pacman.setup(context, cls.repositories(context))
- @classmethod
- def sync(cls, context: Context) -> None:
- Pacman.sync(context)
-
@classmethod
def install(cls, context: Context) -> None:
cls.install_packages(context, ["filesystem"], apivfs=False)
(context.pkgmngr / "etc/dnf/vars/stream").write_text(f"{context.config.release}-stream\n")
setup_rpm(context, dbpath=cls.dbpath(context))
- @classmethod
- def sync(cls, context: Context) -> None:
- Dnf.sync(context)
-
@classmethod
def install(cls, context: Context) -> None:
# Make sure glibc-minimal-langpack is installed instead of glibc-all-langpacks.
def setup(cls, context: Context) -> None:
pass
- @classmethod
- def sync(cls, context: Context) -> None:
- pass
-
@classmethod
def install(cls, context: Context) -> None:
pass
def createrepo(cls, context: Context) -> None:
Apt.createrepo(context)
- @classmethod
- def sync(cls, context: Context) -> None:
- Apt.sync(context)
-
@classmethod
def install(cls, context: Context) -> None:
# Instead of using debootstrap, we replicate its core functionality here. Because dpkg does not have
Dnf.setup(context, cls.repositories(context), filelists=False)
setup_rpm(context)
- @classmethod
- def sync(cls, context: Context) -> None:
- Dnf.sync(context)
-
@classmethod
def install(cls, context: Context) -> None:
cls.install_packages(context, ["filesystem"], apivfs=False)
setup_rpm(context)
- @classmethod
- def sync(cls, context: Context) -> None:
- if find_binary("zypper", root=context.config.tools()):
- Zypper.sync(context)
- else:
- Dnf.sync(context)
-
@classmethod
def install(cls, context: Context) -> None:
cls.install_packages(context, ["filesystem", "distribution-release"], apivfs=False)
return mounts
+ @classmethod
+ def sync(cls, context: Context) -> None:
+ pass
+
def clean_package_manager_metadata(context: Context) -> None:
"""