From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6788114222392803328 X-Received: by 2002:a2e:9605:: with SMTP id v5mr8051214ljh.0.1584779527779; Sat, 21 Mar 2020 01:32:07 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6512:1103:: with SMTP id l3ls1362304lfg.6.gmail; Sat, 21 Mar 2020 01:32:07 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtm7kFv9smh/C8DEK02FBuAZvQj0k8RT0lRJfgEa49miUXiT7ggn46rXtsWBX44+8FRBINO X-Received: by 2002:a05:6512:552:: with SMTP id h18mr382074lfl.48.1584779527113; Sat, 21 Mar 2020 01:32:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584779527; cv=none; d=google.com; s=arc-20160816; b=HPSzdw0WMKaBC7DIlsV8XGKX2IkPxaH0fLvfxZwn58KPW55ADGlL85kJzA1wuZyFgd bYJ8P1uRYhz/EdIMsGfZplYgBvFAt2LXlHZBjSMQ0V0S7xYf41Xk0M6V1dArTGdgVvz5 FApHUMxqnDlpe5cQIKJI8YfKbErE6Nq6Ll72M+uKB5lijvqTos00k9GY/jAa/yekKl0d gOZ8PXFEwgM0BNgqhhVJdAtevjWOaobUZu5W1V5hlhsaFO6CqYayIHRVTGmF8clsyjZk LGqiSGEqM9VPT33p16FexZi5zuys1ptl8Kx5QjSudyamtqLJmE4R1GZ5Z/D65uw5cV5O g/iA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=AaSBedI73GqnvNnvJ5wqU4RvJwT6oH8sbGcpuMRyTko=; b=muCSOQiifQmzvOvCrbRy1IvLt2IktIS+QbRBu7a6af6JuiIZnVuX+QDCRgdFeXbZIj znzbLf2unR1X5/UJ36W3KzOtqMnw8X0j5zKubTRqU2C4K0Qc+dhdQiTOeDQNlr/cyoNE XX0VwpM+zRSOcEJKgPgGU7l87LebGV50GD7ughbH6TQo4ypg8yeR15eh6XhFjRqQu5f5 6LwP4l2ab29ixnwraP9h3anlE2EZXcvhM0HcAjeI0zLPYtLnRb9gI5V5jeiZ3qoTmoYL 9sqmxayxX46JUmJCZw9TOpUy/ty5Bqq6KJH6yC9vW1JcnuQWQ2zTgfCLdyv/4Xrx3+gM 5d3A== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=henning.schild@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from gecko.sbs.de (gecko.sbs.de. [194.138.37.40]) by gmr-mx.google.com with ESMTPS id q17si237045lfe.4.2020.03.21.01.32.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Mar 2020 01:32:07 -0700 (PDT) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 194.138.37.40 as permitted sender) client-ip=194.138.37.40; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=henning.schild@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id 02L8W5dK002921 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 21 Mar 2020 09:32:06 +0100 Received: from localhost.localdomain ([139.22.32.253]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 02L8VuGY021533; Sat, 21 Mar 2020 09:32:05 +0100 From: Henning Schild To: isar-users@googlegroups.com Cc: Vijai Kumar K , Baurzhan Ismagulov , Jan Kiszka , Henning Schild Subject: [PATCHv7 20/29] meta: repository: implement repo_contains_package and use it in base_apt Date: Sat, 21 Mar 2020 09:31:39 +0100 Message-Id: <20200321083148.26160-21-henning.schild@siemens.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200321083148.26160-1-henning.schild@siemens.com> References: <20200321083148.26160-1-henning.schild@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: q5xD5feaRlWK From: Henning Schild Make the lookup and the checksum comparison one function of a repository. That cleans things up and allows for easier reuse. Signed-off-by: Henning Schild --- meta/classes/image-cache-extension.bbclass | 31 ++++++---------------- meta/classes/repository.bbclass | 19 +++++++++++++ 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/meta/classes/image-cache-extension.bbclass b/meta/classes/image-cache-extension.bbclass index c3ee7b83..8df06f38 100644 --- a/meta/classes/image-cache-extension.bbclass +++ b/meta/classes/image-cache-extension.bbclass @@ -7,16 +7,6 @@ inherit repository -compare_pkg_md5sums() { - pkg1=$1 - pkg2=$2 - - md1=$(md5sum $pkg1 | cut -d ' ' -f 1) - md2=$(md5sum $pkg2 | cut -d ' ' -f 1) - - [ "$md1" = "$md2" ] -} - populate_base_apt() { find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do # NOTE: due to packages stored by reprepro are not modified, we can @@ -25,21 +15,16 @@ populate_base_apt() { # same and should not be overwritten. This method is easier and more # robust than querying reprepro by name. - # Check if this package is taken from Isar-apt, if so - ignore it. - base_name=${package##*/} - isar_apt_p=$(find ${REPO_ISAR_DIR}/${DISTRO} -name $base_name) - if [ -n "$isar_apt_p" ]; then - # Check if MD5 sums are identical. This helps to avoid the case - # when packages is overridden from another repo. - compare_pkg_md5sums "$package" "$isar_apt_p" && continue - fi + # Check if this package is taken from Isar-apt, if so - ingore it. + repo_contains_package "${REPO_ISAR_DIR}/${DISTRO}" "${package}" && \ + continue # Check if this package is already in base-apt - base_apt_p=$(find ${REPO_BASE_DIR}/${BASE_DISTRO} -name $base_name) - if [ -n "$base_apt_p" ]; then - compare_pkg_md5sums "$package" "$base_apt_p" && continue - - # md5sum differs, so remove the package from base-apt + ret=0 + repo_contains_package "${REPO_BASE_DIR}/${BASE_DISTRO}" "${package}" || + ret=$? + [ "${ret}" = "0" ] && continue + if [ "${ret}" = "1" ]; then repo_del_package "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \ "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \ "${BASE_DISTRO_CODENAME}" \ diff --git a/meta/classes/repository.bbclass b/meta/classes/repository.bbclass index 591ee04a..18f020bd 100644 --- a/meta/classes/repository.bbclass +++ b/meta/classes/repository.bbclass @@ -81,3 +81,22 @@ repo_del_package() { remove "${codename}" \ "${p}" } + +repo_contains_package() { + local dir="$1" + local file="$2" + local package + + package=$(find ${dir} -name ${file##*/}) + if [ -n "$package" ]; then + local md1=$(md5sum "$package" | cut -d ' ' -f 1) + local md2=$(sudo md5sum "$file" | cut -d ' ' -f 1) + + # yes + [ "${md1}" = "${md2}" ] && return 0 + # yes but not the exact same file + return 1 + fi + # no + return 2 +} -- 2.24.1