From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6607733288662466560 X-Received: by 2002:a2e:441c:: with SMTP id r28-v6mr1855228lja.24.1540310513114; Tue, 23 Oct 2018 09:01:53 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a19:d897:: with SMTP id r23-v6ls136658lfi.29.gmail; Tue, 23 Oct 2018 09:01:52 -0700 (PDT) X-Google-Smtp-Source: ACcGV62dG2nCvGKrNpMMHd9wgGnYHVMELig99Hc4LIpJS88/0pb3VSgB7Cto5OXOTxw7BclXULd2 X-Received: by 2002:a19:7011:: with SMTP id h17-v6mr921341lfc.25.1540310512562; Tue, 23 Oct 2018 09:01:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540310512; cv=none; d=google.com; s=arc-20160816; b=UPoQV7SwobnzFkkCBsp7JXNCnlezcXZ2OIqACZ7Wt28icYeOEq5ZPrbQ0xR9oSY5G3 bVorNg90qHD67TtsmWIHgK+KhjFNitNTDLlbAciEAiCRS7xmwznjV/Bpq+aKG5gP1bya R1BLWzBMT2MbOdEwDjfdIMubcadtkLyibOFvZMbHSrM+iDPs7+heyitzUe5Vbtqx2FpK k6u4Zvu4tHNxY2hPuF69rSo6WPQ7SCqY+KgBt/bo4mJq2gfoVb/bV9PfATEAnvefd0Yg C0QU/LHJ+GNuUSRm3eWTkoqfXm5cen6UJLsH/jBKt2QK8Omvzo5LYaDFvzFY8w9W4S7s jFNg== 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:subject:cc:to:from:date; bh=AE/XD5xZUjo3TFJMGBDwkxa3dw0/TCFWOpMi6nWlnIU=; b=vY7i1GZ8MdYyzLgIWsiXWnMQc3MdGKEAeakVM76ccF7jDPgYL11LRhbRQA8BGaJ+A9 SYxS4H9qQClRTjPKoSZRyZLOiYH5XvUsMYPW2NpTu83ZjiJrx566peILREOA3Da3e6wZ cWcd3MDJefYbO2DdlloNyMo27mT1ooJCih/szRtXFJunOEaJWQG7MuoAFILVzC1nwkV/ vqJKred0+6Qf0W8DpLQN4mOAXkc2Ve6aCKL7Cj0ekRHGY0s9449lVovmT3XxAyyLzejV 1AGnMNNVoDe15pz56fkiw57gMG/mvkf6qtYEwkWdYb/6sMaj0BjSUk6w2cA18FhuhfxY kR9A== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id a79-v6si59183ljf.1.2018.10.23.09.01.52 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Oct 2018 09:01:52 -0700 (PDT) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id w9NG1pH9004625 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 23 Oct 2018 18:01:51 +0200 Received: from md1pvb1c.ad001.siemens.net (md1pvb1c.ad001.siemens.net [139.25.68.40]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTPS id w9NG1pbF032118 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 23 Oct 2018 18:01:51 +0200 Date: Tue, 23 Oct 2018 18:01:49 +0200 From: Henning Schild To: "Maxim Yu. Osipov" Cc: Subject: Re: [PATCH v2 01/10] base-apt: Add helper class Message-ID: <20181023180149.38f306cf@md1pvb1c.ad001.siemens.net> In-Reply-To: <20181011165305.1622-2-mosipov@ilbers.de> References: <20181011165305.1622-1-mosipov@ilbers.de> <20181011165305.1622-2-mosipov@ilbers.de> X-Mailer: Claws Mail 3.15.0-dirty (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TUID: 7MAFhTbcdZff Am Thu, 11 Oct 2018 18:52:56 +0200 schrieb "Maxim Yu. Osipov" : > 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 This block should maybe be a function we reuse ... > + 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 here. Henning > + # 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 > +}