From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6788114222392803328 X-Received: by 2002:adf:dd01:: with SMTP id a1mr976526wrm.153.1584711490759; Fri, 20 Mar 2020 06:38:10 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:fd03:: with SMTP id e3ls105880wrr.0.gmail; Fri, 20 Mar 2020 06:38:10 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvx1vNXf4GeY9wePxU6Vxtvwd30rZFT4DprnEpUdLkG+qkwDaEvjSYzmEuBxVVE8TNCHIHJ X-Received: by 2002:a5d:490e:: with SMTP id x14mr11951167wrq.58.1584711490255; Fri, 20 Mar 2020 06:38:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584711490; cv=none; d=google.com; s=arc-20160816; b=Q6Hi3CAtY1HC6M9VG5etWlLK09K4/sqTBg77mRhROIVKvJYYIWZ12Om4jnPQT1IUpC ky1jLZ8z2jlm/jlVH+a5Z6twHy73mhVtbn4fBSo+hgknqv9rZjFV3UpGu6/rNvmdKfyk VcqpzXgzogr6eiViyPU6LyU1jDEzUuZVONJpw26+3pIpIOvesb2UX6V40Y0341y8ZmAK mnXtFk0jEKmK3YGn/OgKiP60Oru/jS3TMB3xkn3ewL+xwxjrKWYYoFCOTtuOpDhz29eb 75ChPqUIYZC6qSZ337ky0Pno+n0+2zCvJEfORE6Tht2B3FnYtgixWd8FufY94PdLfkaO 5GBQ== 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:to:from; bh=xOFs5NrYHTQ4Iht27ewueNVwMpFA4uq5r6z0YqP82DA=; b=JjiHi6qrBmnbsIXFvHUeJsic1Ku/8soWPvOi83G/3+H4JrayaV6s+5fInY5xjQxyX+ fbXua17hxcUF1JMtUfYY7C3bL7C0hpovWZWMSvfY1bi0v2DSQ/44RzZrKn2zTuE68mGn ZIb2dPku+sHHVLriPoxlE6VblLDobmxwablm6FsIzkuJshXlvD72u3xMTj2CaVd5DRki BmD3Ip7WVg4SL6/1qyeI6gMne801rmoHyiN1jBo+J5LfRb6Ht1NiL1HyfCfDwqqPzqZA RbRP+hfodsnDEtw10teN3E1RjucSueeGvlm06rV/2S7pcCA+H3O36ZPxcGGQnCs5RqIn 2/1w== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 85.214.156.166 is neither permitted nor denied by best guess record for domain of ibr@radix50.net) smtp.mailfrom=ibr@radix50.net Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id y185si205899wmd.2.2020.03.20.06.38.10 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Mar 2020 06:38:10 -0700 (PDT) Received-SPF: neutral (google.com: 85.214.156.166 is neither permitted nor denied by best guess record for domain of ibr@radix50.net) client-ip=85.214.156.166; Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 85.214.156.166 is neither permitted nor denied by best guess record for domain of ibr@radix50.net) smtp.mailfrom=ibr@radix50.net Received: from yssyq.m.ilbers.de (host-80-81-17-52.static.customer.m-online.net [80.81.17.52]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8) with ESMTPSA id 02KDc9Ab001001 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 20 Mar 2020 14:38:09 +0100 Received: from yssyq.m.ilbers.de (localhost [127.0.0.1]) by yssyq.m.ilbers.de (8.15.2/8.15.2/Debian-14~deb10u1) with ESMTPS id 02KDc3H3017524 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Fri, 20 Mar 2020 14:38:03 +0100 Received: (from ibr@localhost) by yssyq.m.ilbers.de (8.15.2/8.15.2/Submit) id 02KDc3YS017523 for isar-users@googlegroups.com; Fri, 20 Mar 2020 14:38:03 +0100 From: Baurzhan Ismagulov To: isar-users@googlegroups.com Subject: [PATCH v6 20/29] meta: repository: implement repo_contains_package and use it in base_apt Date: Fri, 20 Mar 2020 14:38:03 +0100 Message-Id: <20200320133803.17481-1-ibr@radix50.net> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200317090445.12376552@md1za8fc.ad001.siemens.net> References: <20200317090445.12376552@md1za8fc.ad001.siemens.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-TUID: AUA1ENBkZBMz 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 c3ee7b8..8df06f3 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 591ee04..18f020b 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.20.1