From patchwork Sun Jun 12 23:07:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uladzimir Bely X-Patchwork-Id: 1874 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 13 Jun 2022 09:08:09 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-ua1-f55.google.com (mail-ua1-f55.google.com [209.85.222.55]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 25D788KP027790 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 13 Jun 2022 09:08:09 +0200 Received: by mail-ua1-f55.google.com with SMTP id y15-20020ab0638f000000b00368a2d9b075sf2219713uao.13 for ; Mon, 13 Jun 2022 00:08:09 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1655104083; cv=pass; d=google.com; s=arc-20160816; b=CgFatmnyTtgm0OyvJ4CVR+E0/fm465XL/zsrfxwZ+7uk6pmDzbMz90mWtgmZmlmBeG S1ARMsTTdPBk0cncWdf4RlSoqSXL+fJ8GGkZNCslzlQQreHdQb7jLUfSNQnVSD9qKR7l MLM0c5XtHSw52YVcO3JruW7qSbcx6gnka1rtxjTJDvG1QrwHoid4h8TO87Y6UKqv1Vjm tQMLxrmTU+6gFOoxaPHFZY+jGkoF9mVOYPOqq1oSLRsh1XkzlL2clmNvMBEBocq0Sm9H h2Hyxggg70w3I5sFQ/0JusbtZI5cmH/dyAvU4ceH3nLH9WWmO4WMoTTUrx8t6x8ITFaJ 6nSA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:to:from:sender:dkim-signature; bh=agN7Y5wccoHvR8uwA/0wP22aqiPPM3H25lMMaxGZ6Qg=; b=Y3kmgWJBcgRbj600vt25IF3xt7ZzbChXqtg58l3iM+UHMxrHpZg1pIG4qy0cbKrbR5 JL29O3TmZi9TZqW2msfJPZjEA1E+HewyyB1kdzo+LjsR/iJo4Obk01exC6dkEuGWCHhZ b8WkCxmM+ouVHVpBfPI/gIoQ+McNHbi4XyeqGgF1zlflnRFVnXdW5H8h4bDBSsebYHA2 J/NN8DlGeB5USxC02NYAahxGQ7ffKO8V856pXEJPEPgawN7XwbFdtoCDlgfLSaQXt2BE LGIt8fAvLa7v1AQ8CNRBoJO6G8OptHShxcGvr2Hb5ElUvO6+fdUr7SBsIo5z5qYLnRxv noAQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=agN7Y5wccoHvR8uwA/0wP22aqiPPM3H25lMMaxGZ6Qg=; b=hf6w3lXphgUE40/76CEw+4MjURz0hC9VTDVmE8t12acoOgzGTRTRHbChLOOfKW2cAK LHgY6nw+OZv8Ff61LdnV6D6t0QrVG4YWTZKGYVECigL6GtP98r5yFOsedr6fjUmHkAkd kAYaDj3kvq2RfmquBV2iSV9Scn0sYnwZInt/rKpY2WaVERHINalPA/PPKEoQ/wfwiePq QFo4zjsWNqGF0If2FZoYJpbQwtH0pvev9SI0FvzBs4pPIFGgegE4PS9RUWcqZw3og9OO KEFnRaa7tN5ipBU38WBHPnput4mQ6+LpGOA0s8zDgFIRYfAAntmdQEdGNgqpC+oSMVuJ XyMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=sender:x-gm-message-state:from:to:subject:date:message-id :in-reply-to:references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=agN7Y5wccoHvR8uwA/0wP22aqiPPM3H25lMMaxGZ6Qg=; b=B+HT6m2VdOUBPppx7MKUVjw43KiGYMeSud1OSaHOiPJ7vKnBZiAPxmfG7C4Z1y9qF+ LevC6WkwD2IcWkmRbBEwJIOv/j2HfFNI0aqCdgAulOXguQoL5H8sZ1C+x3iE7TJnJU4q jyxFESgjaL+8ePpDHq2FuwhsYR77Ua8il0ezL7yrgR2F34p2BZTbNQKWVXK1vorQBhJf b9iX9JMxlU1T9a4shfVDGX2DcrLVSbbTgU/qXOC5hbzbBxJi7MUcnI56BYUAkucuZDFO kXTGnYSKT074vuOeKVznBWAkfFlUJ3Cm1WUMbCgYfoPIfZI+LI1dGfdcQLTd8Yfk10RU 76nA== Sender: isar-users@googlegroups.com X-Gm-Message-State: AOAM530BsBC8XdP+dsB5RH6VPK0b0waAYbx6/Mp96vte1MExiw1QMDly GMfvnfp+fArzlx8KF7tgnsA= X-Google-Smtp-Source: ABdhPJx3DEDFqR54ULnjUUHq2JqO3HRFHUim79d+aRreusfENWQYYVpNRu05kZdD9XOV2o5VwbGLeQ== X-Received: by 2002:a67:6f85:0:b0:34c:12b2:1325 with SMTP id k127-20020a676f85000000b0034c12b21325mr7701689vsc.78.1655104082798; Mon, 13 Jun 2022 00:08:02 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a67:60c7:0:b0:34b:bc0a:4dd3 with SMTP id u190-20020a6760c7000000b0034bbc0a4dd3ls275477vsb.0.gmail; Mon, 13 Jun 2022 00:08:02 -0700 (PDT) X-Received: by 2002:a05:6102:34c3:b0:349:f12c:ccf4 with SMTP id a3-20020a05610234c300b00349f12cccf4mr24399848vst.64.1655104082262; Mon, 13 Jun 2022 00:08:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655104082; cv=none; d=google.com; s=arc-20160816; b=Jp2qvEfR+jFWqiJScIKS16hBUq1MxTIUF8AJSQ7xtvVV5qPlHHDEhaau1IWczjyu0B gi7BnSBaH1wb34stGjF87Luz7rFupOFrEHVUItovWrIPKAH1yRJaZtIEIRYDrwCs5Lzw QtBS2VTmpWw81w1gTr+VZ4eb5Pk9bAQXfw5CgdQ+lp+Dd2aNFVvGPpSTkw7f3jJsRODu 3XbBWZbAv+MYeE0R3uUEGonehbDcMt4i0Bt+ML4ja1gKfe4fk+sHLpchqdidWTuC+YI6 YYx9rkQ9mbQWlXI4b3csj4sfbdJHWiOU9Bfn40aswuNPBehP2RFBde9JdS0L9qQZn8Wj FClA== 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=7R5jWwTKHsvyUYF0oojR492fH6vB3A1JHvBEarx8NKc=; b=ZQEfu39IK085+qf4v+YTGbryEFQQAm9Nv7q1Xme1Itzz6NeHS58gG1BEoGzzgLYJsR axDkQenyYiVjHepUL3tSyeYONczVkF8oz7q46PxzvLZBOJgXWBLSWMUbuL6wsn9qmrSB Oz0l2GTKIPJo16sAZkopLyLLAfX2hI0sd7QunqVGLUHMFN6Me8yhbQ0AXP/ueJQMgNUW LnDl4mEmsL160Ys/IrIh37aR4dS2Kqnno/akHDNdd2sjUL0vuH+2NxQkgfNt5Bmlvva6 pNBzf0dtQB/YWFD8/5v/Z1UEbLLdkKhXSO6d0xdAr/U7tnMYCRB9kBuk7seQ3YzpleR5 6Tkg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id h14-20020ab0334e000000b00378e80fec38si357283uap.2.2022.06.13.00.08.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 13 Jun 2022 00:08:02 -0700 (PDT) Received-SPF: pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from baighyz.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+deb9u1) with ESMTPSA id 25D77xZ8027766 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 13 Jun 2022 09:08:00 +0200 From: Uladzimir Bely To: isar-users@googlegroups.com Subject: [RFC v2 1/3] meta: Reuse existing local isar-apt repo in new builds Date: Mon, 13 Jun 2022 09:07:57 +0200 Message-Id: <20220613070759.16949-2-ubely@ilbers.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220613070759.16949-1-ubely@ilbers.de> References: <20220613070759.16949-1-ubely@ilbers.de> MIME-Version: 1.0 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_PASS 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-Original-Sender: ubely@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-getmail-retrieved-from-mailbox: INBOX The idea of reusing isar-apt repo at second build is to early exit from build-related tasks if the package with the same version already exists in current isar-apt repo. Also, redefining default values of REPO_ISAR_DIR and REPO_ISAR_DB_DIR maybe useful to share isar-apt between different builds and not to keep it under ${TMPDIR}: REPO_ISAR_DIR = "/path/to/isar-apt/${DISTRO}-${DISTRO_ARCH}/apt" REPO_ISAR_DB_DIR = "/path/to/isar-apt/${DISTRO}-${DISTRO_ARCH}/db" The variable ISAR_APT_REUSE in local.conf controls the behvaiour: 0: Don't use isar-apt cache, always rebuilt packages (default) 1: Use local isar-apt cache, rebuilt packages only if needed Signed-off-by: Uladzimir Bely --- meta-isar/conf/local.conf.sample | 4 ++ meta/classes/dpkg-base.bbclass | 1 + meta/classes/isar-apt-cache.bbclass | 69 +++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 meta/classes/isar-apt-cache.bbclass diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample index 58f3e1a2..523da5c3 100644 --- a/meta-isar/conf/local.conf.sample +++ b/meta-isar/conf/local.conf.sample @@ -221,6 +221,10 @@ ISAR_CROSS_COMPILE ?= "0" # does not access the network #BB_NO_NETWORK ?= "1" +# +# Uncomment to use previously built isar_apt repo if package version hasn't changed +#ISAR_APT_REUSE ?= "1" + # Set root password to 'root' # Password was encrypted using following command: # mkpasswd -m sha512crypt -R 10000 diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 7e032ba3..a9697fbd 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -9,6 +9,7 @@ inherit debianize inherit terminal inherit repository inherit deb-dl-dir +inherit isar-apt-cache DEPENDS ?= "" diff --git a/meta/classes/isar-apt-cache.bbclass b/meta/classes/isar-apt-cache.bbclass new file mode 100644 index 00000000..4550886d --- /dev/null +++ b/meta/classes/isar-apt-cache.bbclass @@ -0,0 +1,69 @@ +# This software is a part of ISAR. +# Copyright (C) 2017-2019 Siemens AG +# Copyright (C) 2019 ilbers GmbH +# +# SPDX-License-Identifier: MIT + +iac_check_package_in_repo() { + DISTS_ISAR="${REPO_ISAR_DIR}/${DISTRO}/dists/${DEBDISTRONAME}" + PACKAGES="${DISTS_ISAR}/main/binary-${PACKAGE_ARCH}/Packages" + + if [ ! -f "${PACKAGES}" ]; then + return 1 + fi + + if ! grep -q "^\(Package\|Source\): ${PN}$" "${PACKAGES}"; then + return 2 + fi + + local repo_version=$(sed -n -e '/^\(Package\|Source\): ${PN}$/,/Version/p' ${PACKAGES} | grep '^Version' | sed -e 's/.* //' | head -n1) + local new_version=$(head -n1 ${S}/debian/changelog | sed -e 's/.* (\(.*\)) .*/\1/' | head -n1) + + if [ "${repo_version}" != "${new_version}" ]; then + return 3 + fi + + bbnote "Package ${PN}-${PV} is already in isar-apt repo, reuse it" + return 0 +} + +iac_check_need_rebuild() { + if [ "${ISAR_APT_REUSE}" != "1" ]; then + return 1 + fi + + iac_check_package_in_repo +} + +def iac_check_task_early_exit(d): + try: + bb.build.exec_func("iac_check_need_rebuild", d) + return True + except: + return False + + +do_apt_fetch_prepend() { + iac_check_need_rebuild && return +} + +do_apt_unpack_prepend() { + iac_check_need_rebuild && return +} + +do_prepare_build_prepend() { + iac_check_need_rebuild && return +} + +do_deploy_deb_prepend() { + iac_check_need_rebuild && return +} + +do_install_builddeps_prepend() { + iac_check_need_rebuild && return +} + +python do_dpkg_build_prepend() { + if iac_check_task_early_exit(d): + return 0 +}