From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6519007876157014016 X-Received: by 10.28.91.147 with SMTP id p141mr2310410wmb.31.1517838550022; Mon, 05 Feb 2018 05:49:10 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.28.170.1 with SMTP id t1ls1577630wme.7.gmail; Mon, 05 Feb 2018 05:49:09 -0800 (PST) X-Google-Smtp-Source: AH8x225hbfg8vB9iJWm7CDRxI7jIYWfr1SkIPlXMZWsnK2EsmCHVLqLDY+yFJC72BHwp2OCi9caP X-Received: by 10.28.87.194 with SMTP id l185mr5479944wmb.9.1517838549616; Mon, 05 Feb 2018 05:49:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517838549; cv=none; d=google.com; s=arc-20160816; b=xK8kR9J1vq3wvHbTi7Nf8bwwZv05vTaM9rTQVTN1MCE/RiHJVoJDHhoDixoi0h1BG5 /TNL7BuuVPvmxosAYDyyTa2zn+VVELlGYGTJXeYVAePD/dQfM0gy6lrGyM32CnirkVVj e5Rc/rpLyaX0cR4OTCitxoZyxihwpuYcUgI91cgOgKKJcFbbO/mQ2GqkUnp4kMgAYJK9 tp7Sm2dOUPfLbsvZbXaelp2asEHbbsGIq9l3xf4XvrUYGckc4VNM6r/gOLriNaCATbtD vgNDZAwjn8dDKDABsDuC2eLlRuZGls/W3UCZrKdq8vFdK9030sqDax9RUomjhA7rgZr2 qKVg== 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=bZ6KpNDSXgA+eFbJfTJFmoNXiMjs361nmRkoBQzMhhw=; b=H4OT3SrYl2Zg+HiLblcKyLjmLNWCrPEv5IVzYWgxY0JnjF81x0nhxWPb4lu27QKuef mr0J+D6aGA3lWGO4g3w7J1tR8jNEjTfz0zX4SsncJTuDJXsGpYNrhSfOs4/V9yiqJVLe O58iiCZ9cdi9niLJHN84+zfeJiuUfC/QBk3PSVF9Khdl3HsFgHiPYu/1ztyaVW4lt/Np myN/GKV5NwtLQsWGYFpBnk0yjBdMPs9/BcTOY1V+ckCK8Pp7zwr+Mcj7q2Lq/L+ISbAd uEx4G5Mdo+tp0cp5QNMN433Y7/rGUZSzgUHBNIN1vd4ZGv4qvaq16mJIrS2HuRTUoq+C 8TNg== 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 200si885972wml.2.2018.02.05.05.49.09 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Feb 2018 05:49:09 -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 w15Dmp4E025079 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 5 Feb 2018 14:48:57 +0100 From: Alexander Smirnov To: isar-users@googlegroups.com Cc: Alexander Smirnov Subject: [PATCH 3/5 v2] buildchroot: Enable isar-apt Date: Mon, 5 Feb 2018 16:48:44 +0300 Message-Id: <20180205134844.27221-1-asmirnov@ilbers.de> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180205095931.23903-1-asmirnov@ilbers.de> References: <20180205095931.23903-1-asmirnov@ilbers.de> X-TUID: Rg788j7lTRgf 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/isar-events.bbclass | 20 ++++++++++++++++++++ meta/recipes-devtools/buildchroot/buildchroot.bb | 10 ++++++++++ .../buildchroot/files/multistrap.conf.in | 8 +++++++- 4 files changed, 40 insertions(+), 1 deletion(-) 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/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..0044a71 100644 --- a/meta/recipes-devtools/buildchroot/buildchroot.bb +++ b/meta/recipes-devtools/buildchroot/buildchroot.bb @@ -31,8 +31,18 @@ BUILDCHROOT_PREINSTALL ?= "gcc \ WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}" +do_prepare[nostamp] = "1" +do_prepare[dirs] = "${BUILDCHROOT_DIR}/isar-apt" + +do_prepare() { + sudo mount --bind ${DEPLOY_DIR_APT}/${DISTRO} ${BUILDCHROOT_DIR}/isar-apt +} + +addtask prepare before do_build after do_unpack + do_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" do_build[dirs] = "${WORKDIR}/hooks_multistrap" +do_build[depends] = "isar-apt:do_cache_config" do_build() { E="${@ bb.utils.export_proxies(d)}" 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