From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7108617906868453376 X-Received: by 2002:ab0:37cf:0:b0:378:f70a:3b99 with SMTP id e15-20020ab037cf000000b00378f70a3b99mr14275119uav.120.1655104082901; 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-Google-Smtp-Source: ABdhPJzlFMIBgE+w4mLqa8vzDPv23EUJ0hXh9SiI3CC3ar2moibFplKywB4kKflz7LsvfFz/IYE3 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 Return-Path: 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; 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 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 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED 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: R6pgphL6UYxA 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 +} -- 2.20.1