dpkg: Use mount bind to import debian packages to sbuild chroot

Message ID 20230120163035.3411051-1-roberto.foglietta@linuxteam.org
State Rejected, archived
Headers show
Series dpkg: Use mount bind to import debian packages to sbuild chroot | expand

Commit Message

roberto.foglietta@linuxteam.org Jan. 20, 2023, 4:30 p.m. UTC
From: "Roberto A. Foglietta" <roberto.foglietta@gmail.com>

dpkg: Use mount bind to import debian packages to sbuild chroot

When building packages, sbuild downloads missing dependencies from
debian mirros. In order to reduce network consuming and have in DL_DIR
every package downloaded by sbuild, we additionally import/export
local debian packages to/from apt cache in schroot upper layer.

Since in order to avoid the copy between package WORKDIR and apt cache
in schroot will use mount bind to share debs to schroot and umount when
sbuild ends

    * --chroot-setup-commands: mount bind
    * --finished-build-commands: umount

This is a propose of a possible alternative to the original patch
of Uladzimir Bely <ubely@ilbers.de> based on symlinks.

Signed-off-by: Roberto A. Foglietta <roberto.foglietta@gmail.com>
---
 meta/classes/dpkg.bbclass | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Patch

diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
index 146f444e..e029fea0 100644
--- a/meta/classes/dpkg.bbclass
+++ b/meta/classes/dpkg.bbclass
@@ -112,9 +112,9 @@  dpkg_runbuild() {
         --chroot-setup-commands="echo \"Package: *\nPin: release n=${DEBDISTRONAME}\nPin-Priority: 1000\" > /etc/apt/preferences.d/isar-apt" \
         --chroot-setup-commands="echo \"APT::Get::allow-downgrades 1;\" > /etc/apt/apt.conf.d/50isar-apt" \
         --chroot-setup-commands="rm -f /var/log/dpkg.log" \
-        --chroot-setup-commands="ln -sf ${ext_deb_dir}/*.deb -t ${deb_dir}/ || :" \
+        --chroot-setup-commands="mount -o bind ${ext_deb_dir} ${deb_dir}" \
         --finished-build-commands="rm -f ${deb_dir}/sbuild-build-depends-main-dummy_*.deb" \
-        --finished-build-commands="cp -Ln --no-preserve=owner ${deb_dir}/*.deb -t ${ext_deb_dir}/ || :" \
+        --finished-build-commands="umount ${deb_dir}" \
         --finished-build-commands="cp /var/log/dpkg.log ${ext_root}/dpkg_partial.log" \
         --debbuildopts="--source-option=-I" ${DPKG_SBUILD_EXTRA_ARGS} \
         --build-dir=${WORKDIR} --dist="isar" ${DSC_FILE}