From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7279128154668531712 X-Received: by 2002:a2e:7010:0:b0:2bc:c4af:36b7 with SMTP id l16-20020a2e7010000000b002bcc4af36b7mr2235577ljc.39.1694804096870; Fri, 15 Sep 2023 11:54:56 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:651c:c91:b0:2b9:5184:f05f with SMTP id bz17-20020a05651c0c9100b002b95184f05fls1824349ljb.1.-pod-prod-01-eu; Fri, 15 Sep 2023 11:54:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGzxJqLGGmgc09cQZnm7H4MIV4REPcA73319AABhlqwTGYqA8OLCDlr6wsWPk4Zo66Bq+8G X-Received: by 2002:a2e:809a:0:b0:2bc:b448:b8c0 with SMTP id i26-20020a2e809a000000b002bcb448b8c0mr2554576ljg.34.1694804095119; Fri, 15 Sep 2023 11:54:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694804095; cv=none; d=google.com; s=arc-20160816; b=fotWvih9qJQXFoftGzd+JpMvAmie/kYPr8deYHWTczCGUSDooojzvgRONje7cvF/50 UaU/YflLrO8z3sJBUXn6RqytOJ/LylNvxbmnBBvXxrYuBb/5md+W9qXy7PlaCtvXGfZ7 kNg9FDB7BP6RfnvAusoxvQJ9IzkL55phNhwwsUMGhqZV0+4u2Smp04kNwoKlgRx5cUU8 xmXaHiFX3UkpFl5comFvQ/a7eAKTM4SYimDBoR7av5WrlNxpupEaBfFHJcQ/dlldiKbW /1UFQSzEGF2pf1dDqG2fh15qHD2rJwyk8AkBjWIDX3EuRrQVB9sjehRF3vv6JzGu6JET q31w== 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:cc:to:from; bh=u/fTc31if4sL4V1UfBPrk8YmonEM1j+rZh/SBlbFV4Q=; fh=/h9QQkzJ8EboVkWg45aWwpaUro6WMavIVd2OhN45RtE=; b=J2/Uz8aLCpIeKp9dbFLQC2nSpodOKPUdBEz+qIpbuPZcEJbLrZvJRUC5axjGZFycQo yxgz9N2S6lK0CIofi/8M5LZbPjJ17eqNkQGobhbRJ3iyvR5DzFuNHiuVIFNGuHwstWFO 9mKTDhEkXsZxP3oCVtkTsuZWz/FlNP7nEgM94jNaDOyaH1FEfRvBoU56s6ohv8lrlonr /EyluCbAXbbilfUDcNvIp1qXzkyWvpXPJ2f51TeA3kRVOqgHt8kYJs7mi68oEx6E2y5N mFFDgPiIx7/4LwcK9jEa7LTHMW0yCVZce1ohYiHeZdsBjDsFa+ICUxEImzz5qkZfAcSY 6Kog== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id a20-20020a05651c211400b002b96150efccsi379615ljq.0.2023.09.15.11.54.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 15 Sep 2023 11:54:55 -0700 (PDT) Received-SPF: pass (google.com: domain of amikan@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 amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Received: from localhost.localdomain (r154-240-38-77-broadband.btv.lv [77.38.240.154] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 38FIsopX026150 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 15 Sep 2023 20:54:54 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Anton Mikanovich Subject: [PATCH 3/5] meta: Implement two stage build Date: Fri, 15 Sep 2023 21:54:37 +0300 Message-Id: <20230915185439.2954192-4-amikan@ilbers.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230915185439.2954192-1-amikan@ilbers.de> References: <20230915185439.2954192-1-amikan@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: /iBHlAi4UqSX Split package build into two stages: building source package and building binary package. This allows to obtain Debian package dependencies before any build steps will actually start. Signed-off-by: Anton Mikanovich --- meta/classes/dpkg-gbp.bbclass | 2 +- meta/classes/dpkg-source.bbclass | 33 ++++++++++++++++++++++ meta/classes/dpkg.bbclass | 4 +-- meta/classes/rootfs.bbclass | 2 ++ meta/recipes-kernel/linux/linux-custom.inc | 2 +- 5 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 meta/classes/dpkg-source.bbclass diff --git a/meta/classes/dpkg-gbp.bbclass b/meta/classes/dpkg-gbp.bbclass index 2bd09eaa..a151ade2 100644 --- a/meta/classes/dpkg-gbp.bbclass +++ b/meta/classes/dpkg-gbp.bbclass @@ -11,7 +11,7 @@ PATCHTOOL ?= "git" GBP_EXTRA_OPTIONS ?= "--git-pristine-tar" -dpkg_runbuild:prepend() { +do_dpkg_source:prepend() { sh -c " cd ${WORKDIR}/${PPS} gbp buildpackage --git-ignore-new --git-builder=/bin/true ${GBP_EXTRA_OPTIONS} diff --git a/meta/classes/dpkg-source.bbclass b/meta/classes/dpkg-source.bbclass new file mode 100644 index 00000000..434f1752 --- /dev/null +++ b/meta/classes/dpkg-source.bbclass @@ -0,0 +1,33 @@ +# This software is a part of ISAR. +# Copyright (C) 2023 ilbers GmbH +# +# SPDX-License-Identifier: MIT + +inherit dpkg-base + +do_dpkg_source() { + # Create a .dsc file from source directory to use it with sbuild + DEB_SOURCE_NAME=$(dpkg-parsechangelog --show-field Source --file ${WORKDIR}/${PPS}/debian/changelog) + find ${WORKDIR} -name "${DEB_SOURCE_NAME}*.dsc" -maxdepth 1 -delete + if [ ! -z "${SOURCE_DATE_EPOCH}" ]; then + export SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH}" + fi + sh -c "cd ${WORKDIR}; dpkg-source -I -b ${PPS}" +} +addtask dpkg_source after do_prepare_build before do_dpkg_build + +do_deploy_source[depends] += "isar-apt:do_cache_config" +do_deploy_source[lockfiles] = "${REPO_ISAR_DIR}/isar.lock" +do_deploy_source[dirs] = "${S}" +do_deploy_source() { + repo_del_srcpackage "${REPO_ISAR_DIR}"/"${DISTRO}" \ + "${REPO_ISAR_DB_DIR}"/"${DISTRO}" "${DEBDISTRONAME}" "${BPN}" + find "${S}/../" -name '*\.dsc' -maxdepth 1 | while read package; do + repo_add_srcpackage "${REPO_ISAR_DIR}"/"${DISTRO}" \ + "${REPO_ISAR_DB_DIR}"/"${DISTRO}" \ + "${DEBDISTRONAME}" \ + "${package}" + done +} +addtask deploy_source after do_dpkg_source before do_dpkg_build + diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass index 90d717ca..2bb167e4 100644 --- a/meta/classes/dpkg.bbclass +++ b/meta/classes/dpkg.bbclass @@ -2,6 +2,7 @@ # Copyright (C) 2015-2018 ilbers GmbH inherit dpkg-base +inherit dpkg-source PACKAGE_ARCH ?= "${DISTRO_ARCH}" @@ -95,10 +96,7 @@ dpkg_runbuild() { echo '$apt_keep_downloaded_packages = 1;' >> ${SBUILD_CONFIG} - # Create a .dsc file from source directory to use it with sbuild DEB_SOURCE_NAME=$(dpkg-parsechangelog --show-field Source --file ${WORKDIR}/${PPS}/debian/changelog) - find ${WORKDIR} -name "${DEB_SOURCE_NAME}*.dsc" -maxdepth 1 -delete - sh -c "cd ${WORKDIR}; dpkg-source -q -b ${PPS}" DSC_FILE=$(find ${WORKDIR} -name "${DEB_SOURCE_NAME}*.dsc" -maxdepth 1 -print) sbuild -A -n -c ${SBUILD_CHROOT} --extra-repository="${ISAR_APT_REPO}" \ diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index 7dec7b36..65574a6c 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -90,6 +90,8 @@ rootfs_configure_isar_apt() { mkdir -p '${ROOTFSDIR}/etc/apt/sources.list.d' echo 'deb [trusted=yes] file:///isar-apt ${DEBDISTRONAME} main' > \ '${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list' + echo 'deb-src [trusted=yes] file:///isar-apt ${DEBDISTRONAME} main' >> \ + '${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list' mkdir -p '${ROOTFSDIR}/etc/apt/preferences.d' cat << EOF > '${ROOTFSDIR}/etc/apt/preferences.d/isar-apt' diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc index 8b367a2f..fa5d957d 100644 --- a/meta/recipes-kernel/linux/linux-custom.inc +++ b/meta/recipes-kernel/linux/linux-custom.inc @@ -212,6 +212,6 @@ EOF fi } -dpkg_runbuild:prepend() { +do_dpkg_source:prepend() { dpkg_configure_kernel } -- 2.34.1