From: Daan De Meyer Date: Wed, 21 Aug 2024 06:17:51 +0000 (+0200) Subject: apt: Remove mounts argument from invoke() X-Git-Tag: v25~352^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92021490aebae22a71d816e10a65ecafe66a354f;p=thirdparty%2Fmkosi.git apt: Remove mounts argument from invoke() --- diff --git a/mkosi/distributions/debian.py b/mkosi/distributions/debian.py index 25eb9240a..a2a3ddb2e 100644 --- a/mkosi/distributions/debian.py +++ b/mkosi/distributions/debian.py @@ -136,21 +136,21 @@ class Installer(DistributionInstaller): # By configuring Debug::pkgDpkgPm=1, apt-get install will not actually execute any dpkg commands, so # all it does is download the essential debs and tell us their full in the apt cache without actually # installing them. - with tempfile.NamedTemporaryFile(mode="r") as f: - Apt.invoke( - context, - "install", - [ - "-oDebug::pkgDPkgPm=1", - f"-oDPkg::Pre-Install-Pkgs::=cat >{f.name}", - "?essential", - "?exact-name(usr-is-merged)", - "base-files", - ], - mounts=[Mount(f.name, f.name)], - ) + Apt.invoke( + context, + "install", + [ + "-oDebug::pkgDPkgPm=1", + # context.pkgmngr is always mounted writable to /etc so let's use that as a channel to get the list of + # essential packages out of the sandbox. + "-oDPkg::Pre-Install-Pkgs::=cat >/etc/apt/essential", + "?essential", + "?exact-name(usr-is-merged)", + "base-files", + ], + ) - essential = f.read().strip().splitlines() + essential = (context.pkgmngr / "etc/apt/essential").read_text().strip().splitlines() # Now, extract the debs to the chroot by first extracting the sources tar file out of the deb and # then extracting the tar file into the chroot. diff --git a/mkosi/installer/apt.py b/mkosi/installer/apt.py index 59effcb32..7bfdae7fc 100644 --- a/mkosi/installer/apt.py +++ b/mkosi/installer/apt.py @@ -208,7 +208,6 @@ class Apt(PackageManager): arguments: Sequence[str] = (), *, apivfs: bool = False, - mounts: Sequence[Mount] = (), stdout: _FILE = None, ) -> CompletedProcess: return run( @@ -218,7 +217,7 @@ class Apt(PackageManager): binary="apt-get", network=True, vartmp=True, - mounts=[Mount(context.root, "/buildroot"), *cls.mounts(context), *mounts], + mounts=[Mount(context.root, "/buildroot"), *cls.mounts(context)], extra=apivfs_cmd() if apivfs else [] ) ),