From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6517546778931232768 X-Received: by 10.28.231.9 with SMTP id e9mr3724222wmh.12.1517484612450; Thu, 01 Feb 2018 03:30:12 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.223.129.228 with SMTP id 91ls2293749wra.6.gmail; Thu, 01 Feb 2018 03:30:11 -0800 (PST) X-Google-Smtp-Source: AH8x227mmVZueEOjueQRvpFEi4Vfzc064MDnWPJmkIO+Mknr6PykSqYbXuRyQqTDXBfkibRSUyHb X-Received: by 10.28.112.15 with SMTP id l15mr3144042wmc.8.1517484611800; Thu, 01 Feb 2018 03:30:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517484611; cv=none; d=google.com; s=arc-20160816; b=IOCUHX8B/3D7TRGF/EDnRyeeDYyVyExBlmJs1b6qCSvxBrrTJC0C/GznLf1vvq2cwY HT+SAJ99N/YSDFsjR9frTv/JLaE01+Ffx4/l9LyDwor/mXKIXWcKGrSNydFsv90fW0nY sW6Ar2KtvxdUNvZPYYdGhtwHtVnbCOdpQMwCW2hANzmdnNNIgq0vHwHrP5ZZiVbd0QvQ i+q3RHNKqY6QSjL0KV5kL2YDjgPmku8OZwcS7mK5gA3LqKH2YcRhX5Z9g/s/UJK8eL/0 oL0W01kyIQvOxxfCm6gb/GU+2X3i5jZdj/yzIt26VQy2VvbhN8ApxmYDLjDHHju0zuw5 4QgQ== 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=uJty8xX0vwctWCuklsuuBAaynja3GxZJNrCaJ/txn1g=; b=EOu3FZBhXg7shdb+whh8g29V+1Fk6zlqaWpoafG2qd0a2FPAvtC0sU7NQHBLW6qL9c kk7RhD6lFoUgSNAKpjn8vOgvnABXE2ZpiUt9IHw0/VXdFakOkgaXOFYbRwg3qdQJ1tuu zBOPO7oBHpU0i/m8Jodw+nIFghfy9+HPY4jBqVofg6rnGFFDV9UngZnt14lSbB+qQ3uV YeXmcqdzyPVG9NRW4TBo70f9L+VnwGNsih0oejz1yGGwwnSd462P0nMncgUkRj9n2Iuq V90v18bDNjlCUyhRnw7U03g4TWIdqOHLXu9yF/JSS5dTtnSK1MTIy3/7/1SvBGulr5K8 xJpA== 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 a12si131004wmg.4.2018.02.01.03.30.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Feb 2018 03:30:11 -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 w11BTpZX011589 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 1 Feb 2018 12:30:02 +0100 From: Alexander Smirnov To: isar-users@googlegroups.com Cc: Alexander Smirnov Subject: [PATCH 2/4] buildchroot: Enable isar-apt Date: Thu, 1 Feb 2018 14:29:42 +0300 Message-Id: <20180201112944.7877-3-asmirnov@ilbers.de> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180201112944.7877-1-asmirnov@ilbers.de> References: <20180201112944.7877-1-asmirnov@ilbers.de> X-TUID: gF1TDaJpYEP1 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 | 7 +++++++ .../buildchroot/files/multistrap.conf.in | 8 +++++++- 4 files changed, 37 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..cb90148 100644 --- a/meta/recipes-devtools/buildchroot/buildchroot.bb +++ b/meta/recipes-devtools/buildchroot/buildchroot.bb @@ -33,6 +33,7 @@ WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}" 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)}" @@ -58,6 +59,9 @@ do_build() { -e 's|##DIR_HOOKS##|./'"$WORKDIR_REL"'/hooks_multistrap|g' \ "${WORKDIR}/multistrap.conf.in" > "${WORKDIR}/multistrap.conf" + [ ! -d ${BUILDCHROOT_DIR}/isar-apt ] && install -d -m 555 ${BUILDCHROOT_DIR}/isar-apt + sudo mount --bind ${DEPLOY_DIR_APT}/${DISTRO} ${BUILDCHROOT_DIR}/isar-apt + [ ! -d ${BUILDCHROOT_DIR}/proc ] && install -d -m 555 ${BUILDCHROOT_DIR}/proc sudo mount -t proc none ${BUILDCHROOT_DIR}/proc _do_build_cleanup() { @@ -73,6 +77,9 @@ do_build() { # Install package builder script sudo install -m 755 ${WORKDIR}/build.sh ${BUILDCHROOT_DIR} + # Create share point for isar-apt + sudo install -d ${BUILDCHROOT_DIR}/isar-apt + # Configure root filesystem sudo chroot ${BUILDCHROOT_DIR} /configscript.sh _do_build_cleanup 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