On Monday, December 16, 2019 at 5:20:15 PM UTC+5:30, Henning Schild wrote: > > From: Henning Schild > > > Hook in between the "apt-get --download-only"s and the "apt-get"s and > copy out all the debs for later. > > Signed-off-by: Henning Schild > > --- > meta/classes/deb-dl-dir.bbclass | 15 +++++++++++++++ > meta/classes/dpkg-base.bbclass | 1 + > meta/classes/dpkg-gbp.bbclass | 1 + > meta/classes/dpkg.bbclass | 1 + > meta/classes/image-locales-extension.bbclass | 2 +- > meta/classes/image-tools-extension.bbclass | 1 + > meta/classes/rootfs.bbclass | 12 ++++++++++-- > meta/conf/bitbake.conf | 1 + > 8 files changed, 31 insertions(+), 3 deletions(-) > create mode 100644 meta/classes/deb-dl-dir.bbclass > > diff --git a/meta/classes/deb-dl-dir.bbclass > b/meta/classes/deb-dl-dir.bbclass > new file mode 100644 > index 0000000..e41e981 > --- /dev/null > +++ b/meta/classes/deb-dl-dir.bbclass > @@ -0,0 +1,15 @@ > +# This software is a part of ISAR. > +# Copyright (C) 2019 Siemens AG > +# > +# SPDX-License-Identifier: MIT > + > +deb_dl_dir_export() { > + export pc="${DEBDIR}/${DISTRO}" > + export rootfs="${1}" > + mkdir -p "${pc}" > + flock "${pc}".lock -c ' \ > + sudo find "${rootfs}"/var/cache/apt/archives/ -type f -iname > '*\.deb' \ > + -exec cp -f '{}' "${pc}" \; > + sudo chown -R $(id -u):$(id -g) "${pc}" > + ' > +} > diff --git a/meta/classes/dpkg-base.bbclass > b/meta/classes/dpkg-base.bbclass > index aa11660..fd0b07f 100644 > --- a/meta/classes/dpkg-base.bbclass > +++ b/meta/classes/dpkg-base.bbclass > @@ -8,6 +8,7 @@ inherit buildchroot > inherit debianize > inherit terminal > inherit repository > +inherit deb-dl-dir > > DEPENDS ?= "" > > diff --git a/meta/classes/dpkg-gbp.bbclass b/meta/classes/dpkg-gbp.bbclass > index 2afe9db..7e908eb 100644 > --- a/meta/classes/dpkg-gbp.bbclass > +++ b/meta/classes/dpkg-gbp.bbclass > @@ -15,6 +15,7 @@ do_install_builddeps_append() { > sudo -E chroot ${BUILDCHROOT_DIR} \ > apt-get install -y -o Debug::pkgProblemResolver=yes \ > --no-install-recommends --download-only > ${GBP_DEPENDS} > + deb_dl_dir_export "${BUILDCHROOT_DIR}" > sudo -E chroot ${BUILDCHROOT_DIR} \ > apt-get install -y -o Debug::pkgProblemResolver=yes \ > --no-install-recommends ${GBP_DEPENDS} > diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass > index b26c645..7e2c86d 100644 > --- a/meta/classes/dpkg.bbclass > +++ b/meta/classes/dpkg.bbclass > @@ -9,6 +9,7 @@ do_install_builddeps() { While testing this series in a downstream project, I do not see a part of KBUILD_DEPENDS cached. We don't have the "linux-custom recipe rework" changes by Cedric there. The old Linux recipe overrides this task with its own variant. I have added deb_dl_* there as well to fix the issue. This might become a problem when more such recipes pop-up. Unlikely, but possible. Recipe authors should know they have to take care of this if they decide to override do_install_builddeps. Thanks, Vijai Kumar K E="${@ isar_export_proxies(d)}" > sudo -E chroot ${BUILDCHROOT_DIR} /isar/deps.sh \ > ${PP}/${PPS} ${DISTRO_ARCH} --download-only > + deb_dl_dir_export "${BUILDCHROOT_DIR}" > sudo -E chroot ${BUILDCHROOT_DIR} /isar/deps.sh \ > ${PP}/${PPS} ${DISTRO_ARCH} > dpkg_undo_mounts > diff --git a/meta/classes/image-locales-extension.bbclass > b/meta/classes/image-locales-extension.bbclass > index 3c0758f..0f0d0ca 100644 > --- a/meta/classes/image-locales-extension.bbclass > +++ b/meta/classes/image-locales-extension.bbclass > @@ -25,7 +25,7 @@ def get_nopurge(d): > j.split()[0].split(".")[0], > j.split()[0])))) > > -ROOTFS_INSTALL_COMMAND_BEFORE_CLEAN += > "image_install_localepurge_download" > +ROOTFS_INSTALL_COMMAND_BEFORE_EXPORT += > "image_install_localepurge_download" > image_install_localepurge_download[weight] = "40" > image_install_localepurge_download() { > sudo -E chroot '${ROOTFSDIR}' \ > diff --git a/meta/classes/image-tools-extension.bbclass > b/meta/classes/image-tools-extension.bbclass > index b8531cb..ec67d94 100644 > --- a/meta/classes/image-tools-extension.bbclass > +++ b/meta/classes/image-tools-extension.bbclass > @@ -34,6 +34,7 @@ do_install_imager_deps() { > --allow-unauthenticated --allow-downgrades --download-only > install \ > ${IMAGER_INSTALL}' > > + deb_dl_dir_export ${BUILDCHROOT_DIR} > sudo -E chroot ${BUILDCHROOT_DIR} sh -c ' \ > apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends > -y \ > --allow-unauthenticated --allow-downgrades install \ > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass > index b4dbfa3..a6b6110 100644 > --- a/meta/classes/rootfs.bbclass > +++ b/meta/classes/rootfs.bbclass > @@ -1,6 +1,8 @@ > # This software is a part of ISAR. > # Copyright (c) Siemens AG, 2019 > > +inherit deb-dl-dir > + > ROOTFS_ARCH ?= "${DISTRO_ARCH}" > ROOTFS_DISTRO ?= "${DISTRO}" > ROOTFS_PACKAGES ?= "" > @@ -119,8 +121,14 @@ rootfs_install_pkgs_download() { > /usr/bin/apt-get ${ROOTFS_APT_ARGS} --download-only > ${ROOTFS_PACKAGES} > } > > -ROOTFS_INSTALL_COMMAND_BEFORE_CLEAN ??= "" > -ROOTFS_INSTALL_COMMAND += "${ROOTFS_INSTALL_COMMAND_BEFORE_CLEAN}" > +ROOTFS_INSTALL_COMMAND_BEFORE_EXPORT ??= "" > +ROOTFS_INSTALL_COMMAND += "${ROOTFS_INSTALL_COMMAND_BEFORE_EXPORT}" > + > +ROOTFS_INSTALL_COMMAND += "rootfs_export_package_cache" > +rootfs_export_package_cache[weight] = "5" > +rootfs_export_package_cache() { > + deb_dl_dir_export ${ROOTFSDIR} > +} > > ROOTFS_INSTALL_COMMAND += "${@ 'rootfs_install_clean_files' if > (d.getVar('ROOTFS_CLEAN_FILES') or '').strip() else ''}" > rootfs_install_clean_files[weight] = "2" > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf > index ab608da..d86c5b9 100644 > --- a/meta/conf/bitbake.conf > +++ b/meta/conf/bitbake.conf > @@ -26,6 +26,7 @@ DEPLOY_DIR = "${TMPDIR}/deploy" > FILE_DIRNAME = "${@os.path.dirname(d.getVar('FILE', False))}" > FILESEXTRAPATHS ?= "__default:" > GITDIR = "${DL_DIR}/git" > +DEBDIR = "${DL_DIR}/deb" > DEBSRCDIR = "${DL_DIR}/deb-src" > P = "${PN}-${PV}" > PF = "${PN}-${PV}-${PR}" > -- > 2.24.1 > >