From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6519007876157014016 X-Received: by 10.46.101.4 with SMTP id z4mr107573ljb.12.1517914917493; Tue, 06 Feb 2018 03:01:57 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.46.21.76 with SMTP id 12ls976671ljv.5.gmail; Tue, 06 Feb 2018 03:01:56 -0800 (PST) X-Google-Smtp-Source: AH8x224KvMrvPUsP4YUbBOwQlCJlDThmQee7rPcbpak+xZZwXrVML3oZPrZ1AMzvreNNBKHpha7m X-Received: by 10.46.53.20 with SMTP id z20mr105697ljz.31.1517914916818; Tue, 06 Feb 2018 03:01:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517914916; cv=none; d=google.com; s=arc-20160816; b=F4AKu1U0kmk6/n4S9JbXj2K4Lr0Eh91jXXWbCmSSc8SqrDP7Q49/V1YR775bcCxEvz YlavhezEZd4vS99lAwen5Rqyu0CQxOhl4K5MevjY3MQRnPrDO5dI2zlaufv3YpTrOck1 RVB/qQxfUW1fDMaDIlq88/mGm1mNJA6jfFjaE3ueyva6yJfrGfIyz4/lN0qe/djrcQYv D1FSp4J7LGok9Gpkx/PI06WbhfEpRkzgCqVA/HsVvpFa7C4WoPw8myWG6JvxoWaNTcf5 LD8T6x9ecMnDivfffzg+7/ej/9FgWZOxAQKI32p98aYW02i4hjTES2sL0bu6pb+Qsm9a QxsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=URq+sezudUPe9d/XMTjGEMykzdsbapjE5tGWPHWfOW4=; b=PHscqitJfXPnKSR76PJGK7zVs8dM+yiOz1wKw8t9h/Jrn3h0CXpbzKgMFveHOzsewo Ws6d0g60IjWaluDRD0MI6qCt5PL3IxCcy+oF9aGWpJxMTSfQSYHRKMB17VZ/kGcrtnw1 fhPVbBKHyVKeoDFt71rrA/awDZRtd4z4C22bDrvyDpzYC+UWUeyoBiCk4uxtKq2ggw/B VC1yNT1sduuOGwP9R2veNHB5lXhUy0DRIxx4UX1gB0IO/3BL+pAi1CMiHwJeUvja9iPz kCTUYB5OetNJW6THqrbLnxEsq2pxPEQfgoqq/sjLo5+gmjgB5yUaVJa5fy2Hkd4bKICZ NCuA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Return-Path: Received: from aqmola.ilbers.de (aqmola.ilbers.de. [85.214.62.211]) by gmr-mx.google.com with ESMTPS id l26si859227lja.0.2018.02.06.03.01.56 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Feb 2018 03:01:56 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) client-ip=85.214.62.211; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Received: from localhost.localdomain ([188.227.110.165]) (authenticated bits=0) by aqmola.ilbers.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id w16B1Qmf028824 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 6 Feb 2018 12:01:43 +0100 From: Alexander Smirnov To: isar-users@googlegroups.com Cc: Alexander Smirnov Subject: [PATCH 3/5 v3] buildchroot: Enable isar-apt Date: Tue, 6 Feb 2018 14:01:19 +0300 Message-Id: <20180206110119.10580-1-asmirnov@ilbers.de> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180205134844.27221-1-asmirnov@ilbers.de> References: <20180205134844.27221-1-asmirnov@ilbers.de> X-TUID: 3oMx+RUS35WU 8<-- Changes since v2: - Move do_prepare after do_build. This will not trigger do_build for reoccurent builds. 8<-- This patch provides access to isar-apt from buildchroot. It does the following: - mount isar-apt during buildchroot building. - umount isar-apt using bitbake events. Also it needs to keep Isar build tree clean from any mounts despite on whether build succeed of failed. bitbake provides various events that could trigger custom python hooks. In this patch BuildCompleted event is used, which happened when bitbake finished its execution despite on the result. Signed-off-by: Alexander Smirnov --- meta-isar/conf/local.conf.sample | 3 +++ meta/classes/dpkg-base.bbclass | 2 +- meta/classes/isar-events.bbclass | 20 ++++++++++++++++++++ meta/recipes-devtools/buildchroot/buildchroot.bb | 20 +++++++++++++++++++- .../buildchroot/files/multistrap.conf.in | 8 +++++++- 5 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 meta/classes/isar-events.bbclass diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample index 2ae43e7..fc760ed 100644 --- a/meta-isar/conf/local.conf.sample +++ b/meta-isar/conf/local.conf.sample @@ -158,3 +158,6 @@ IMAGE_INSTALL = "example-hello example-raw" # # Default parallel jobs for bitbake: BB_NUMBER_THREADS = "4" + +# Add event handlers for bitbake +INHERIT += "isar-events" diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 026028f..74dedc5 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -2,7 +2,7 @@ # Copyright (C) 2017 Siemens AG # Add dependency from buildchroot creation -do_build[depends] = "buildchroot:do_build" +do_build[depends] = "buildchroot:do_prepare" # Each package should have its own unique build folder, so use # recipe name as identifier diff --git a/meta/classes/isar-events.bbclass b/meta/classes/isar-events.bbclass new file mode 100644 index 0000000..55fc106 --- /dev/null +++ b/meta/classes/isar-events.bbclass @@ -0,0 +1,20 @@ +# Isar event handlers. +# +# This software is a part of ISAR. +# Copyright (C) 2015-2017 ilbers GmbH + +addhandler isar_handler + +python isar_handler () { + import subprocess + + devnull = open(os.devnull, 'w') + + if isinstance(e, bb.event.BuildCompleted): + bchroot = d.getVar('BUILDCHROOT_DIR', True) + + # Clean up buildchroot + subprocess.call('/usr/bin/sudo /bin/umount ' + bchroot + '/isar-apt || /bin/true', stdout=devnull, stderr=devnull, shell=True) + + devnull.close() +} diff --git a/meta/recipes-devtools/buildchroot/buildchroot.bb b/meta/recipes-devtools/buildchroot/buildchroot.bb index 51f9d5d..60195de 100644 --- a/meta/recipes-devtools/buildchroot/buildchroot.bb +++ b/meta/recipes-devtools/buildchroot/buildchroot.bb @@ -32,7 +32,9 @@ BUILDCHROOT_PREINSTALL ?= "gcc \ WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}" do_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" -do_build[dirs] = "${WORKDIR}/hooks_multistrap" +do_build[dirs] = "${WORKDIR}/hooks_multistrap \ + ${BUILDCHROOT_DIR}/isar-apt" +do_build[depends] = "isar-apt:do_cache_config" do_build() { E="${@ bb.utils.export_proxies(d)}" @@ -67,6 +69,8 @@ do_build() { } trap '_do_build_cleanup' EXIT + do_prepare + # Create root filesystem sudo -E multistrap -a ${DISTRO_ARCH} -d "${BUILDCHROOT_DIR}" -f "${WORKDIR}/multistrap.conf" @@ -76,4 +80,18 @@ do_build() { # Configure root filesystem sudo chroot ${BUILDCHROOT_DIR} /configscript.sh _do_build_cleanup + + do_cleanup +} + +do_prepare[nostamp] = "1" + +do_prepare() { + sudo mount --bind ${DEPLOY_DIR_APT}/${DISTRO} ${BUILDCHROOT_DIR}/isar-apt +} + +addtask prepare after do_build + +do_cleanup() { + sudo umount ${BUILDCHROOT_DIR}/isar-apt 2>/dev/null || true } diff --git a/meta/recipes-devtools/buildchroot/files/multistrap.conf.in b/meta/recipes-devtools/buildchroot/files/multistrap.conf.in index a0b28e3..480a4b8 100644 --- a/meta/recipes-devtools/buildchroot/files/multistrap.conf.in +++ b/meta/recipes-devtools/buildchroot/files/multistrap.conf.in @@ -6,7 +6,7 @@ noauth=true unpack=true ignorenativearch=true bootstrap=##DISTRO_MULTICONF_BOOTSTRAP## -aptsources=##DISTRO_MULTICONF_APTSOURCES## +aptsources=isar-apt ##DISTRO_MULTICONF_APTSOURCES## configscript=##CONFIG_SCRIPT## setupscript=##SETUP_SCRIPT## hookdir=##DIR_HOOKS## @@ -29,3 +29,9 @@ source=##DISTRO_APT_SOURCE_SEC## suite=##DISTRO_SUITE##/updates components=##DISTRO_COMPONENTS## omitdebsrc=true + +[isar-apt] +source=file:///isar-apt +suite=isar +components=main +omitdebsrc=true -- 2.1.4