Mount(json, "/work/config.json", ro=True),
Mount(context.root, "/buildroot"),
Mount(context.artifacts, "/work/artifacts"),
+ Mount(context.repository, "/work/packages"),
*context.config.distribution.package_manager(context.config).mounts(context),
],
options=["--dir", "/work/src", "--chdir", "/work/src"],
Mount(context.install_dir, "/work/dest"),
Mount(context.staging, "/work/out"),
Mount(context.artifacts, "/work/artifacts"),
+ Mount(context.repository, "/work/packages"),
*(
[Mount(context.config.build_dir, "/work/build")]
if context.config.build_dir
Mount(context.root, "/buildroot"),
Mount(context.staging, "/work/out"),
Mount(context.artifacts, "/work/artifacts"),
+ Mount(context.repository, "/work/packages"),
*context.config.distribution.package_manager(context.config).mounts(context),
],
options=["--dir", "/work/src", "--chdir", "/work/src"],
Mount(context.root, "/buildroot"),
Mount(context.staging, "/work/out"),
Mount(context.artifacts, "/work/artifacts"),
+ Mount(context.repository, "/work/packages"),
*context.config.distribution.package_manager(context.config).mounts(context),
],
options=["--dir", "/work/src", "--chdir", "/work/src"],
with complete_step("Copying in extra packages…"):
for d in context.config.package_directories:
for p in itertools.chain(*(d.glob(glob) for glob in PACKAGE_GLOBS)):
- shutil.copy(p, context.packages, follow_symlinks=True)
+ shutil.copy(p, context.repository, follow_symlinks=True)
if context.want_local_repo():
with complete_step("Building local package repository"):
context.config,
resources=context.resources,
output_dir=context.workspace,
- package_dir=context.packages,
+ package_dir=context.repository,
)
assert config.output_dir
self.staging.mkdir()
self.pkgmngr.mkdir()
- self.packages.mkdir()
+ self.repository.mkdir()
self.artifacts.mkdir()
self.install_dir.mkdir()
return self.workspace / "pkgmngr"
@property
- def packages(self) -> Path:
- return self.workspace / "packages"
+ def repository(self) -> Path:
+ return self.workspace / "repository"
@property
def artifacts(self) -> Path:
)
def want_local_repo(self) -> bool:
- return any(self.packages.iterdir())
+ return any(self.repository.iterdir())
for deb in essential:
# If a deb path is in the form of "/var/cache/apt/<deb>", we transform it to the corresponding path in
- # mkosi's package cache directory. If it's relative to /work/packages, we transform it to the corresponding
+ # mkosi's package cache directory. If it's relative to /repository, we transform it to the corresponding
# path in mkosi's local package repository. Otherwise, we use the path as is.
if Path(deb).is_relative_to("/var/cache"):
path = context.config.package_cache_dir_or_default() / Path(deb).relative_to("/var")
- elif Path(deb).is_relative_to("/work/packages"):
- path = context.packages / Path(deb).relative_to("/work/packages")
+ elif Path(deb).is_relative_to("/repository"):
+ path = context.repository / Path(deb).relative_to("/repository")
else:
path = Path(deb)
def mounts(cls, context: Context) -> list[Mount]:
mounts = [
*finalize_crypto_mounts(context.config),
- Mount(context.packages, "/work/packages"),
+ Mount(context.repository, "/repository"),
]
if context.config.local_mirror and (mirror := startswith(context.config.local_mirror, "file://")):
@classmethod
def createrepo(cls, context: Context) -> None:
- if not (conf := context.packages / "conf/distributions").exists():
+ if not (conf := context.repository / "conf/distributions").exists():
conf.parent.mkdir(exist_ok=True)
conf.write_text(
textwrap.dedent(
"--ignore=extension",
"includedeb",
"mkosi",
- *(d.name for d in context.packages.glob("*.deb")),
- *(d.name for d in context.packages.glob("*.ddeb")),
+ *(d.name for d in context.repository.glob("*.deb")),
+ *(d.name for d in context.repository.glob("*.ddeb")),
],
sandbox=context.sandbox(
binary="reprepro",
- mounts=[Mount(context.packages, context.packages)],
- options=["--chdir", context.packages],
+ mounts=[Mount(context.repository, context.repository)],
+ options=["--chdir", context.repository],
),
)
"""\
Enabled: yes
Types: deb
- URIs: file:///work/packages
+ URIs: file:///repository
Suites: mkosi
Components: main
Trusted: yes
@classmethod
def createrepo(cls, context: Context) -> None:
- run(["createrepo_c", context.packages],
- sandbox=context.sandbox(binary="createrepo_c", mounts=[Mount(context.packages, context.packages)]))
+ run(["createrepo_c", context.repository],
+ sandbox=context.sandbox(binary="createrepo_c", mounts=[Mount(context.repository, context.repository)]))
(context.pkgmngr / "etc/yum.repos.d/mkosi-local.repo").write_text(
textwrap.dedent(
"""\
[mkosi]
name=mkosi
- baseurl=file:///work/packages
+ baseurl=file:///repository
gpgcheck=0
metadata_expire=never
priority=10
*super().mounts(context),
# pacman writes downloaded packages to the first writable cache directory. We don't want it to write to our
# local repository directory so we expose it as a read-only directory to pacman.
- Mount(context.packages, "/var/cache/pacman/mkosi", ro=True),
+ Mount(context.repository, "/var/cache/pacman/mkosi", ro=True),
]
if (context.root / "var/lib/pacman/local").exists():
[
"repo-add",
"--quiet",
- context.packages / "mkosi.db.tar",
- *sorted(context.packages.glob("*.pkg.tar*"), key=lambda p: GenericVersion(Path(p).name))
+ context.repository / "mkosi.db.tar",
+ *sorted(context.repository.glob("*.pkg.tar*"), key=lambda p: GenericVersion(Path(p).name))
],
- sandbox=context.sandbox(binary="repo-add", mounts=[Mount(context.packages, context.packages)]),
+ sandbox=context.sandbox(binary="repo-add", mounts=[Mount(context.repository, context.repository)]),
)
(context.pkgmngr / "etc/mkosi-local.conf").write_text(
# pacman can't sync a single repository, so we go behind its back and do it ourselves.
shutil.move(
- context.packages / "mkosi.db.tar",
+ context.repository / "mkosi.db.tar",
context.package_cache_dir / "lib/pacman/sync/mkosi.db"
)
@classmethod
def createrepo(cls, context: Context) -> None:
- run(["createrepo_c", context.packages],
- sandbox=context.sandbox(binary="createrepo_c", mounts=[Mount(context.packages, context.packages)]))
+ run(["createrepo_c", context.repository],
+ sandbox=context.sandbox(binary="createrepo_c", mounts=[Mount(context.repository, context.repository)]))
(context.pkgmngr / "etc/zypp/repos.d/mkosi-local.repo").write_text(
textwrap.dedent(
"""\
[mkosi]
name=mkosi
- baseurl=file:///work/packages
+ baseurl=file:///repository
gpgcheck=0
autorefresh=0
keeppackages=0