From patchwork Wed Nov 4 09:22:12 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Clara Kowalsky X-Patchwork-Id: 5585 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Wed, 04 Nov 2026 10:23:06 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-yw1-f191.google.com (mail-yw1-f191.google.com [209.85.128.191]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 6A49N4Y3000489 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 4 Nov 2026 10:23:05 +0100 Received: by mail-yw1-f191.google.com with SMTP id 00721157ae682-8b0d36c1db7sf7982017b3.0 for ; Wed, 04 Nov 2026 01:23:05 -0800 (PST) ARC-Seal: i=3; a=rsa-sha256; t=1793784179; cv=pass; d=google.com; s=arc-20260327; b=Hufm4JWK+sUVHCCNQGxoEyL21TPYWp80QQlHSXB4komOKfT8p1GP8xPRGtCWB2+hso pHXA2ozaR8fyssYGvWQSAzuF4Z8Mj8jQi5/t3fIlC5wGwQLqK319t+1O5HYBAo9BCwlb 98dJYBU8BEpKa2a5XPnGRNy2Ofp6THDpM3tUNT9LhXGgAPekRDFq4DD+wVBT8F4fWAYo 0r+M5D0RMbalOid3Qo6JoJ9x2dmIBOTg+jFxhgCaZOSjFtfY4cNWqO/KCJpfXAIZQtRw szvy4FvUtWXqDwQB07lpykeAZ1p0/WdcKUr8u7Lp+DmY0OPEvi1XpbpR6JRe5th06XOM Y3GA== ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=eO0rjY4+h4WrnI7RSKVpSgPKzs9FaWQbU27rEpwFomY=; fh=FJeT8jvQJLXAnIMANKZNxN50CeHfmWkEjp4Z17f/imU=; b=pCuu+kcNNU98XpRxlDB4M/jzzy8PaSsNFRRKupaeXDMlhZVdhwvwTZVRV+8lVWk1/3 PsKBr/0aVdzmv8zPov/jhR7pQpjPFRGucjq/+zEuT1UO3Yjn79Q/Z7qc93euvh0MJH4q AaGI3mL0ykDSn/j7GiV24SMQkqz9QS6HBtGGmQgNyM/NFihNqzXKWY0zXG8OJHfy9o+t l0I8oL81KoHuRwM+btOtxwmItJz/SISGb2753DXuLkyV7k2DfE2aKcnVEVfJ40EYqrfe IN9EkyiKj5Ch073RHA+h7Fr8J6p5aiKofmAQkaiObE8UFJsOHrubPypyXtWHiIVG5+Gp zxGg==; darn=isar-build.org ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=fYIIdvoE; 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 clara.kowalsky@siemens.com designates 2a01:111:f403:c202::7 as permitted sender) smtp.mailfrom=clara.kowalsky@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20260707; t=1793784179; x=1794388979; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :content-type:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=eO0rjY4+h4WrnI7RSKVpSgPKzs9FaWQbU27rEpwFomY=; b=Vfxxi8pPopYu+EkjlP7O/Ah83O262N+eQpBY4aM3CiTLVE4Vn9uvXgX60KkcNjUByw 4PBUxbQC9GuCh8bhuoCvZLt/UgoyMUFYY2wTxg8aqu9DpHcZRKOO1OAfF9g/O74d9oij i8ZBl/JrrcFCp6XtXtZYg7XRh5Y9iNmJupi45svC4DT6ZpsNRnH+NFGCuHGee6kZdqhi RixoOYPUUMHe4Ty/0vRtJp35YKZTEgYeo5EniTNUq+0lbsT/2epj8G0HHtcX6gNE2LSy SNY6WlH405LH8fexSvQ5t/ByUul0ZYI2Wc9oKilI4gzcfNawhpYwb+xPu0THp/Ao+FIs 5hNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793784179; x=1794388979; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :content-type:references:in-reply-to:message-id:date:subject:cc:to :from:x-beenthere:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=eO0rjY4+h4WrnI7RSKVpSgPKzs9FaWQbU27rEpwFomY=; b=SYYo1BL+67KKXrWmq6h7uyplUEvM8dt+CgDNIVNi8h0Jwxpzmha+hG1XqFbaNSl6H8 l5T/UCd54xxoQKrEH6n9m+CRAvIUtgmRGq0goCa+d3TVnXKRWcDj+2RI28S9KJineG38 BYSuHzIheL3yLnMWUIC3C2rIMdKG4Fi9DqLPPRnb/cwiaHsBX24K4mfXKqD6IdX1qy6s 5cSrQxDgD/hGG4pBIuAcw2zZn86E383myKaeY//TH7Y+J1RPKe6Z3zgn+XbTBZI4c2PX 9LDD8D2XyUF/NmSNd8BI/6guN8NM9MQjORVUKhamnaVUewYsVEK8DL4JVVbO4TqhZS2X YaIA== X-Forwarded-Encrypted: i=3; AKwUvBzVL+ffQVxplCSgpr/wKavu3cmTfVh1vSqG8pW3lpxFrb+u5i2VMOK6elyJr5i3NBx75kHgPyc=@isar-build.org X-Gm-Message-State: APuU4Z9wAIpOdODrs7neJnBftJgpZSNNXqgKIhr2kk9pfSkIh3lHCL6K L2z03NCtVJfmS33cdg3HLeHfSfPreoha3sit8Alwgo36C41LV5e8ydM3 X-Received: by 2002:a05:690e:13c9:b0:677:b7a7:ba38 with SMTP id 956f58d0204a3-67ba4c806b6mr14030432d50.14.1793784178982; Wed, 04 Nov 2026 01:22:58 -0800 (PST) X-BeenThere: isar-users@googlegroups.com; h="ATskLddE96g2VV+HHA/1y9VAYuil2Ue8Esf6vrhHSRNJCh3WYg==" Received: by 2002:a05:690e:400a:b0:668:220d:e7e9 with SMTP id 956f58d0204a3-67bed33ba11ls636288d50.0.-pod-prod-02-us; Wed, 04 Nov 2026 01:22:58 -0800 (PST) X-Received: by 2002:a05:690e:bc6:b0:66d:1877:121b with SMTP id 956f58d0204a3-67ba4ed9d6amr12512784d50.32.1793784177936; Wed, 04 Nov 2026 01:22:57 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1793784177; cv=pass; d=google.com; s=arc-20260327; b=B2g+jCV81op1z1gMVcpPyg3OqSxfa6cJUm6CkM7W8ZMNcvUok6OEoThSQDW2HsxsP5 LvwebGD+K1Jx8/BBd1bCOHljkrlSsezDjVtLWS4y9/xdImZ6m893PXOY/E8dY1I8AUj6 UlgArxKQdKexM1YuOyC7DQ+XPFBxdAqXrnHGIboUibnbV4nCo6H1BIkklbrjQVSwhWHR bUkUbN1OVLzl8qGV6H2edEXgcElfvTUvbj9CecJrtpTuJS7NWYvTLtJ6Zglz8GKf/RH1 9b/y5VkgaY97dFyROEZfO/LlLDPklGIxzqagxmRKSShfHDMrPaRdGEeIJDK0yXWTobsq n/jQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=mime-version:content-transfer-encoding:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=XNbfOhuCWk0GmcnYyQG1tVH01OxJLYSXTQ5fhyxQedg=; fh=AqT8zD6jUs4YP+XkSwmnbRYu3wrat9Vyg/xvm1MGQCM=; b=k23jETFmCK2CICfz3JMpWBhNMK756281pKUxh8CYw+rrKR/m+1rKXV+vlBf9s6N1im +fFCUYBlBSwnxTimohdeLdFYAEh28ZmJngGJLK50q0JAWkUZtcDwZIqmU4eXnKB6q2WP 5d7wOx3mL4mtLmZ+j6IDJgeBYGcUJck4k2ynlRsy02p1BccVQV0p9eRtLFzdgEUMpQYn Ki14smaTxG708aUCRCtk06YZfuebxxGQvUAoqkxzo9pFsJpnNXUMeYx7A6u620KHKD92 yXJez2HwOnDpbTszWI3KvV7BGSVZa+yhuLvZQWq0/KrBD5bRiP+v/S2mZipbwQJqXi56 Ik9Q==; dara=google.com ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=fYIIdvoE; 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 clara.kowalsky@siemens.com designates 2a01:111:f403:c202::7 as permitted sender) smtp.mailfrom=clara.kowalsky@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com. [2a01:111:f403:c202::7]) by gmr-mx.google.com with ESMTPS id 956f58d0204a3-67bedc43846si45146d50.0.2026.11.04.01.22.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Nov 2026 01:22:57 -0800 (PST) Received-SPF: pass (google.com: domain of clara.kowalsky@siemens.com designates 2a01:111:f403:c202::7 as permitted sender) client-ip=2a01:111:f403:c202::7; ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W+RKkuEk+I4S7hiSwgIVxn7MZ9vWvNNEldoH8dq4mQ9ApAhN9/GmLUTDOpc41KSB94JL/mZ0oOIQigpm2eEbTCJbsdIe7khhOfgc3ZPIySYAumSRF4jF5lS3NHxQvpAyBR9y3s1id19Jfo9N5EBOdXo60m3iEHGIUdWwM9eco1m6jT8HoXGwyX90DAJEYyj6vUzQSzmuN+5sSUgdpZT/HbUriACQS+eUhdC49ql49Vlip6TAvYErcK9y0BfsJuEDZo2tYuGQF2Ihu1ByRJr6kGB7yn680iNNuEu41OWzkJ+OexZLEmKLaUj+u7gdqESsxt3iyQsoHnRTsvW3IRA3TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=XNbfOhuCWk0GmcnYyQG1tVH01OxJLYSXTQ5fhyxQedg=; b=oI285MxTzTXvV6KjvSlPYQmeLC/HTDkd6UTlc8hejcGc0HVGvLDcnAAAzuNEdrLBu5vaS2C/GISAXNmZdRe8TPf15hT1KMpq2ELHaayF/74aGgBIQ/Nzg1+B1/rJaqff0pUQhyBCumg6fa33wqZ0f1ak3nu9B1zDWT1ybhnl6SOKq5Rtb0kqRCZDPVoYnT0L+KyE0WOACyXKS2VY+Bbx0ox88fesLspR9kYVpbtAT5mYNZc1RFEzdEKakAZL73XCpt01Qsz06d6IfppUFF+UgyUp6CSbbCGewN/ZLDRAi2KXY5loEwFD1C5hdu8SM5Bs279FFyziA+KCKqUaZiIEig== 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 Received: from AM0PR10MB9645.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:740::12) by VI0PR10MB8404.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:800:231::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Wed, 4 Nov 2026 09:22:55 +0000 Received: from AM0PR10MB9645.EURPRD10.PROD.OUTLOOK.COM ([fe80::527e:14a7:bd3e:86be]) by AM0PR10MB9645.EURPRD10.PROD.OUTLOOK.COM ([fe80::527e:14a7:bd3e:86be%6]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026 09:22:54 +0000 X-Patchwork-Original-From: "'Clara Kowalsky' via isar-users" From: Clara Kowalsky To: isar-users@googlegroups.com Cc: Clara Kowalsky Subject: [PATCH 1/4] base: replace BitBake's outdated persist_data Date: Wed, 4 Nov 2026 10:22:12 +0100 Message-ID: <20261104092215.3567061-2-clara.kowalsky@siemens.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261104092215.3567061-1-clara.kowalsky@siemens.com> References: <20261104092215.3567061-1-clara.kowalsky@siemens.com> X-ClientProxiedBy: FR5P281CA0050.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f0::6) To AM0PR10MB9645.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:740::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR10MB9645:EE_|VI0PR10MB8404:EE_ X-MS-Office365-Filtering-Correlation-Id: 247a0688-f6ed-46e9-dfc6-08df3a5534ef X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|10067099003|22082099003|18002099003|55112099003|11063799006|261026140227099003|261022105027099003|261102123227099003|56012099006|261026121527099003|261028144727099003|261022075727099003|261021121427099003|261021123027099003|261009223027099003; X-Microsoft-Antispam-Message-Info: P/BVcZxX5nbEQWkHhBwE4NlpwtMiKFRK58HUKFcPTByvn1VnUP/0K1yMKjzk0SidXwxoF4apvKBVI7VBKpyNLP0hM8PkbUYJZwCyS7Ghc+NnErFeWBrlBTDTJ8tai6se9YZjNFF+f/v0uTZ5xSKzE3bOpgALLO1nlPr5S4J/BbrXwSrYv+kv1DdYbfSMP4oGYuF4nHoACZhADVN/iD7ZGxjf/Fq/XVwPilRZmSzR7xHYczsYk2eR+7t9YAHnjdEhzkk2iXHhXwr7VozRv/ro/+2A7CXyXQnqi9PxAd3dxr3Sh7aj+B6OOTKcb2J4j7me4zQoQ3BFu+K0k1DzSd4d1ZvVwmaYIRqyBEa0aXaxHmcYsUtCPVu6RZijY559P8oYHvtOaDRtodqLlQJPbyOIkHHqa1n8c/UgBxaAhEEsvywuG28qSAy3JzFlw0fpYOsx5ZJwkimB3WBmsvEgMQG9jjAunm1yL0VrUc7MMZfVbj2xNNTlDmeNYRZJVAMFIJaS9GFq8ZytyYtFnhX5eRDpIfrb5VJ0470JRfoOjCyeDP1KERX5xVlnpz8xu77oYjDTXfs34J9nJRudXNdN7q9KHiCm2V0yECV8ioTkrF5ZYQqfynBsLVVrvSylkXhBDrq/lHjWD7+HNS6ZcecQoitP3RRaJJUeReewTgVjsPHfF/I= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR10MB9645.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(1800799024)(10067099003)(22082099003)(18002099003)(55112099003)(11063799006)(261026140227099003)(261022105027099003)(261102123227099003)(56012099006)(261026121527099003)(261028144727099003)(261022075727099003)(261021121427099003)(261021123027099003)(261009223027099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zfmZs5rrI0RRLYVd/FOsf3qsy4iEwlDpuVjUViEGomisT60ouUbWwAJrKMGY/xnxrwY5KpWBCvSRhGtRRw9Q3WO89Z0QDPSCtD/5za+jnEsO+E+TmDiaktqvsWupo1zMC8p1OdHxIyZ+iBYJXRKlOgyDNmXnE1qpZD7s/g5T+N2PCU0GXYFrbeMpW0fNvysU8BR23xIi6yzxLQO3th0jLcJTLcWUzfP4do4BdpuITOKBZhh0RKccH3SeV4JrhhDnBzH/67lGGjF1BNAfboTltO1GvflNmKv/ENc7foo2pi+5lvJMtoUh+q+KFgIvNAcfljKqo7kKXVyHhznTHZpXvpW7MvBvTyJzOZPeJTm56cxFcM78DKjHQyPPpmr4MwCZ0AkvlPQh7sl/ILMbFpRrZo7FlDxAJdoJc94gVR1Hb+z+oDbqstpknvHQTnM7SvlbTk1FqR995r+NevgBSVKJ//T10wWDrP3zS1AlqlywhPFN5zVXQtViDBJmOzXPU/ufZuW+vqHhsyRPZudrNJomoVzwpJh38NlKxo2FWKmmz3B1hq+oNfeiMqmk1oSvLbygHxhn3NpTM9sISafkd3WBLfBbDUXIVi7zXmFZ9TLkVPKuM2OnUZDg9W32ryja+4Bm8wMMQFuFPOvYhC+OC8hypNewMRvgJlQxxtorJeVzpbnGQrPy6+6tWWMvlUA1sNLDvWH+p9CC4jTNnUbbViOXMkRKHXOG2DlM+jhUftSt84pISJBKV6m34sslgz11TAO72qWnmaAKDwzvRFIID4ZbeEHMuAgmb4epYEUaHgxpmLdkX6yXCMO9STK5fiXEngSZzuTtjHg/dD6k+XzBtuenfvlAjaN2g3sL/zQuhYA6rv6ZQItXBoK6L4RgE2ypLX7RYn9CrUlAFN7F4A7Mo5OMmS6y/pxUkYoyrwbbEtehDEMCGwBjJ2+qsI7DvHwRejTrYJUSF/1/9SaItdsVrtYbd7X41axs/HXzcxZD0tDgMDRLa2PaZXkA+aiDTT0+zWKo3XIlXZJV4HwDL8ewbFibVhQJh0zQ49KEyVBUvYKvApH3j6RZ5mHQa9+dSHFquQuyL4kE81Vx0mRX4xgnaALHoriItu7Y5AwyVddOAh5lgMk3WF7DtWERvQ7+s+vgZHzsGDunBGXXJZ+aK6MMsu4+ta+getkd+f/uREA2Gk6WrZJo6Fc95RloyTXEvK+s5pTY58gjKatsmILWulwpwv5Vc/76CBkG1qySgWldLILHeTRo88Li2xGdgh/VWVemmMME4Bz1Mi4U4N9OVnpwm6Du6cHH45Q70+pIeNAcRP8KROrcUu4U4HyRTn+hxd9bCigGNQSCCZguWxipbJC4oZNCOTd+OTBF4vyRTHqjtuzqNiBYnYEelymlom6sSEMDgOOockT03Jk59Kjt0qnMldckwWbzaI6plMk8/gabFIDaQb/NBRyxHJPy5yyEFd0hw44tHDk2ercGcm2zzKsY8ZBQp8jqudPLH9fPlCcq8yMpjP8fkjueL4RqoEFVI+D7kntDFqVR4kAtk9iiK+Aew/dzKnJsW8KWVWn9aMmfIwcTA7o876zb/BZQfd81Ba09Iz4bhBy6QkO2adbDf8fxzr6o28/TB2FnlCH5FGUK2jHp7phQUgcOfTyEJwt1/D1Y+wKDO1yVhp3akTc0cs3KCRoAfTUuW3oIQO1YBHU3nC2RcVMws7Rj+FFbq/n93vq/Pd7PbCA7sweY2U242qYAX+2BUVJRrox0fwn2HfJN3vSFUKg= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: 247a0688-f6ed-46e9-dfc6-08df3a5534ef X-MS-Exchange-CrossTenant-AuthSource: AM0PR10MB9645.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 09:22:54.5298 (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: nMYwy3ttKu0fNXdQ/gAoIdC1GGTj8ZMh3wJvVMPoaFWeKepjbgxmbXXMXz4SkF4u1/kTMEeSGL6cKt8gj02IqBeaV2Wro7GfbW1wHmHp1ic= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR10MB8404 X-Original-Sender: clara.kowalsky@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=fYIIdvoE; 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 clara.kowalsky@siemens.com designates 2a01:111:f403:c202::7 as permitted sender) smtp.mailfrom=clara.kowalsky@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Clara Kowalsky Reply-To: Clara Kowalsky Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-4.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_RP_CERTIFIED, RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= Isar uses a persistent UUID to distinguish build-specific resources, including sbuild chroot names. The UUID must remain stable throughout a BitBake run, so parallel builds using separate PID namespaces do not clash on external mountpoints. It must also be shared across multiconfigs and cleared when the build completes. Isar currently stores the UUID through bb.persist_data.persist, which is removed in BitBake v2.9.2 commit 681a7516 ("persist_data: Remove it") from October 2024. Persist the UUID in a file under PERSISTENT_DIR instead. Use BitBake's file-locking helper when reading, creating and clearing it to ensure concurrent processes share the same UUID. Clear it on the default BuildCompleted event, so the next run receives a fresh UUID. Add unittests for UUID reuse across calls and multiconfigs, cleanup and concurrent access. Signed-off-by: Clara Kowalsky --- meta/classes-global/base.bbclass | 25 +++++-- meta/classes-global/isar-events.bbclass | 2 +- testsuite/unittests/test_build_uuid.py | 89 +++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 7 deletions(-) create mode 100644 testsuite/unittests/test_build_uuid.py diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass index 3d5d1c12..c61e59b4 100644 --- a/meta/classes-global/base.bbclass +++ b/meta/classes-global/base.bbclass @@ -341,12 +341,25 @@ def base_set_filespath(path, d): def calculate_build_uuid(d): import uuid - uuid_data = bb.persist_data.persist('BB_ISAR_UUID_DATA', d) - if "uuid" not in uuid_data or not uuid_data["uuid"]: - # Generate new UUID - uuid_data["uuid"] = str(uuid.uuid4()) - - return uuid_data["uuid"] + uuid_file = os.path.join(d.getVar('PERSISTENT_DIR'), 'isar-build-uuid') + with bb.utils.fileslocked([uuid_file + '.lock']): + try: + with open(uuid_file) as file: + build_uuid = file.read().strip() + except FileNotFoundError: + build_uuid = '' + + if not build_uuid: + build_uuid = str(uuid.uuid4()) + with open(uuid_file, 'w') as file: + file.write(build_uuid + '\n') + + return build_uuid + +def clear_build_uuid(d): + uuid_file = os.path.join(d.getVar('PERSISTENT_DIR'), 'isar-build-uuid') + with bb.utils.fileslocked([uuid_file + '.lock']): + bb.utils.remove(uuid_file) # Unique ID for this build, used to avoid name clashes on external mountpoints # When running parallel builds in different PID namespaces diff --git a/meta/classes-global/isar-events.bbclass b/meta/classes-global/isar-events.bbclass index 15bfdb99..cfe6d7dd 100644 --- a/meta/classes-global/isar-events.bbclass +++ b/meta/classes-global/isar-events.bbclass @@ -85,7 +85,7 @@ python build_completed() { bb.error(str(e)) # Cleanup build UUID, the next bitbake run will generate new one - bb.persist_data.persist('BB_ISAR_UUID_DATA', d).clear() + bb.utils.exec_flat_python_func('clear_build_uuid', d) } build_completed[eventmask] = "bb.event.BuildCompleted" diff --git a/testsuite/unittests/test_build_uuid.py b/testsuite/unittests/test_build_uuid.py new file mode 100644 index 00000000..374cce64 --- /dev/null +++ b/testsuite/unittests/test_build_uuid.py @@ -0,0 +1,89 @@ +# This software is a part of Isar. +# Copyright (C) Siemens AG, 2026 +# +# SPDX-License-Identifier: MIT + +import multiprocessing +import os +import sys +import tempfile +import unittest +import uuid +from pathlib import Path + +root = Path(__file__).resolve().parents[2] +sys.path.extend([ + str(root / 'bitbake/lib'), + str(root / 'meta/lib'), +]) + +import bb +import bb.data +import bb.utils +from bb.parse import handle + + +data = bb.data.init() +data.setVar('BBPATH', f'{root}/meta:{root}/bitbake') +data.setVar('__bbclasstype', 'global') +parsed = handle(str(root / 'meta/classes-global/base.bbclass'), data) +namespace = {'bb': bb, 'os': os} +exec(parsed['calculate_build_uuid'], namespace) +exec(parsed['clear_build_uuid'], namespace) +calculate_build_uuid = namespace['calculate_build_uuid'] +clear_build_uuid = namespace['clear_build_uuid'] + + +def calculate_in_worker(persistent_dir, start, results): + data = bb.data.init() + data.setVar('PERSISTENT_DIR', persistent_dir) + start.wait() + results.put(calculate_build_uuid(data)) + + +class TestBuildUUID(unittest.TestCase): + def setUp(self): + directory = tempfile.TemporaryDirectory() + self.addCleanup(directory.cleanup) + self.persistent_dir = os.path.join(directory.name, 'cache') + self.data = bb.data.init() + self.data.setVar('PERSISTENT_DIR', self.persistent_dir) + + def test_uuid_is_reused_across_calls_and_multiconfigs(self): + build_uuid = calculate_build_uuid(self.data) + self.assertEqual(str(uuid.UUID(build_uuid)), build_uuid) + self.assertEqual(calculate_build_uuid(self.data), build_uuid) + other_config = self.data.createCopy() + other_config.setVar('BB_CURRENT_MC', 'other') + self.assertEqual(calculate_build_uuid(other_config), build_uuid) + clear_build_uuid(self.data) + self.assertNotEqual(calculate_build_uuid(self.data), build_uuid) + + def test_concurrent_workers_share_uuid(self): + context = multiprocessing.get_context('fork') + start = context.Event() + results = context.Queue() + workers = [ + context.Process( + target=calculate_in_worker, + args=(self.persistent_dir, start, results), + ) + for _ in range(8) + ] + try: + for worker in workers: + worker.start() + start.set() + values = [results.get(timeout=15) for worker in workers] + for worker in workers: + worker.join(timeout=15) + self.assertEqual(worker.exitcode, 0) + self.assertEqual(len(set(values)), 1) + self.assertEqual(values[0], calculate_build_uuid(self.data)) + finally: + for worker in workers: + if worker.is_alive(): + worker.terminate() + worker.join(timeout=15) + results.close() + results.join_thread()