From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7369181641447571456 X-Received: by 2002:a2e:4e02:0:b0:2e6:dc4a:758f with SMTP id 38308e7fff4ca-2e6dc4a75bcmr78866191fa.24.1715963747276; Fri, 17 May 2024 09:35:47 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:b16a:0:b0:2e6:fc88:7866 with SMTP id 38308e7fff4ca-2e6fc887c43ls10566061fa.0.-pod-prod-07-eu; Fri, 17 May 2024 09:35:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF+GGjlNhmKS4C5kOsyJghtRrp0mBFGAonYL5zMz2K3B6S1T15eO9c8N43ABYg5X+zX6Q0V X-Received: by 2002:a05:651c:a10:b0:2e1:bd06:51b0 with SMTP id 38308e7fff4ca-2e52039c4d7mr172212901fa.35.1715963744664; Fri, 17 May 2024 09:35:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1715963744; cv=none; d=google.com; s=arc-20160816; b=uRJW4KUvyNkC9bOmz4hY9oh3HCz4eRY89hYHlfkmJnjHkrSZlV2xjN8q0PpQTrV8Lx k+3kruPK5UiT2K1N1QoKDS7viD3NPR9th2590PaTpkU/MjuEfsg0+SdaYtZGcg5/3UOq tvo7BBZSJRnIxvPMS9HCutq4ebjG+BbrcP9XN/ppQR7oRfjQNWoJXGnfZFcr6NhEDKcB rrCRBgTmUEXMkc/QyjOFJ6vE99O0INouBZPZQZPo1VXZr4lqvz008ObhVCk8hOUehgAp W9jQnrbMxtfpIKqTuO70c54UzUuuBFEXGMN2S8KhSGAtsrEp5ymnyv47LFtJ5Jk52ECI y9cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=feedback-id:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=vOznNKWJ5HmxWvX04CxN2jUm0z0WeZduMKdb5ihYpU4=; fh=XGT9su1InluIJlpNbfO5AhdONNgYrcrI0omn79eqbSQ=; b=IcSIet4hN8+7Ctn8hd5PxfEVdMEVvXDqlywU6Ueh7Qghn86BaGi+8QvzcF+znU3k3k wO6P62uNqWKYNBUrCg0y18nuAfpErRlItDNr9NlDSfADUtOOnqCEISG9sHVgkR/y8q/+ GFXt35FPazUJn0jWictUX2I5vTfVikekzXTjXXlsTIYRUHyJrIEer82yeY0KiSn9c02d 1TNejBnxSbrjqY43FKPXp9Ra4uvxXe6yMUsCZxMgzYtZkPZS8LAl5MDqisfNFbrjN0Fn bAAje5QEui9TrWubdOIiBT3CTDxq50r6Y3QLuw0hzc7jnX7sAyoVpugKx2w7F4/Re9v0 9aCA==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=KrNti+lX; spf=pass (google.com: domain of fm-294854-202405171635442d42bcf972af35d00d-pxl2sg@rts-flowmailer.siemens.com designates 185.136.64.225 as permitted sender) smtp.mailfrom=fm-294854-202405171635442d42bcf972af35d00d-Pxl2SG@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Return-Path: Received: from mta-64-225.siemens.flowmailer.net (mta-64-225.siemens.flowmailer.net. [185.136.64.225]) by gmr-mx.google.com with ESMTPS id 5b1f17b1804b1-42024ca927esi1958325e9.2.2024.05.17.09.35.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 17 May 2024 09:35:44 -0700 (PDT) Received-SPF: pass (google.com: domain of fm-294854-202405171635442d42bcf972af35d00d-pxl2sg@rts-flowmailer.siemens.com designates 185.136.64.225 as permitted sender) client-ip=185.136.64.225; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=KrNti+lX; spf=pass (google.com: domain of fm-294854-202405171635442d42bcf972af35d00d-pxl2sg@rts-flowmailer.siemens.com designates 185.136.64.225 as permitted sender) smtp.mailfrom=fm-294854-202405171635442d42bcf972af35d00d-Pxl2SG@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: by mta-64-225.siemens.flowmailer.net with ESMTPSA id 202405171635442d42bcf972af35d00d for ; Fri, 17 May 2024 18:35:44 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=jan.kiszka@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=vOznNKWJ5HmxWvX04CxN2jUm0z0WeZduMKdb5ihYpU4=; b=KrNti+lXYgie0tiJNyebA61nEanU0/ZNDD0ovMpbnBVm7FnHoEc98HiSTccNAY0rh7IL3h snGsQSnaz63w5fkA6J6VknNkKulu7cCI1fGdZRqPROf9umH+2lmATLfGdV0OIcq3Rrl+9cvs H8FwubNc4Pd5OVSznZft2Lt3zxOVg=; From: Jan Kiszka To: isar-users Cc: Felix Moessbauer , stefan-koch@siemens.com, Adriaan Schmidt , Anton Mikanovich Subject: [PATCH v3 5/5] dpkg-source: Build source package only once Date: Fri, 17 May 2024 18:35:42 +0200 Message-Id: <1f7d8469de5afbad8d9172bdc5022b46c52f846e.1715963742.git.jan.kiszka@siemens.com> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-294854:519-21489:flowmailer X-TUID: kH/hH11oCGFD From: Jan Kiszka Avoid building the source package multiple times, possibly even inconsistently. This is achieved by delegating this task to to the base package and installing the source package from isar-apt in the native and compat package variants. Those derived packages will also no longer trigger fetching, unpacking or prepare_build as everything is supposed to be in the source package. Signed-off-by: Jan Kiszka --- meta/classes/dpkg-base.bbclass | 4 +-- meta/classes/dpkg-prebuilt.bbclass | 7 ++---- meta/classes/dpkg-source.bbclass | 40 ++++++++++++++++++++++++++++-- meta/classes/dpkg.bbclass | 3 ++- 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 93321976..789d6c74 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -78,7 +78,7 @@ addtask adjust_git after do_unpack before do_patch do_adjust_git[lockfiles] += "${DL_DIR}/git/isar.lock" inherit patch -addtask patch after do_adjust_git before do_dpkg_build +addtask patch after do_adjust_git SRC_APT ?= "" @@ -191,7 +191,7 @@ do_prepare_build() { true } -addtask prepare_build after do_patch do_transform_template before do_dpkg_build +addtask prepare_build after do_patch do_transform_template # If Isar recipes depend on each other, they typically need the package # deployed to isar-apt do_local_isarapt[depends] += "isar-apt:do_cache_config" diff --git a/meta/classes/dpkg-prebuilt.bbclass b/meta/classes/dpkg-prebuilt.bbclass index 8135fc81..7092670b 100644 --- a/meta/classes/dpkg-prebuilt.bbclass +++ b/meta/classes/dpkg-prebuilt.bbclass @@ -16,11 +16,8 @@ python do_unpack:prepend() { d.setVar('SRC_URI', ' '.join(src_uri)) } -# break dependencies on do_patch, etc... but still support sstate caching -deltask dpkg_build -addtask dpkg_build after do_unpack before do_deploy_deb -# break inherited (from dpkg-base) dependency on sbuild_chroot -do_dpkg_build[depends] = "" +# also breaks inherited (from dpkg-base) dependency on sbuild_chroot +do_dpkg_build[depends] = "${PN}:do_unpack" do_dpkg_build() { true } diff --git a/meta/classes/dpkg-source.bbclass b/meta/classes/dpkg-source.bbclass index 560f536b..d6ab5aad 100644 --- a/meta/classes/dpkg-source.bbclass +++ b/meta/classes/dpkg-source.bbclass @@ -18,7 +18,7 @@ do_dpkg_source() { find ${WORKDIR} -maxdepth 1 -name "${DEBIAN_SOURCE}_*.dsc" -delete sh -c "cd ${WORKDIR}; dpkg-source ${DPKG_SOURCE_EXTRA_ARGS} -b ${PPS}" } -addtask dpkg_source after do_prepare_build before do_dpkg_build +addtask dpkg_source after do_prepare_build do_deploy_source[depends] += "isar-apt:do_cache_config" do_deploy_source[lockfiles] = "${REPO_ISAR_DIR}/isar.lock" @@ -34,4 +34,40 @@ do_deploy_source() { "${DSC_FILE}" fi } -addtask deploy_source after do_dpkg_source before do_dpkg_build +addtask deploy_source after do_dpkg_source + +do_dpkg_build[depends] += "${BPN}:do_deploy_source" + +SCHROOT_MOUNTS = "${WORKDIR}:/work ${REPO_ISAR_DIR}/${DISTRO}:/isar-apt" + +do_fetch_common_source[depends] += "${SCHROOT_DEP} ${BPN}:do_deploy_source" +do_fetch_common_source[network] = "${TASK_USE_SUDO}" +do_fetch_common_source() { + schroot_create_configs + insert_mounts + + session_id=$(schroot -q -b -c ${SBUILD_CHROOT}) + echo "Started session: ${session_id}" + + schroot_cleanup() { + schroot -q -f -e -c ${session_id} > /dev/null 2>&1 + remove_mounts > /dev/null 2>&1 + schroot_delete_configs + } + trap 'exit 1' INT HUP QUIT TERM ALRM USR1 + trap 'schroot_cleanup' EXIT + + schroot -r -c ${session_id} -d / -u root -- \ + apt-get update -o Dir::Etc::SourceList="sources.list.d/isar-apt.list" -o Dir::Etc::SourceParts="-" -o APT::Get::List-Cleanup="0" + schroot -r -c ${session_id} -d / -- \ + sh -c ' + cd /work + apt-get -y --download-only --only-source -o Acquire::Source-Symlinks="false" source ${DEBIAN_SOURCE}' + + schroot -e -c ${session_id} + remove_mounts + schroot_delete_configs +} +addtask fetch_common_source + +do_dpkg_build[depends] += "${@'${PN}:do_dpkg_source' if '${PN}' == '${BPN}' else '${PN}:do_fetch_common_source'}" diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass index 804fe5a6..d92ff68c 100644 --- a/meta/classes/dpkg.bbclass +++ b/meta/classes/dpkg.bbclass @@ -24,9 +24,10 @@ def expand_sbuild_pt_additions(d): cmds += 'sbuild_export ' + var + ' "' + varval + '"\n' return cmds -do_prepare_build:append() { +do_get_reference_env() { env > ${DPKG_PREBUILD_ENV_FILE} } +addtask get_reference_env before do_dpkg_build # cp -n results in nonzero exit code starting from coreutils 9.2 # and starting from 9.3 we can use --update=none for the same behaviour -- 2.35.3