From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6596267782580469760 X-Received: by 2002:a19:645b:: with SMTP id b27-v6mr311358lfj.32.1535813273891; Sat, 01 Sep 2018 07:47:53 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a19:9647:: with SMTP id y68-v6ls882248lfd.20.gmail; Sat, 01 Sep 2018 07:47:53 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaefJnkzm7H9fpLa3y/XE5ZO7QWJHvzCNeGt93kVxzEa7PTf547m2I46Cu6jrRebeomazR3 X-Received: by 2002:ac2:4314:: with SMTP id l20-v6mr468475lfh.21.1535813273314; Sat, 01 Sep 2018 07:47:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535813273; cv=none; d=google.com; s=arc-20160816; b=IBEB4kPMcSXT1QUuXZhp2DE9kP7tW6q3GlKBBj7IaXivPweZQtY+T5RWFVKCGDYZ4d lcgcZid+WmuwhTX3+cdZXED6m4VnNkCb+a2mxF9l7iYFK6HHnliY5d/q0/VSQmVMG1WD 3TdwxanScdM7P8HE48VVfj7+DGzmzVXSUvTyajxyVwrBzHbaakbpj9+WGYI3oGkGCbZo JnLK+5Nr3VB/msxcf7rrN+OZlzRlgmU+Sd72HpqyTnfNX2bQiqP0HuBLSKiVjg0sxKXf wjFhrg+eu11RzF0zmw08RdbaY0KoWB4JVzn2xjvQ5mjgHH1+AjarHYGrylNgJifAnXnB fpXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:references:in-reply-to:message-id:date :subject:to:from:arc-authentication-results; bh=NnQyodbj9LcO9iUocuJdLGxuulvahmzj4gWoue/hziI=; b=wMlC0W+LSFzCHpCfl430ZkIuCFMcbihUBhRQuwAH0k/nxATfv8D6c6ROPoWZixxVo0 sMpNEg1SofTEkmItNFKTgBiW7Sbuo1vJDCjqC9egDbFIRotS9M0LZTlSoZm1hx4DtKsa ALOaiL7GxwvHNL9ZsEKQghgmRhcM6iWGevS5ElOKmjPQDKLMSg0/UI2h8AqrwqhNnl3f SUiWjNoRRTEdqhnvCqSBpEqCYZ1bYOHJGLgIgYXIezPLfH/0WFw2UPXMnJvNcHWTn8e9 EKZ4tccRcHSEecOebdxo4ysZ73JJJ47wGBf8aU3yRXtq5rf7yDaItHPDvSXig2KprIS+ wWvA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Return-Path: Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id v16-v6si300770ljg.3.2018.09.01.07.47.53 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 01 Sep 2018 07:47:53 -0700 (PDT) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.28 as permitted sender) client-ip=192.35.17.28; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id w81ElqCm028462 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Sat, 1 Sep 2018 16:47:52 +0200 Received: from md1f2u6c.ad001.siemens.net ([139.22.35.9]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id w81EloWf011101 for ; Sat, 1 Sep 2018 16:47:51 +0200 From: Jan Kiszka To: isar-users Subject: [PATCH 3/4] dpkg: Split dependency installation from build preparations Date: Sat, 1 Sep 2018 16:47:49 +0200 Message-Id: X-Mailer: git-send-email 2.16.4 In-Reply-To: References: In-Reply-To: References: X-TUID: rqrrQRYTj8kS From: Jan Kiszka Only the former needs locking, and the latter benefits from clearer naming: do_prepare_build is supposed to run prior to the build. The dependency installation task is now from the user perspective part of the build again, even when run separately directly before it. Signed-off-by: Jan Kiszka --- meta/classes/dpkg-base.bbclass | 24 +++++++++--------------- meta/classes/dpkg-raw.bbclass | 4 ++-- meta/classes/dpkg.bbclass | 8 ++++++-- meta/recipes-kernel/linux-module/module.inc | 2 +- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 6299ef8..a2d2ff0 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -15,7 +15,7 @@ python __anonymous() { dep = "buildchroot-host:do_build" rootfs = d.getVar('BUILDCHROOT_HOST_DIR', True) - d.setVarFlag('do_prepare', 'depends', dep) + d.setVarFlag('do_prepare_build', 'depends', dep) d.setVar('BUILDCHROOT_DIR', rootfs) } @@ -48,11 +48,17 @@ PPS ?= "${@get_package_srcdir(d)}" BUILDROOT = "${BUILDCHROOT_DIR}/${PP}" do_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" -# Empty do_prepare() implementation, to be overwritten if needed -dpkg_prepare() { +# Empty do_prepare_build() implementation, to be overwritten if needed +do_prepare_build() { true } +addtask prepare_build after do_patch before do_build +do_prepare_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" +# If Isar recipes depend on each other, they typically need the package +# deployed to isar-apt +do_prepare_build[deptask] = "do_deploy_deb" + MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" # Wrap the function dpkg_runbuild with the bind mount for buildroot @@ -75,18 +81,6 @@ dpkg_undo_mounts() { sudo rmdir ${BUILDROOT} 2>/dev/null || true } -do_prepare() { - dpkg_do_mounts - dpkg_prepare - dpkg_undo_mounts -} - -addtask prepare after do_patch before do_build -do_prepare[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" -# If Isar recipes depend on each other, they typically need the package -# deployed to isar-apt -do_prepare[deptask] = "do_deploy_deb" - # Placeholder for actual dpkg_runbuild() implementation dpkg_runbuild() { die "This should never be called, overwrite it in your derived class" diff --git a/meta/classes/dpkg-raw.bbclass b/meta/classes/dpkg-raw.bbclass index c5f1c88..c848f3d 100644 --- a/meta/classes/dpkg-raw.bbclass +++ b/meta/classes/dpkg-raw.bbclass @@ -14,7 +14,7 @@ do_install() { } do_install[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" -addtask install after do_unpack before do_prepare +addtask install after do_unpack before do_prepare_build deb_package_prepare() { sudo rm -rf ${D}/DEBIAN @@ -48,7 +48,7 @@ deb_package_conffiles() { test -s $CONFFILES || rm $CONFFILES } -dpkg_prepare() { +do_prepare_build() { deb_package_prepare deb_package_conffiles } diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass index 2e53c1b..fd9656f 100644 --- a/meta/classes/dpkg.bbclass +++ b/meta/classes/dpkg.bbclass @@ -4,13 +4,17 @@ inherit dpkg-base # Install build dependencies for package -dpkg_prepare() { +do_install_builddeps() { + dpkg_do_mounts E="${@ bb.utils.export_proxies(d)}" sudo -E chroot ${BUILDCHROOT_DIR} /isar/deps.sh ${PP}/${PPS} ${DISTRO_ARCH} + dpkg_undo_mounts } +addtask install_builddeps after do_prepare_build before do_build # apt and reprepro may not run in parallel, acquire the Isar lock -do_prepare[lockfiles] += "${DEPLOY_DIR_APT}/isar.lock" +do_install_builddeps[lockfiles] = "${DEPLOY_DIR_APT}/isar.lock" +do_install_builddeps[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" # Build package from sources using build script dpkg_runbuild() { diff --git a/meta/recipes-kernel/linux-module/module.inc b/meta/recipes-kernel/linux-module/module.inc index 7bc29a8..08d2c25 100644 --- a/meta/recipes-kernel/linux-module/module.inc +++ b/meta/recipes-kernel/linux-module/module.inc @@ -17,7 +17,7 @@ AUTOLOAD ?= "0" inherit dpkg -do_prepare_prepend() { +do_prepare_build() { cp -r ${WORKDIR}/debian ${S}/ sed -i -e 's/@PN@/${PN}/g' -e 's/@PV@/${PV}/g' \ -e 's/@KERNEL_NAME@/${KERNEL_NAME}/g' \ -- 2.16.4