public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: "'Benedikt Niedermayr' via isar-users" <isar-users@googlegroups.com>
To: isar-users@googlegroups.com
Cc: felix.moessbauer@siemens.com
Subject: [PATCH 1/1] deb-dl-dir: fix package source download
Date: Wed, 22 Jan 2025 14:49:07 +0100	[thread overview]
Message-ID: <20250122134907.2826754-2-benedikt.niedermayr@siemens.com> (raw)
In-Reply-To: <20250122134907.2826754-1-benedikt.niedermayr@siemens.com>

Some of the packages that are part of the debootstrap base filesystem
were not downloaded when activating "cache-deb-src" via
BASE_REPO_FEATURES.

It seems that some (or all) packages are not listed in
"/var/log/dpkg.log" leading to skip the download of these files.

Package built by using the dpkg-prebuilt.bbclass tend to reference
binary packages without providing any source package reference.
To handle these currently valid cases the download function simply
skips packages that could not be downloaded and prints a warning.

Signed-off-by: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
---
 meta/classes/deb-dl-dir.bbclass | 39 ++++++++++-----------------------
 1 file changed, 11 insertions(+), 28 deletions(-)

diff --git a/meta/classes/deb-dl-dir.bbclass b/meta/classes/deb-dl-dir.bbclass
index 7ebd057e5504..9f6d205894dc 100644
--- a/meta/classes/deb-dl-dir.bbclass
+++ b/meta/classes/deb-dl-dir.bbclass
@@ -5,23 +5,6 @@
 
 inherit repository
 
-is_not_part_of_current_build() {
-    local package="$( dpkg-deb --show --showformat '${Package}' "${1}" )"
-    local arch="$( dpkg-deb --show --showformat '${Architecture}' "${1}" )"
-    local version="$( dpkg-deb --show --showformat '${Version}' "${1}" )"
-    # Since we are parsing all the debs in DEBDIR, we can to some extend
-    # try to eliminate some debs that are not part of the current multiconfig
-    # build using the below method.
-    local output="$( grep -xhs ".* status installed ${package}:${arch} ${version}" \
-            "${IMAGE_ROOTFS}"/var/log/dpkg.log \
-            "${SCHROOT_HOST_DIR}"/var/log/dpkg.log \
-            "${SCHROOT_TARGET_DIR}"/var/log/dpkg.log \
-            "${SCHROOT_HOST_DIR}"/tmp/dpkg_common.log \
-            "${SCHROOT_TARGET_DIR}"/tmp/dpkg_common.log | head -1 )"
-
-    [ -z "${output}" ]
-}
-
 debsrc_do_mounts() {
     sudo -s <<EOSUDO
     set -e
@@ -54,17 +37,17 @@ debsrc_download() {
     ( flock 9
     set -e
     printenv | grep -q BB_VERBOSE_LOGS && set -x
-    find "${rootfs}/var/cache/apt/archives/" -maxdepth 1 -type f -iname '*\.deb' | while read package; do
-        is_not_part_of_current_build "${package}" && continue
-        local src="$( dpkg-deb --show --showformat '${source:Package}' "${package}" )"
-        local version="$( dpkg-deb --show --showformat '${source:Version}' "${package}" )"
-        local dscname="$(echo ${src}_${version} | sed -e 's/_[0-9]\+:/_/')"
-        local dscfile=$(find "${DEBSRCDIR}"/"${rootfs_distro}" -name "${dscname}.dsc")
-        [ -n "$dscfile" ] && continue
-
-        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${rootfs} \
-            sh -c ' mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && apt-get -y --download-only --only-source source "$2"="$3" ' download-src "${rootfs_distro}" "${src}" "${version}"
-    done
+    sudo -E chroot --userspec=$( id -u ):$( id -g ) ${rootfs} \
+        dpkg-query -f '${source:Package} ${source:Version}\n' -W | while read -r src srcver; do
+            ver_stripped=$(echo "$srcver" | sed 's/^[0-9]*://')
+            test -f "${DEBSRCDIR}/${rootfs_distro}/${src}/${src}_${ver_stripped}.dsc" && continue
+
+            # Note: package built by using dpkg-prebuilt are tend to be missing
+            sudo -E chroot --userspec=$( id -u ):$( id -g ) ${rootfs} \
+                sh -c ' mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && apt-get -y --download-only --only-source source "$2"="$3" ' \
+                    download-src "${rootfs_distro}" "${src}" "${srcver}" || \
+                    bbwarn "Failed to download source package ${src}_${srcver}"
+        done
     ) 9>"${DEBSRCDIR}/${rootfs_distro}.lock"
 
     debsrc_undo_mounts "${rootfs}"
-- 
2.34.1

-- 
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20250122134907.2826754-2-benedikt.niedermayr%40siemens.com.

  reply	other threads:[~2025-01-22 13:49 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-22 13:49 [PATCH 0/1] " 'Benedikt Niedermayr' via isar-users
2025-01-22 13:49 ` 'Benedikt Niedermayr' via isar-users [this message]
2025-01-22 14:00   ` [PATCH 1/1] " 'Jan Kiszka' via isar-users
2025-01-22 14:37     ` 'Niedermayr, BENEDIKT' via isar-users

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250122134907.2826754-2-benedikt.niedermayr@siemens.com \
    --to=isar-users@googlegroups.com \
    --cc=benedikt.niedermayr@siemens.com \
    --cc=felix.moessbauer@siemens.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox