From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6607733288662466560 X-Received: by 2002:a2e:1ce:: with SMTP id f75-v6mr89292lji.11.1539276807374; Thu, 11 Oct 2018 09:53:27 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a19:c10a:: with SMTP id r10-v6ls350222lff.46.gmail; Thu, 11 Oct 2018 09:53:26 -0700 (PDT) X-Google-Smtp-Source: ACcGV60xKXXZy1jKbQHbmgnxkdMouXTHXPQU/49siRx/h/GGE0F31gIPrOVTwoxeayNz9Qv/vkVH X-Received: by 2002:a19:1285:: with SMTP id 5-v6mr85178lfs.11.1539276806919; Thu, 11 Oct 2018 09:53:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539276806; cv=none; d=google.com; s=arc-20160816; b=B1LjtFOlfN5nK2uCW5ae4FmTWJrI6NcDu0oBB8dvceuzO2Z/nBR7fpEj3BLFE4qu94 CjuYhBXj94ndEtXqmBjsFScM3DFGfYyZeZrrZJnxesPu/TZ87CsSIkwpNaHqTmUPFLzS oEMACLAyfBcjpwkS8L59XUEa+rze9yk8U7R64Zg+SI3yTyHYMWx4BYJBnjEjWCG+WguB ufInK1uDAvO86WNYaPKBnoR8iQXPvBmSYcdta4ajQ2wOmLpIybEX80toV9dxwytXeLjH oiUJ2gq3mesWGDHyBq+D4ULwooPpRaO86DQHer4F3hRt7Uk9zybyqVkM0/xqhLpwHqak kdWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:to:from; bh=bqGjrWzD0DrB23ucPMXB1Lxw4S5h4NOmo8bHXTb0fHk=; b=DQgvJoxlNrGtB8Uhp/jPgocnZ32Gn8tW9Pv4lyt37+h2LLW8e1TbOt2GKzM4yTUrel O05Qk0uzydYvsf+1lxYQGicoM4zzUD4WqHbNmX3qK4pGhRSaVdQkololCYYAZv5badNi LFq7Uk8r70glcAdxNuXL2zGG1hJZ7Gxq9M9h6IXHtgA3AMVUqeisX7KZccWhTzKs5qag y7U1CTmdYbId78ivaIhOGfAFiUCUyHg9MtI2FfDAK7PJLsjC9c6BGThalZ8alR4vj6iG /qsDaQDm+grTFAUZ7rMuzUCA/dad7VSgxdcGikxFerm5DGLFIzd84v/Q3bp4S/y5l//i 3uxw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: best guess record for domain of mosipov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=mosipov@ilbers.de Return-Path: Received: from aqmola.ilbers.de (aqmola.ilbers.de. [85.214.62.211]) by gmr-mx.google.com with ESMTPS id a199-v6si1226300lfa.2.2018.10.11.09.53.26 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Oct 2018 09:53:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of mosipov@ilbers.de designates 85.214.62.211 as permitted sender) client-ip=85.214.62.211; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of mosipov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=mosipov@ilbers.de Received: from azat.m.ilbers.de (host-80-81-17-52.static.customer.m-online.net [80.81.17.52]) (authenticated bits=0) by aqmola.ilbers.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id w9BGr67X015654 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Thu, 11 Oct 2018 18:53:25 +0200 From: "Maxim Yu. Osipov" To: isar-users@googlegroups.com Subject: [PATCH v2 01/10] base-apt: Add helper class Date: Thu, 11 Oct 2018 18:52:56 +0200 Message-Id: <20181011165305.1622-2-mosipov@ilbers.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20181011165305.1622-1-mosipov@ilbers.de> References: <20181011165305.1622-1-mosipov@ilbers.de> X-TUID: xTIEHEL3bbNE From: Alexander Smirnov base-apt intended to store original upstream debs to re-use them later offline. This class helps to populate base-apt with the packages used during build. Signed-off-by: Alexander Smirnov Reviewed-by: Claudius Heine Signed-off-by: Maxim Yu. Osipov --- meta-isar/conf/layer.conf | 4 +++ meta/classes/base-apt-helper.bbclass | 54 ++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 meta/classes/base-apt-helper.bbclass diff --git a/meta-isar/conf/layer.conf b/meta-isar/conf/layer.conf index cd42f06..22b2ff2 100644 --- a/meta-isar/conf/layer.conf +++ b/meta-isar/conf/layer.conf @@ -25,3 +25,7 @@ DEPLOY_DIR_APT ?= "${DEPLOY_DIR}/apt" # Path to the Isar databases used by `reprepro` DEPLOY_DIR_DB ?= "${DEPLOY_DIR}/db" + +# Base apt repository paths +REPO_BASE_DIR ?= "${DEPLOY_DIR}/base-apt/apt" +REPO_BASE_DB_DIR ?= "${DEPLOY_DIR}/base-apt/db" diff --git a/meta/classes/base-apt-helper.bbclass b/meta/classes/base-apt-helper.bbclass new file mode 100644 index 0000000..9c03a7e --- /dev/null +++ b/meta/classes/base-apt-helper.bbclass @@ -0,0 +1,54 @@ +# This software is a part of ISAR. +# Copyright (C) 2018 ilbers GmbH + +DISTRO_NAME ?= "${@ d.getVar('DISTRO', True).split('-')[0]}" +DISTRO_SUITE ?= "${@ d.getVar('DISTRO', True).split('-')[1]}" + +populate_base_apt() { + search_dir=$1 + + find $search_dir -name '*.deb' | while read package; do + # NOTE: due to packages stored by reprepro are not modified, we can + # use search by filename to check if package is already in repo. In + # addition, m5sums could be compared to ensure, that package is the + # 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 - ingore it. + base_name=${package##*/} + isar_package=$(find ${DEPLOY_DIR_APT}/${DISTRO} -name $base_name) + if [ -n "$isar_package" ]; then + # Check if MD5 sums are identical. This helps to avoid the case + # when packages is overridden from another repo. + md1=$(md5sum $package | cut -d ' ' -f 1) + md2=$(md5sum $isar_package | cut -d ' ' -f 1) + if [ "$md1" = "$md2" ]; then + continue + fi + fi + + # Check if this package is already in base-apt + isar_package=$(find ${REPO_BASE_DIR}/${DISTRO_NAME} -name $base_name) + if [ -n "$isar_package" ]; then + md1=$(md5sum $package | cut -d ' ' -f 1) + md2=$(md5sum $isar_package | cut -d ' ' -f 1) + if [ "$md1" = "$md2" ]; then + continue + fi + + # md5sum differs, so remove the package from base-apt + name=$($base_name | cut -d '_' -f 1) + reprepro -b ${REPO_BASE_DIR}/${DISTRO_NAME} \ + --dbdir ${REPO_BASE_DB_DIR}/${DISTRO_NAME} \ + -C main -A ${DISTRO_ARCH} \ + remove ${DISTRO_SUITE} \ + $name + fi + + reprepro -b ${REPO_BASE_DIR}/${DISTRO_NAME} \ + --dbdir ${REPO_BASE_DB_DIR}/${DISTRO_NAME} \ + -C main \ + includedeb ${DISTRO_SUITE} \ + $package + done +} -- 2.11.0