From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7068247660288802816 X-Received: by 2002:a2e:9247:0:b0:244:ba8f:df85 with SMTP id v7-20020a2e9247000000b00244ba8fdf85mr4867865ljg.257.1645783347546; Fri, 25 Feb 2022 02:02:27 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6512:3b8e:b0:443:9610:6a0c with SMTP id g14-20020a0565123b8e00b0044396106a0cls2098912lfv.1.gmail; Fri, 25 Feb 2022 02:02:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJxt3jTwKY7x2qfis+xQ6FT6zyWXwq7WMf6OvVMoNJJnSLmqUkEUCOR0nx1fksj0xi6jGRiW X-Received: by 2002:ac2:5492:0:b0:43f:1c2e:b04c with SMTP id t18-20020ac25492000000b0043f1c2eb04cmr4749092lfk.502.1645783346546; Fri, 25 Feb 2022 02:02:26 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1645783346; cv=pass; d=google.com; s=arc-20160816; b=vsKAViAAOAoldd5+NmMGVrIvidRql7Mff9WZW55nBUIf6cuzSSRU2s1KUByDERxYNf dnUzZ+QnVxWNgM+1f16MmJVlWxRfKVwMipRgqbuXNCueY/OgzyRgOLKnkqad9uEmUxsA gkz790RXqw1/6D/YTlLs19mNDN+x+NFOwz4Fby883hAScw+t5ctQgRkd25nxN8cHLA5z IIiBYfFPKXwr2Ui9zW3SP27kOQnSsKwimb/I0McP/oTtiX7J1QaZX45G8WlSu+V5PXt/ l4YdTGCYYNTrReo5uRzxBhX77uZmQpOInPb5RBnWS/P/MG77LqV/UEq4QtIUOlaAmuuz wGJA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-transfer-encoding:references:in-reply-to :message-id:subject:cc:to:from:date:dkim-signature; bh=Ju1gfA+/sXuoHPTs7zsZ3sFkN4e9JZ8JXZ2WVL48XZo=; b=G4G16Qd2lsKVNI7bDGhnm9h0UMbwXoPGXE9hxIVcrfJVuCwNViWmeGojqvsJFtAyva /M8t7F4sa52YXEvD9S1LFBTl336oIxg7TWCVvaxEjI7B9QINK1AZQjtn952zMnynLpG7 D0WXR6dwM95sLoj2HdcZRLxOpdaLpiBpvt466yEGmt+OCJnpI/BhEzpRBDqkIv2G+B2G ZJfP8QOOKwxoPQy7HDoJECrgAKF0c3mYttPrCCAg9D5wGWviaFuDmNNYvUqzwwxFPXXh xvH9wWxqaQt+8u7b1mrubWrhq4bnrP6fpMLt3mip5dcmkwzQtzwzQW9Mrt75L5FcA0WF vjlw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=rHzRpT56; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of henning.schild@siemens.com designates 2a01:111:f400:7e1a::62b as permitted sender) smtp.mailfrom=henning.schild@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2062b.outbound.protection.outlook.com. [2a01:111:f400:7e1a::62b]) by gmr-mx.google.com with ESMTPS id d22-20020a056512369600b0044394c79718si92339lfs.11.2022.02.25.02.02.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Feb 2022 02:02:26 -0800 (PST) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 2a01:111:f400:7e1a::62b as permitted sender) client-ip=2a01:111:f400:7e1a::62b; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=rHzRpT56; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of henning.schild@siemens.com designates 2a01:111:f400:7e1a::62b as permitted sender) smtp.mailfrom=henning.schild@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bTNrlnbFXigCvgrwGGmRTGtuhiix7YsbYAzKPgdC/tK2PiyLiEZto88yaNpLBtdGZLqRQvtgfS8LPnfc5tF52hjG0AQibdLHVukIETf/5v8XoDEVKiC2pcewsepqgL0IRf6wY8uMxRB6eqyhN2Z43hht9xSlWLof9L6CujpzH+KZysVBd3NxhEwHsAkON3YR18u+c50PeBhFPWun8owi53XizT3LUcjw+GHMEq7E/GyWyQ6gYbVYahUPZSIh5oEiVLHVVTTYcW9nZLl1wJTVJBm/i82wmakagG6WWP6qgmc1Nv5Vn8qgeoFoqWvD8MDSHZ8lUW491L9m1HPgMpxKYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ju1gfA+/sXuoHPTs7zsZ3sFkN4e9JZ8JXZ2WVL48XZo=; b=oCt7/h6J3942++5aDORPtwtjlo9vKWathlQbbhcy7jO4fYmcIcjn/G+2B3XR7YTD8zEDBasp9fN8hKSU48TgsJLfIebyEN4Upesr4f8zg/RO6VUAuykwJXSJkL9mOu629Ch21A4UWVLF9qA5Szu5mlv39fCdagRLsXfjAKadWHmDe95LGod86Z4OW1L9fyMcVYzHJkOz0FlqWjJuoXRhmCe0lp8+poVW77rvPbhMG2v//EPWVG3ec0E+KVKP1H2xUoOUF6JLxkTMEc5oGzhHTf4zzn8H4eRyG2ap8fdfWG5jZatrjF/7Wclph61t79nBPwYKHVEbTe1KUeg6lnURYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ju1gfA+/sXuoHPTs7zsZ3sFkN4e9JZ8JXZ2WVL48XZo=; b=rHzRpT56zn4sTTCeFKM/52kLTkb/pVqtVxO27TliIRQOT4QRilQFe2bqJ/P59s0q2LU8+KWZHsGntBrPVndtn3K5oxzPBgGl5pS1WTb0bfjFuZzbEbdGX7jjtLcsdVrDiljexXhz0yXp5qnUMrPXaCpAWNYO7ljwYGls0GfRmDW62T3aurgnGWMUKYjnHq3I4ISB1txBr6Sp9itaZlBwHHoL5ZdZYKmmZDI3I5nXUss71T8aPDjDrSjHB7PjvDnR2nEmf37HUYzu6oafCO+AmcfhUMvVCPyB1DEDh/iZc5kIT1ksIsmOSQj/6KO3BrAMA2bvDS9hplZaiUB+lkdVEw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siemens.com; Received: from AM7PR10MB3462.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:13d::17) by DB7PR10MB2219.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:4d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.25; Fri, 25 Feb 2022 10:02:24 +0000 Received: from AM7PR10MB3462.EURPRD10.PROD.OUTLOOK.COM ([fe80::a116:222:eb1b:efdf]) by AM7PR10MB3462.EURPRD10.PROD.OUTLOOK.COM ([fe80::a116:222:eb1b:efdf%4]) with mapi id 15.20.5017.025; Fri, 25 Feb 2022 10:02:24 +0000 Date: Fri, 25 Feb 2022 11:02:20 +0100 From: Henning Schild To: Uladzimir Bely Cc: isar-users@googlegroups.com, Adriaan Schmidt Subject: Re: [PATCH] sstate: refactor to avoid intermediate files Message-ID: <20220225110220.4145c34d@md1za8fc.ad001.siemens.net> In-Reply-To: <4665451.OV4Wx5bFTl@home> References: <20220224121025.1153508-1-adriaan.schmidt@siemens.com> <4665451.OV4Wx5bFTl@home> X-Mailer: Claws Mail 3.18.0 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AM6PR0502CA0044.eurprd05.prod.outlook.com (2603:10a6:20b:56::21) To AM7PR10MB3462.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:13d::17) Return-Path: henning.schild@siemens.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0277ed17-dab2-4209-27e0-08d9f845ebd6 X-MS-TrafficTypeDiagnostic: DB7PR10MB2219:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IHGJMzrpEEaQcQ2gL2H8VenpsXSiq67V+FFUndS6gwFXb5B9dIyNmE/AtgiN3kApb27EyKmw6pkwXnz9r9l6JEjM+mTZ4K6qkBxIm7VgSAX4fMeDny6q+WIPMX8ljd48IAGyBe90qz0H15tBdVpMRqRkJtx5w2bPcoPhljqLJtIWiL99uJ8CvaXfSOQ9YEoNcmWKXhyESvVd9b3n7HJMUQHNBRLocRhJo8+vUBJocJkHONbfozcPZfaxyDOHsMfrkqRWWIlACqBxa6+BMZN4wkEcoRBCm6nOi9EmvXQMn1FuOLJLYDOnvASWcn83GGG1GH35lRUFlb4rOu51rXzEYm7jHyflrignKKUCLTSHjFrp7semyPuTdnwi4cvazIgM6f0/Ls/a/QjKzwrCJmczEhRoOshQz+SXpigGqdqL5qH5yvSkC76Aua8Lqj19EfgViClNvTDw6Ka6FVQrIj8KMBqR/A+VYjw+FYeK9RVkWwoiydhBLmRpEDSry//rZiR8CxZp8SVv5En+MAmaO8Ym224yp0oG8gBI3Pyc/ADJ9dgsUanJhz58rBSOYxaIEq1SvI/0X2gT+oqhFI9ni2dTB2oCdyhIHuTnXPWsrk+YQRfVAFQA+oAoG6A2nq23Kqu26Cz+x8+Mu5obCwizp3445oyOX5td3QLgpG4YwlQwzWu68FJr+NKUpi5eDS41A5RpjcyAJdF/Bpq/4qfJdk6AUVjUeoh/U69yTIEEhZTkJpmfJxEMhLeSYgqlrr4aW3/8NZSk/DDAaYck42Bt9hepsTXEERXBRi91yxguZ3/7wkw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM7PR10MB3462.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(508600001)(82960400001)(66476007)(1076003)(66556008)(8676002)(4326008)(66946007)(107886003)(5660300002)(8936002)(6666004)(6486002)(9686003)(966005)(6506007)(186003)(6512007)(2906002)(6916009)(316002)(83380400001)(86362001)(38100700002)(44832011)(360504008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Bl0r2BE3ozDbUpLFJbRISZbpQBhTC5Gz54FV85LQ5bNWwJfIRN8VyFfpLGLu?= =?us-ascii?Q?j9I7IYuzZomfOH29ovUZQ9rhLA/P8vtyjVzVTG+iwi2ec07E39htfajSOHuF?= =?us-ascii?Q?PXZfJ4QQgK4YjWAWUPRgUpn8+n3fZLpkl/LQ0/H0dl+ijPJAZx8I5vpjxE2w?= =?us-ascii?Q?1hO4bYlhktfBvJBwK8+rTVOvxiG4oVX4zOrQm/jZGq/1yyoPvQ8t25F5xUOj?= =?us-ascii?Q?g201a6X+KkyVKrPszqiB4oBoBDOBaWnTREdkvEUrEB9Zdug43kxU5EpQn+2q?= =?us-ascii?Q?geHWkeOlPs+1hDvpo+Z+MQWpi1ifGKfoqWGFinWOiZ8cG8V94HnJDZ9+j+NB?= =?us-ascii?Q?LF0mQqyRbGREYE8nBckic39Rm3SyAXmBs/FAAvKGueGFR2/fgnoFbMISP9C4?= =?us-ascii?Q?Y8OivHH69c4jygp9J9R3A2LMivgeFxJkVdEtpGheiInttaaXHZBw6+9b+ERs?= =?us-ascii?Q?bpGL3v80pijeQwGLA1tGn18jtY34nYM9sG97j02NwPI1CHAGfdo1nJCdREN0?= =?us-ascii?Q?MU6yZXuLcVSuflSvNmABHUFsDqIehoz2hrOwWUWVom1TAmmoVmlfSN5w7Iry?= =?us-ascii?Q?K2RTK/wMv3xMRLf8E2zsuxch2M2i+d3tzKhWIVCUWNrzPNcQcWjG6AzpHXJd?= =?us-ascii?Q?I0LAo03hq9L3ONgixyoFce212VttRs3/XuVKQ74nOUKPx0QPHCPU0kcOyHv5?= =?us-ascii?Q?FpFUsEl2qMQTPP66ZSuozJ4BIaumw3nvCI94fSf0M6Fuu/IVyzS86ou6s941?= =?us-ascii?Q?LXF3GU5KuRBWTr4ilBYZqiMB8hTGYJjXCt2XpM5YHm6aGLf7br5AuwJRMK5X?= =?us-ascii?Q?/E1v2Bf0a54CrYVYOaD8SgNFaqTxw9q2nerhqcKvst1S0m60U1uH2AROm/cX?= =?us-ascii?Q?MEdbkPLjG9VL5IUW7hJeW6Tj3AC/3hReDgn3nywr7P4xdyR2/pd/evaJ0quv?= =?us-ascii?Q?0Ffv/kV5GZQP3u2wGU7QwrtEvPK4cHfndQSE5IdG7XMMrcVy69sAG1Tjpzff?= =?us-ascii?Q?gnHywTHSNTJaCSGy+7n9H/wjxaI3c1D6CAFh1Ya4468CTFItW4tqW9n3NCNx?= =?us-ascii?Q?lzYRbjUl1q+xSvuMQz3PMWdRElFvHteab6c0mJ0dPsnOw/Zlik1LMiVdfFKi?= =?us-ascii?Q?Vgnnvq4/qt7BAeDDsHTlXAXDI7P7YbziowZD7AaClgjr+pplYvbrK8aBTiOg?= =?us-ascii?Q?YbjruidwE0Ij+L7vjt+n5DthdXpvp/ejMhIti4LdlMSlouHhVkGHS05QSgYY?= =?us-ascii?Q?atlG9/p9wbITHlouyZpG4vOyGMxSa0ClVhzvvr94gT4zKWSb9TQh9J2tBOGV?= =?us-ascii?Q?3GVqqrloy/WRflcaUWPCUVl1i3k+xrW5hDAXX/HNBXOdvACkRqMJ/NnQBHwG?= =?us-ascii?Q?6IU70YEhdzFIHDrurV6n7/c7VqYCjJSK/u1epfzhUg64UW2onHuXEgK89ZPy?= =?us-ascii?Q?JJXNMbWrtnbFpQx4ZAV2VGu4gI/nAijk0NXn37vMpR33DYcSKZqnFLIA0WYJ?= =?us-ascii?Q?b1aLIOg2WiSgcNq/k1GqbReaXIUpIkMSJnY+w95B3F/iDECqBLKTCoDIVoXd?= =?us-ascii?Q?C4/3dz6dbKj8ZItNqPhaiAuY6ocDhu+ki6898aNOmxzFj4P6tiHjB97J5uqh?= =?us-ascii?Q?a/BwyOuCImdpSlBeNulrXpOQwkCyTTYViN8wws+XVLKelFL6V61yorTgisIe?= =?us-ascii?Q?8dRLi7wPncVoB5HWIq/sesnyx2STqiiD4zQFXq34oIfMw88Ux2VHyv7LBX03?= =?us-ascii?Q?cPqCXcfLRJAHcw3EQbV1xLe033jtCGM=3D?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0277ed17-dab2-4209-27e0-08d9f845ebd6 X-MS-Exchange-CrossTenant-AuthSource: AM7PR10MB3462.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2022 10:02:24.4310 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hU8hqBVBDVBEqsZHM1iak1cRKiw/6T4WKmA2cR9358mOaHjjNDHQhnRjPdP27oCht9q9+tPZ9vErdBuEAk4r2xwXce4Xco/He5H19x+oEQE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR10MB2219 X-TUID: 73NcCtd+rEyW Am Fri, 25 Feb 2022 12:51:30 +0300 schrieb Uladzimir Bely : > In the email from Thursday, 24 February 2022 15:10:25 +03 user > Adriaan Schmidt wrote: > > By using the SSTATECREATEFUNCS and SSTATEPOSTINSTFUNCS > > hooks (instead of sstate-interceptfuncs) we can avoid > > the explicit creation of intermediate/temporary files > > during sstate caching/restoring, which saves disk space > > during build. > > > > Signed-off-by: Adriaan Schmidt > > --- > > meta/classes/dpkg-base.bbclass | 16 ++++++------ > > meta/classes/rootfs.bbclass | 25 > > ++++++++++++------- .../isar-bootstrap/isar-bootstrap.inc | > > 22 +++++++++------- 3 files changed, 36 insertions(+), 27 > > deletions(-) > > > > diff --git a/meta/classes/dpkg-base.bbclass > > b/meta/classes/dpkg-base.bbclass index 928856a9..86933c57 100644 > > --- a/meta/classes/dpkg-base.bbclass > > +++ b/meta/classes/dpkg-base.bbclass > > @@ -237,27 +237,25 @@ python do_dpkg_build() { > > addtask dpkg_build > > > > SSTATETASKS += "do_dpkg_build" > > -DPKG_SSTATE = "${WORKDIR}/dpkg-sstate" > > -do_dpkg_build[dirs] += "${DPKG_SSTATE} ${S}/.." > > -do_dpkg_build[cleandirs] += "${DPKG_SSTATE}" > > -do_dpkg_build[sstate-plaindirs] = "${DPKG_SSTATE}" > > -do_dpkg_build[sstate-interceptfuncs] = "dpkg_build_sstate_prepare" > > +SSTATECREATEFUNCS += "dpkg_build_sstate_prepare" > > +SSTATEPOSTINSTFUNCS += "dpkg_build_sstate_finalize" > > > > I tested the patch and it looks and works well. > > I also tried to find a way to reuse `sstate-install-` > directories which are deleted automatically and look much more > "native" for sstate that our custom `rootfs-state` or > `bootstrap-sstate` or `dpkg-sstate`, but didn't succeed, being not so > much familiar with sstate. I also tried that but really those are SSTATE_BUILDDIR and seem class internal. I thought if i happen to choose a name that will later match SSTATE_BUILDDIR the cleanup would be done only at the end. But reading "sstate_package" one can see that the directly will be cleaned also at the beginning. https://github.com/ilbers/isar/blob/ffdd1b0ce026d21c8b62c06c926d205aad3078b6/meta/classes/sstate.bbclass#L650 So the better way seem to be the functions, which will execute in that dir and the dir will be cleaned up. > Reusing "standard" directories really reduces amount of code and > makes things simple. Those dirs seem clearly sstate internal with no way to hook in, or one would need to change the sstate class upstream first. Henning > > dpkg_build_sstate_prepare() { > > + # this runs in SSTATE_BUILDDIR, which will be deleted > > automatically if [ -n "$(find ${S}/.. -maxdepth 1 -name '*.deb' > > -print -quit)" ]; then - ln -f ${S}/../*.deb -t > > ${DPKG_SSTATE} > > + cp -f ${S}/../*.deb -t . > > fi > > } > > > > dpkg_build_sstate_finalize() { > > - if [ -n "$(find ${DPKG_SSTATE} -maxdepth 1 -name '*.deb' > > -print -quit)" ]; then - ln -f ${DPKG_SSTATE}/*.deb -t > > ${S}/.. > > + # this runs in SSTATE_INSTDIR > > + if [ -n "$(find . -maxdepth 1 -name '*.deb' -print -quit)" ]; > > then > > + mv -f ./*.deb -t ${S}/.. > > fi > > } > > > > python do_dpkg_build_setscene() { > > sstate_setscene(d) > > - bb.build.exec_func('dpkg_build_sstate_finalize', d) > > } > > > > addtask dpkg_build_setscene > > diff --git a/meta/classes/rootfs.bbclass > > b/meta/classes/rootfs.bbclass index 2bdb3b6d..ba86c60a 100644 > > --- a/meta/classes/rootfs.bbclass > > +++ b/meta/classes/rootfs.bbclass > > @@ -289,26 +289,33 @@ addtask rootfs before do_build > > do_rootfs_postprocess[depends] = "base-apt:do_cache > > isar-apt:do_cache_config" > > > > SSTATETASKS += "do_rootfs_install" > > -ROOTFS_SSTATE = "${WORKDIR}/rootfs-sstate" > > -do_rootfs_install[dirs] += "${ROOTFS_SSTATE} ${WORKDIR}/mnt/rootfs" > > -do_rootfs_install[cleandirs] += "${ROOTFS_SSTATE}" > > -do_rootfs_install[sstate-plaindirs] = "${ROOTFS_SSTATE}" > > -do_rootfs_install[sstate-interceptfuncs] = > > "rootfs_install_sstate_prepare" +SSTATECREATEFUNCS += > > "rootfs_install_sstate_prepare" +SSTATEPOSTINSTFUNCS += > > "rootfs_install_sstate_finalize" > > > > -# the buildchroot is owned by root, so we need some sudoing to > > pack and unpack +# the rootfs is owned by root, so we need some > > sudoing to pack and unpack rootfs_install_sstate_prepare() { > > + # this runs in SSTATE_BUILDDIR, which will be deleted > > automatically > > + # tar --one-file-system will cross bind-mounts to the same > > filesystem, > > + # so we use some mount magic to prevent that > > + mkdir -p ${WORKDIR}/mnt/rootfs > > 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 tar -C ${WORKDIR}/mnt -cpf > > rootfs.tar --one-file-system rootfs sudo umount > > ${WORKDIR}/mnt/rootfs > > + sudo chown $(id -u):$(id -g) rootfs.tar > > } > > do_rootfs_install_sstate_prepare[lockfiles] = > > "${REPO_ISAR_DIR}/isar.lock" > > > > rootfs_install_sstate_finalize() { > > - sudo tar -C ${WORKDIR} -xpf ${ROOTFS_SSTATE}/rootfs.tar > > + # this runs in SSTATE_INSTDIR > > + # - after building the rootfs, the tar won't be there, but we > > also don't need to unpack + # - after restoring from cache, > > there will be a tar which we unpack and then delete + if [ -f > > rootfs.tar ]; then > > + sudo tar -C ${WORKDIR} -xpf rootfs.tar > > + rm rootfs.tar > > + fi > > } > > > > python do_rootfs_install_setscene() { > > sstate_setscene(d) > > - bb.build.exec_func('rootfs_install_sstate_finalize', d) > > } > > addtask do_rootfs_install_setscene > > diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc > > b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc index > > 2f483f5a..d6f90f63 100644 > > --- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc > > +++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc > > @@ -395,24 +395,28 @@ EOSUDO > > addtask bootstrap before do_build after do_generate_keyrings > > > > SSTATETASKS += "do_bootstrap" > > -BOOTSTRAP_SSTATE = "${WORKDIR}/bootstrap-sstate" > > -do_bootstrap[dirs] += "${BOOTSTRAP_SSTATE}" > > -do_bootstrap[cleandirs] += "${BOOTSTRAP_SSTATE}" > > -do_bootstrap[sstate-plaindirs] = "${BOOTSTRAP_SSTATE}" > > -do_bootstrap[sstate-interceptfuncs] = "bootstrap_sstate_prepare" > > +SSTATECREATEFUNCS += "bootstrap_sstate_prepare" > > +SSTATEPOSTINSTFUNCS += "bootstrap_sstate_finalize" > > > > bootstrap_sstate_prepare() { > > - sudo tar -C $(dirname "${ROOTFSDIR}") -cpf > > ${BOOTSTRAP_SSTATE}/bootstrap.tar --one-file-system $(basename > > "${ROOTFSDIR}") + # this runs in SSTATE_BUILDDIR, which will be > > deleted automatically + sudo tar -C $(dirname "${ROOTFSDIR}") > > -cpf bootstrap.tar --one-file-system $(basename "${ROOTFSDIR}") + > > sudo chown $(id -u):$(id -g) bootstrap.tar > > } > > > > bootstrap_sstate_finalize() { > > - sudo tar -C $(dirname "${ROOTFSDIR}") -xpf > > ${BOOTSTRAP_SSTATE}/bootstrap.tar - sudo ln -Tfsr "${ROOTFSDIR}" > > "${DEPLOY_ISAR_BOOTSTRAP}" > > + # this runs in SSTATE_INSTDIR > > + # - after building the bootstrap, the tar won't be there, but > > we also don't need to unpack + # - after restoring from cache, > > there will be a tar which we unpack and then delete + if [ -f > > bootstrap.tar ]; then > > + sudo tar -C $(dirname "${ROOTFSDIR}") -xpf bootstrap.tar > > + sudo ln -Tfsr "${ROOTFSDIR}" "${DEPLOY_ISAR_BOOTSTRAP}" > > + rm bootstrap.tar > > + fi > > } > > > > python do_bootstrap_setscene() { > > sstate_setscene(d) > > - bb.build.exec_func('bootstrap_sstate_finalize', d) > > } > > > > addtask do_bootstrap_setscene > >