From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7016230395466219520 X-Received: by 2002:ac2:5d69:: with SMTP id h9mr4946872lft.675.1634632165047; Tue, 19 Oct 2021 01:29:25 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6512:3499:: with SMTP id v25ls1776734lfr.0.gmail; Tue, 19 Oct 2021 01:29:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz8yLMvNEJchAodEOYFe6opLUNHWjdKr94hQswLSR9XHMMTnUh4do+oerMfKpKNxFHrd+A1 X-Received: by 2002:a05:6512:398a:: with SMTP id j10mr4731024lfu.402.1634632164162; Tue, 19 Oct 2021 01:29:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634632164; cv=none; d=google.com; s=arc-20160816; b=HNrAPUnBamwjjuPBqi461fwVyJ1ZH+wI/RJSgSGWKCARqFTEpiNvoA/M4hWZK/rNdX e4Q7sevWzKE5Rk5XwIGgwlVkmXuJUTkq0+J7CUD0qaab/hJrpJPdkoMIF05Zp/pGUUwE CXhdE5Gqj9ZdpNWzB71RHyQW1Gxa3dkjCPBX4M8HpNc/yDfCjbd2By3bz9hs/QXIQPgn 7az9ecrS9EzCrnmnhjV14W11M4zn9uVCXmfSiy1lj67OKPRpJGCIBEjvK8bArQ0ESE4j KDs09+9ppF9BY8EcuoQDdqJ+T3qMYWhCF+0apSsIjDMQ63vyK3jEV0oxmucoICQrQmKI UlRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=oB+A6u6kh9Hgru6pBXIKc58qSwUVodhtPnGP+0eeTUI=; b=XysnfTEftatG7xeQGbiG86qPcnDQJuqV3ViDNSWRuCyvxNr6opUN/JSH2CdNfUNB46 RxoY6ev9dR7CgjDbw2fRJXw8ZoJoi8RTHPXVvWkWU4eF7VUmjttTfYUuJ4KIQPQ3EZaY MQUaFGB5UYyRMv/kDPwv2hFv0bDuss/sGsVPLENnngMHNv2armFiXAhOefGPmJ2zUbPn uWHY4SE4kX8wmk7xCSjeIB9eYI4FQ3cL5X4htQLyHiLrPcrSLSfzi3Y7jiQw5GW2/zb5 WTFukw4kFz9W8oRAXc/pHlNxmu9Pg9lGx5luwQJhRn5eG8nY61QhtjYPcNi5z7yo1Cqp FkGQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of adriaan.schmidt@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=adriaan.schmidt@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from gecko.sbs.de (gecko.sbs.de. [194.138.37.40]) by gmr-mx.google.com with ESMTPS id i21si888594lfv.2.2021.10.19.01.29.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Oct 2021 01:29:24 -0700 (PDT) Received-SPF: pass (google.com: domain of adriaan.schmidt@siemens.com designates 194.138.37.40 as permitted sender) client-ip=194.138.37.40; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of adriaan.schmidt@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=adriaan.schmidt@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id 19J8TNso030672 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 19 Oct 2021 10:29:23 +0200 Received: from random.ppmd.siemens.net (random.ppmd.siemens.net [139.25.68.25]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 19J8TMYG002966; Tue, 19 Oct 2021 10:29:23 +0200 From: Adriaan Schmidt To: isar-users@googlegroups.com Cc: Adriaan Schmidt Subject: [PATCH v3 09/10] sstate: add caching to rootfs Date: Tue, 19 Oct 2021 10:29:12 +0200 Message-Id: <20211019082913.199818-10-adriaan.schmidt@siemens.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211019082913.199818-1-adriaan.schmidt@siemens.com> References: <20211019082913.199818-1-adriaan.schmidt@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: wBrwd0w5aG0o We cache the output of do_rootfs. Again "sudo tar" to preserve ownerships and permissions. In addition, it can happen that there are active mounts while tar'ing the rootfs (there shouldn't be, but I've seen cases where deb-src is mounted). Unfortunately --one-file-system does not stop at bind mounts, so we use a trick with a temporary mount to ensure that we don't package more than we want. Signed-off-by: Adriaan Schmidt --- meta/classes/rootfs.bbclass | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index b38de66..e0604e0 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -265,3 +265,30 @@ python do_rootfs() { pass } addtask rootfs before do_build + +do_rootfs[depends] = "base-apt:do_cache isar-apt:do_cache_config" + +SSTATETASKS += "do_rootfs" +ROOTFS_SSTATE = "${WORKDIR}/rootfs-sstate" +do_rootfs[dirs] += "${ROOTFS_SSTATE} ${WORKDIR}/mnt/rootfs" +do_rootfs[cleandirs] += "${ROOTFS_SSTATE}" +do_rootfs[sstate-plaindirs] = "${ROOTFS_SSTATE}" +do_rootfs[sstate-interceptfuncs] = "rootfs_sstate_prepare" + +# the buildchroot is owned by root, so we need some sudoing to pack and unpack +rootfs_sstate_prepare() { + sudo mount --bind ${WORKDIR}/rootfs ${WORKDIR}/mnt/rootfs -o ro + sudo tar -C ${WORKDIR}/mnt -cpf ${ROOTFS_SSTATE}/rootfs.tar --one-file-system rootfs + sudo umount ${WORKDIR}/mnt/rootfs +} +do_rootfs_sstate_prepare[lockfiles] = "${REPO_ISAR_DIR}/isar.lock" + +rootfs_sstate_finalize() { + sudo tar -C ${WORKDIR} -xpf ${ROOTFS_SSTATE}/rootfs.tar +} + +python do_rootfs_setscene() { + sstate_setscene(d) + bb.build.exec_func('rootfs_sstate_finalize', d) +} +addtask do_rootfs_setscene -- 2.30.2