From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6597806297219858432 X-Received: by 2002:a1c:a014:: with SMTP id j20-v6mr2070581wme.15.1536171486239; Wed, 05 Sep 2018 11:18:06 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:f2ce:: with SMTP id d14-v6ls934183wrp.14.gmail; Wed, 05 Sep 2018 11:18:05 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaSQLYaEaOwHMN/XDfWYk2nUN9EXVFO2gzSijYoIJBOl0y2ygY6zlZsnLXumuS8briGrjeX X-Received: by 2002:a5d:5201:: with SMTP id j1-v6mr3584765wrv.30.1536171485613; Wed, 05 Sep 2018 11:18:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536171485; cv=none; d=google.com; s=arc-20160816; b=ShbZyrA/tpUsBenzMnV0hA96KLoObL06PB3Wi4kXeINlu6tPJUCRI+/YLpWHSBV5AY /CyMmWrPb/YvQHHkaWFqjIOgqdkKE/S38Tslho3WREEWqKNFI6Xj8sMhHsKkFcKfXV/4 aNLVJ5VBJBHX7xBGoDSGC4XLXttiOCt2s9KK7qRj7RsokkQr3Yl84U4Nv8w26rkQHRpk 7TKzcPzFggVxX//MP9IxAatNSTAKV7D2ro8KM0D66TTsCMig0XBwnWhra1Y7ysxLU59Z G8Tchkk9NO3iZJI2NSVbilZlLZzDyaxQ/EbCFQ03yCXn9Be3u58ZXcO1fv5q1voJiG/z eH/w== 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; bh=LL4H/75nHWbrz+6Ik/FizR8nzckgY9ffQ9trnNc4UHY=; b=UCS3dwt2IEZne3KwodKw3OGwo2pnP+D+czlzQoUHf+ZuwJPqrf+MASaI2nGiOahwo2 kJJO01QFoS0V4RqSw+7qu7ppYnDd68ywfLcZI+H6WaLdhBc1Z7abvW3SdOqtADFrJOGa 4kjKteQNOd+LMcr+yQHKP2GdAwDSaiTX+ytMOil1dMyIz6cujiZVRK1xQ69xlbVMM7FQ X+qPGdPc16lMPjUM65H6ekz0JKt6ImW5zVylObUbZuXfw2RCrLr3WSIM8IlhwOxWj2DT pFYkrk+vQb4D3hcU0YoLKi0/zrnkLCO+35nBG0ffG46K/dnMoYHctVOLSaW2dsk8SmDq Y5cQ== 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 t23-v6si387584wmh.4.2018.09.05.11.18.05 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Sep 2018 11:18:05 -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 mail1.sbs.de (mail1.sbs.de [192.129.41.35]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id w85II5RF013625 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 5 Sep 2018 20:18:05 +0200 Received: from md1f2u6c.ad001.siemens.net (md1q0hnc.ad001.siemens.net [139.25.68.37] (may be forged)) by mail1.sbs.de (8.15.2/8.15.2) with ESMTP id w85II4cp028591 for ; Wed, 5 Sep 2018 20:18:05 +0200 From: Jan Kiszka To: isar-users Subject: [PATCH 1/5] meta: Factor out buildchroot class Date: Wed, 5 Sep 2018 20:18:00 +0200 Message-Id: X-Mailer: git-send-email 2.16.4 In-Reply-To: References: In-Reply-To: References: X-TUID: U+wHgV8oJVTo From: Jan Kiszka This makes commonly useful things like BUILDCHROOT_DIR determination as well as mounting into the builchroot available for reuse outside of the dpkg scope. Signed-off-by: Jan Kiszka --- meta/classes/buildchroot.bbclass | 33 +++++++++++++++++++++++++++++++++ meta/classes/dpkg-base.bbclass | 33 ++++++--------------------------- 2 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 meta/classes/buildchroot.bbclass diff --git a/meta/classes/buildchroot.bbclass b/meta/classes/buildchroot.bbclass new file mode 100644 index 0000000..f67335e --- /dev/null +++ b/meta/classes/buildchroot.bbclass @@ -0,0 +1,33 @@ +# This software is a part of ISAR. +# Copyright (C) 2018 Siemens AG +# +# SPDX-License-Identifier: MIT + +ISAR_CROSS_COMPILE ??= "0" + +# Add dependency from the correct buildchroot: host or target +python __anonymous() { + mode = d.getVar('ISAR_CROSS_COMPILE', True) + if mode == "0": + dep = "buildchroot-target:do_build" + rootfs = d.getVar('BUILDCHROOT_TARGET_DIR', True) + else: + dep = "buildchroot-host:do_build" + rootfs = d.getVar('BUILDCHROOT_HOST_DIR', True) + + d.setVarFlag('do_prepare_build', 'depends', dep) + d.setVar('BUILDCHROOT_DIR', rootfs) +} + +MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" + +buildchroot_do_mounts() { + sudo flock ${MOUNT_LOCKFILE} -c ' \ + set -e + if ! grep -q ${BUILDCHROOT_DIR}/isar-apt /proc/mounts; then + mount --bind ${DEPLOY_DIR_APT}/${DISTRO} ${BUILDCHROOT_DIR}/isar-apt + mount --bind ${DL_DIR} ${BUILDCHROOT_DIR}/downloads + mount -t devtmpfs -o mode=0755,nosuid devtmpfs ${BUILDCHROOT_DIR}/dev + mount -t proc none ${BUILDCHROOT_DIR}/proc + fi' +} diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index a2d2ff0..edd111b 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -1,24 +1,12 @@ # This software is a part of ISAR. -# Copyright (C) 2017 Siemens AG +# Copyright (C) 2017-2018 Siemens AG +# +# SPDX-License-Identifier: MIT -ISAR_CROSS_COMPILE ??= "0" +inherit buildchroot DEPENDS ?= "" -# Add dependency from the correct buildchroot: host or target -python __anonymous() { - mode = d.getVar('ISAR_CROSS_COMPILE', True) - if mode == "0": - dep = "buildchroot-target:do_build" - rootfs = d.getVar('BUILDCHROOT_TARGET_DIR', True) - else: - dep = "buildchroot-host:do_build" - rootfs = d.getVar('BUILDCHROOT_HOST_DIR', True) - - d.setVarFlag('do_prepare_build', 'depends', dep) - d.setVar('BUILDCHROOT_DIR', rootfs) -} - do_adjust_git() { if [ -f ${S}/.git/objects/info/alternates ]; then sed -i ${S}/.git/objects/info/alternates \ @@ -45,7 +33,6 @@ def get_package_srcdir(d): PP = "/home/builder/${PN}" PPS ?= "${@get_package_srcdir(d)}" -BUILDROOT = "${BUILDCHROOT_DIR}/${PP}" do_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" # Empty do_prepare_build() implementation, to be overwritten if needed @@ -59,21 +46,13 @@ do_prepare_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" # deployed to isar-apt do_prepare_build[deptask] = "do_deploy_deb" -MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" +BUILDROOT = "${BUILDCHROOT_DIR}/${PP}" -# Wrap the function dpkg_runbuild with the bind mount for buildroot dpkg_do_mounts() { mkdir -p ${BUILDROOT} sudo mount --bind ${WORKDIR} ${BUILDROOT} - sudo flock ${MOUNT_LOCKFILE} -c ' \ - set -e - if ! grep -q ${BUILDCHROOT_DIR}/isar-apt /proc/mounts; then - mount --bind ${DEPLOY_DIR_APT}/${DISTRO} ${BUILDCHROOT_DIR}/isar-apt - mount --bind ${DL_DIR} ${BUILDCHROOT_DIR}/downloads - mount -t devtmpfs -o mode=0755,nosuid devtmpfs ${BUILDCHROOT_DIR}/dev - mount -t proc none ${BUILDCHROOT_DIR}/proc - fi' + buildchroot_do_mounts } dpkg_undo_mounts() { -- 2.16.4