From patchwork Mon Nov 9 09:17:54 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Clara Kowalsky X-Patchwork-Id: 5589 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 09 Nov 2026 10:18:41 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-qt1-f188.google.com (mail-qt1-f188.google.com [209.85.160.188]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 6A99IekO025596 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 9 Nov 2026 10:18:41 +0100 Received: by mail-qt1-f188.google.com with SMTP id d75a77b69052e-53639e47be2sf13099061cf.3 for ; Mon, 09 Nov 2026 01:18:41 -0800 (PST) ARC-Seal: i=3; a=rsa-sha256; t=1794215915; cv=pass; d=google.com; s=arc-20260327; b=BtdMA0km++8wpbChJs53SpxIBI3gWXNS38orOFfAqPAUKxjqp8ZezsEgZcrnl6J/5c KYX0ftQ4DB/dKhsyhamVojecU9tnhXMY3rjdENVuv+w3RM8YweJhb06AHTD0wsYBc8DD 59GrV8WXFChdkLAp1CtNfUWypqzYhB+Uxybar6XmacxTLWDlQj5lpMr0ienA9Zo/WkGQ HTl7dvzFtBVQ/7o7ua5GVg3cK/cYDFzxyVEgbdtklEzwEYhl98EqwEcCbg6tixV7T+ff mYMb8CjhkFeu+0WEIpS/qqZyvJ6Qfbfqc8/cLLpIUHIq0svT8KSxZ0R+QhSI/X1mDPjx AdgQ== 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=9RR/Gr6lzW2ghTMmh5XnF9s/zzDQzh//xQ4KtNdNuqc=; fh=54w9En9n3NrTeJLsft0tD+hy+svrtZfHVnATHnCTZ5w=; b=Nxg5o5lou94zFIif+RLfNUa5A1br9xUsaagrssDpZmI9NL+Xrzg7LZ1mY8woVA6I2t iO42QEHuQlHbhe1WtXOfgC1d4Qy5JF/U/bL756l8hymfryXntNOQ3UonUg4V2TrJr57F BHNsLtXbw8+mqXkXxo16TRnYDpfgzNaUKOgspjO8oM7SX88F17rZj7fcB4joNPM0qmCi IQKAx12zDPbnN+Bu7ls0NNU9QG7L78/ENIo5wlY/GcoNqozA4c6oO0lkz9nn0jr1Y0hO L30Q7rWHkWsedRMh2qHIAu55R9T+D1h/SRcFMz5uJgHmeJAvXvuPdYvt60jtvczNcd1k qy7w==; darn=isar-build.org ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=dT8QsTcz; 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:c201::6 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=1794215915; x=1794820715; 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=9RR/Gr6lzW2ghTMmh5XnF9s/zzDQzh//xQ4KtNdNuqc=; b=TekGi8MMRzAYcSXHS7UaBW2OALYAwfB2HUjc4LhHZgEM5lUn14Cep8vYfajT4Qfha4 pXxXoOz6wNpeaBwypUNNxEFhus9vjyxvZanH4uQ+yhXlN/VxepRBOq9Fz5hM8dnqZ30K RQS9maIzmw2cUBeQfG08WRzc6tP6/S0+3VGwvz4UEtWWo8ZcCVUQdG8if8rHtdl3lLof PSafsbrBCiPoRVskiTsyP0f9TTS2uT8BbDYfhl2IKKyD8DgHAyWg9E54UB1TV/NYOx0G sXa5/3s6oyr7BzaUUY2JVFDP3ZIUlG6B6PWryfWfZwhjdGQFGt8kI0sxwBtRwRzkQ9Ez zBXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794215915; x=1794820715; 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=9RR/Gr6lzW2ghTMmh5XnF9s/zzDQzh//xQ4KtNdNuqc=; b=vlLptVDUBIMny7WmWDmOzmo5My8mYuNSd2oFr7iUIHGMVWXpg0XwGty4EQKzVInBV9 DFO73se3ccuhGTZKmY/Dn0xne13+hMbvcdNUZLD6Nd22Ee65Crf8O7VOeHhaKX5w/IKh BFm7h8jUpHbkpYRSdiI0T9eOJ25JcEejDHR+mXL80CdaKClliS2+pV1SgJg6v6UCQ5gM kh91gayC1Rgl5rAD9aZ6c0437NLVfPcldTHku+0Z5vf28JdzSVknpRI3PlS1+OmXs0tU EKAYFglYhUlYE6tr9eDI6HH+AHBzcHjH3WzV85sOaM4jP/LRTxg72S05RjGVBsXcv5TK rpIw== X-Forwarded-Encrypted: i=3; AL+hErGxG/ixgCpfZahzLCOQB8+v0gSweFYdGycj+WgY8DVtL6fLsg+OFdEzYrjNC76ZTrEJTTYTzmk=@isar-build.org X-Gm-Message-State: APuU4Z+sMtSYKHdd8v9OeZUn83z2aqDKCy0X7+0k16Q4/0fQFsz3Gmhz pxMT7BhvYkSOS7TMrak09SpkUPtJufcHVgILEBuC919ageIbQw0itwp9 X-Received: by 2002:a05:620a:46a7:b0:947:7f9b:f839 with SMTP id af79cd13be357-947842440a8mr516372685a.47.1794215914916; Mon, 09 Nov 2026 01:18:34 -0800 (PST) X-BeenThere: isar-users@googlegroups.com; h="ATskLdd1bqbDk1EcQl4/z3DkgXSBSBwbHZI/Zc5WtIHoLCp5Bg==" Received: by 2002:a05:6214:f2c:b0:91e:939f:6611 with SMTP id 6a1803df08f44-91eccaf6ad6ls34917036d6.1.-pod-prod-09-us; Mon, 09 Nov 2026 01:18:34 -0800 (PST) X-Received: by 2002:a05:6123:4a:b0:5ea:be1b:1b24 with SMTP id 71dfb90a1353d-5ece7248f0amr1049325e0c.13.1794215913835; Mon, 09 Nov 2026 01:18:33 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1794215913; cv=pass; d=google.com; s=arc-20260327; b=mxGWY4otE0xJTBlEogh+rTKBdR+QlwBcfG/dZRbQSceeewa88DsF0RdY0LzKF8+RKt XDLNGKpSSegcvvgzNqjdwo5R/SSStFvuq9RGZi0MHADcCRf7JUrXYr4yhk4T3+2jkFiB 1iC/tPfehsdSSsTBgxu9wS563YfNcNYQO9szbOQhe8Q9GqDG431kkOmaEad6S626jvLn 5KUgNT3NCTkZCTlHp9Me1ZfoZxv968rLGxk2V3qyoG/4+1lY1fdOhGx2I8GV3rc2xzUr RBkZkfJDT+Ov3mxcTXaSdd44Tc+xcukBCsXi6+cIPuAIeyCu6rP+VKDw65bvn07A1QeZ lxbw== 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=I696JiT9nSIGU+62kU6I2rYte0LFwa6fSdCRv1wCEJI=; fh=AqT8zD6jUs4YP+XkSwmnbRYu3wrat9Vyg/xvm1MGQCM=; b=XsinbzHIY2XBEnnT8IcvIwxrr00IGuV1kNzJ1NIrz/waRD72ezSaLgrF6xKLX5gSJ1 cFbAVcFRslx/DjR9tAr+ujXdXq6QKBZW0rIGuRjOiGHxrh/bnc2xl9rf7K+gbTT7tTV1 t/+J5uEtbJfDpLoKLxpWt1ysnNdZmgyOzppt1f6HyQ9xzQczG0OkJ+FkLPLXMVE30Hxs hxls37UgYj2mJU5TAXQbB+PKngCUKIL++EjD/8W2BVo7vYQ6Rg1f9KXKShFjIgccfkJB oifrD9cn2pk8NVT5wRC6PAu4qfu4gSshr22PuZPulQC4TMHVNUXRvz6kxWimfiZ4W/3o i0IA==; dara=google.com ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=dT8QsTcz; 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:c201::6 as permitted sender) smtp.mailfrom=clara.kowalsky@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazlp170130006.outbound.protection.outlook.com. [2a01:111:f403:c201::6]) by gmr-mx.google.com with ESMTPS id 71dfb90a1353d-5ece60abe70si104599e0c.8.2026.11.09.01.18.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Nov 2026 01:18:33 -0800 (PST) Received-SPF: pass (google.com: domain of clara.kowalsky@siemens.com designates 2a01:111:f403:c201::6 as permitted sender) client-ip=2a01:111:f403:c201::6; ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u9y50ldbOPZ8UFEsuaUIASWOx0tqdgSHr8aws0z4AiV94HfFQybRzVgXMupE5c5CU6Eb0l1Uwf15vZCKErX9HmCXNGESQLdQHtE5cTj5t0ipDaYpGVn0vdAVmCfAMUKmlMCJRB7TfTIfDmUyembxAIKYezOx9xYx6uBIdy4N8QOF4z4/n5bTI5yHHztSniilfbuAaFJI+dfW8SQWZxLcTSmxdGavj/42NiyaZYmZag6RX9XXLACgDOJJ90yJD9NfIPpMGiXthVN1ZTTZjKRzgFPZ1HEVyZSuqM36sbJLZc48EaS7qepnqro4VlqIKFLa8KBTLraOFzXCIO6z3FH66w== 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=I696JiT9nSIGU+62kU6I2rYte0LFwa6fSdCRv1wCEJI=; b=mEOzIneXV7Kaiey4+W+P4nKxNPK2BDELIclNqp9aBFqAHWlNWlaybD5XTjidSAuS0V1j3Q6v6RgD/VKTsv+1eC+3VYpNhy57nHQgfgRBg04MbPKhTfF9OYFbuJljBjgvD7qbrqZqfXJ90KGd9quEjGnEnpgiGUGgCC9DAriB+1jKgPAco44FGwj65/Z9vbSwyxHtsU/dcZBxCmmLEvzBrIhmZylwpzImH1CEzQjQOHEPdWgzUsDMckF+UluZdCvQLM7zyLVTwBA2pzj+D5aK3D95+MVKwDiHvp9vVeJ4ytjS3ZEhmKO3/BacTn18O+YM2Iep9JKc/Om17q5SygbPBA== 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 AM0PR10MB3298.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.615.8; Mon, 9 Nov 2026 09:18:31 +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.0615.007; Mon, 9 Nov 2026 09:18:31 +0000 X-Patchwork-Original-From: "'Clara Kowalsky' via isar-users" From: Clara Kowalsky To: isar-users@googlegroups.com Cc: Clara Kowalsky Subject: [PATCH 1/8] base: replace BitBake's outdated persist_data Date: Mon, 9 Nov 2026 10:17:54 +0100 Message-ID: <20261109091802.202521-2-clara.kowalsky@siemens.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261109091802.202521-1-clara.kowalsky@siemens.com> References: <20261109091802.202521-1-clara.kowalsky@siemens.com> X-ClientProxiedBy: FR4P281CA0130.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b9::18) To AM0PR10MB9645.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:740::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR10MB9645:EE_|AM0PR10MB3298:EE_ X-MS-Office365-Filtering-Correlation-Id: c9d9cf6b-4a9f-47ce-bdc3-08df3e426c27 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|23010399003|11063799006|56012099006|261021123027099003|261021121427099003|261022105027099003|261022075727099003|261009223027099003|261026140227099003|261026121527099003|261028144727099003|261102123227099003|10067099003|55112099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: EhqH/eYHxWM6phcjrvlze7Wr2hy13LRxA9d9ISELjqUYb9ASqTEISA9IdPQ77SAv89PGbrevwUZtG0ujcj03T+iAd97WQw1PjA3FOJX7MYJLd/MmUp/b5o6lMPkJTW5uIj0OfGL1+COsBan7G0rtsN5//L1G3N9L8+WW9IMvTSsu6Aq28vEiQ3/ov65cS2QNSsZ8X9zweYAW1Slu/gWVfoInG6Df4XLtMT0VRBGRxlxK9r+zHGjrlE3uZ/F1+LnBcsZks03i1MRSaGLaMKEVglacAKJtmFHSx9NHXcfbJAJJldJ8SWo7+hfgU0aSza0uSjQi9xd/P6ihRcUvr4fYKPk76IP48vWpey4zyPMWfgcm0Gj+nQpdr64cZcftmp3GM56Qfs7380yk0bdd49/W2wqBHBdU1zCmYaWQBRo7/l1XcLyFTUQpapxYMvMw5xMaG2VWeEoij3P96isynFXmfFMKEqtq4Gs7tF/P0xEO6V/pUSczYl1s6aXPNindnVA+VmMgV+OuhhaIoiu2/d/VzCPi7b4tEhSiNBhHXUa0wn+kF7QyOg4XBZrxJ47NyQtmbJzYQg8UrHguvSWtYxiBRZb97lu5mnJ1ZNdd1k4Pf8qFyskLK9XDAu06IYyZRo/+Yhfz+pTHFIBaQJFdHJpzLGwtrlA7ZOuokqO1MBofczs= 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)(366016)(1800799024)(376014)(23010399003)(11063799006)(56012099006)(261021123027099003)(261021121427099003)(261022105027099003)(261022075727099003)(261009223027099003)(261026140227099003)(261026121527099003)(261028144727099003)(261102123227099003)(10067099003)(55112099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TfNjKnpJICWAFDW2sT4tK9w6FirT2AsTGx7pZSa48ZBWK573STGqMA5QM3QA63Pzuz2tO2PxtQ3M/o2aYhVb+e4pJUryYr4gV1vnuDNXfxoE0qrwrWWxI3K8zWGb06bz43Hif0E2Lh0FdeVkSSfxPSHCJaSJsh9dEIgyZZ8btQ8OcuAq7SlK9SpbJlWhHRt6ocAu5gKNuhg5o7tCSjI9x0op3CzzHA5GavW/xfBFAg5QiMxIxFZuQZ+1jQjqFH7Hg1TfSIUmJ4eIt+UAKwBozY6ur2tqYSFoQ5j07xf26G0+JiqMplWP4ulH5tPLqd3R8ZhJB7tjwMkwA4bRZrCFaqyUFVDNpHzTtKYx0pZyhEzkLL29Auh5tZB5A3RCmZ/j+98OzkrwffH5rbg8MOep/lBFWszoI8lXyp8yo+ZoKQliFHI2pehxvg6GdHSyhwz5lEK2Wp5sDbUIiR2Mp0QIiRYESGzWTpE1j+3oLIewWEMoLAb5KG5G25VopUrS9GCtmmTBxidfANt3jBwyMzmB0q+95+LSlhlzw0ze0haAvEGESB+OUyG5IiZTCHq8YXxUmIqmWahGyAk0W+SJq/xoQx21DLihcRFczQNj4hpR5FUaSlUe2JgxnHYmAvrj/rqzDYbbIeVgSiqpn4612Zbav1xFlh9xRcnaHVDJp15bWSvCcxfNt5z4UaIyfMYt7UloopSP1EpeOO9CWYRnR8DAaMu2YuG9OVail1yCvOD83Bhfi9UIl2Twa0Ms5rWgWQGhNnLlDhIdNVQTraonB5O3/8NrhTbUQ3XvulITcIGubK8wARkZb3ZMv4Y7To99InW/LvL+E6bXbbm5yvCIBt8gwoR3Ygo/DY1HSnbvCEqEDiCF4zQ6pWBD97c9yp3Vl64V/xFVslCWqIYJLctzdgy5/85oBmZWX+2I+fYxyriKmTqJ1GV/XkXA0oCu08Tu3TKdTAJYk3VDKV4pRs/O6nmwa248kgv4Ax1HLYlVH0mD9PdFQ8sPX5pbTD19TX6ky9tic8RVYlGImgOP3ug9HWtt3lyW7OkzN7JXfyQBKhjZmwbAssqYuQ0nF2n1pcRwiU5X+wEU57RObr1oKSvY19ZyF4kumR6BAy5wkgKcwvJeeVw1gBQZGK7nZs4IsbaHnnngLOgMUdo4pEKqorr/rPWp7RxZp+6BZgco4bWQuV3UDHzrdEBa8S6HaI37xMeWZwzufpVG2MC5qzFY8EO762zgzsE07qIUqGoPuSs7SntgfCv11yPQh8TxZbb+JTYMJCGNN4Z0nEAePWWqt9gWj6BGyuxqrQj6UKRdK7gZsVmEcWYZJhSGXkSok99KvlhOuG73rikBSfDQV74neXyamC2QTFGJsVUK1vhcFhbQCJI9oRj5wh5VEznipBR+cub0Wi2hJBvKc4DgsldQdy7ydNC9G1sFO6itw3J2taHGAwW2WoP6kKgJMEUNRTNi2vG76Yg9mWv3CybKT5pd/MpmFUqFcHAyXiOt+LvNTDhwbIq9W/f0yxU8bX0DK48+V6/Ds6sMJG1GUgkJeNVq2/SclFLXtPph+mUWTWCYUjheD6RH66X8hlkD/txPcnkUlSQdiIz2jsSiZTwbFFy2e4JAxQVJYTw6YONRZPsn0rXmLydGcxqTn8r8uYAu38iAxnTgkbRPic0d8qUfGBXlsxyL7bWG5A6fGcPRsFcWsCbDTmO0fcOJ58XWcqJ0j8sFG+ZIbGkkZHIhQPV31Uv3goccWZLWP1V5jLZG68B1JX5qRID7Ebs= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9d9cf6b-4a9f-47ce-bdc3-08df3e426c27 X-MS-Exchange-CrossTenant-AuthSource: AM0PR10MB9645.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 09:18:31.4669 (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: OdWFfDQ6SfgMf3510BfYFT5SyRDuzr3bRdbF3ptnir9FlbiHXJZFdFhGe4rWOIBhr0KG5itk5uga/ng0Tq3p5VeVEsmturnab4UCEGmtF8M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR10MB3298 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=dT8QsTcz; 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:c201::6 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_H3,RCVD_IN_MSPIKE_WL, 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()