From patchwork Mon Sep 21 15:06:34 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felix Moessbauer X-Patchwork-Id: 5477 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 21 Sep 2026 17:06:57 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-ot1-f55.google.com (mail-ot1-f55.google.com [209.85.210.55]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 68LF6tI9002088 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 21 Sep 2026 17:06:56 +0200 Received: by mail-ot1-f55.google.com with SMTP id 46e09a7af769-7f4eb9e05a8sf5019204a34.3 for ; Mon, 21 Sep 2026 08:06:56 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1790003209; cv=pass; d=google.com; s=arc-20260327; b=E59kYpYDBla6HUMSNEjzC3uuQJjBVDb3K3RBAMZvLH4mY15zrij+QhzLfI80QECwjm iWlGsqT/Ym2qP329Hou0g3TTjyWvbWmeh2didnFz/eNMVwgSHrH0B8n/oMPi4Q/wmQ80 8IiBwfRb7vpGzHIUevwt8J3JrueC+L5RX56ppNbNlr5FWUhD1OAHd8AfyU3OxvPFJVsd zDKk9CNGW0/3KRvYi2ojIujF+6dzcGA2kuCIJzRkrA9jo3qItVuu6XvKVRp+U+SGfv9r Ca8kKvH3g+q7FJ8+qXKuLediL6XVC23LjO4T4FO8tWzKFITu2A1+75/bciXzDsrpA6GK qPGw== 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=g8CrP6QXfJPEdPPlU1t92WRyYhF4OCWNhC77aFhIbGA=; fh=qH03zXhtKgtO39pjNC78z+gyYEwLXYwfLAufcYKx5zs=; b=aw6O0GoMT+jfN419cIEyYfKEIWKv+Q/PLchDlh8W07+65AWUZJ/4fHiFKC5QFx+fOJ RAR+rITYK2JF82//9fHjHmHpOXS5jXHf6YIK/IOkBuU7W3OUyS8z4vQQeodmnuiorVHp rHtL6K1Lu05z8h20m8MvLXMpyhiYw/UT/Dp2SUGi5LAvZBVRw2jrMdCVgDkvU5MW4VfL 8ElLvG/oFUlJcbZTCFLNNj0tvsQ3ppx35IBO9GZDjT/sejKbcempYLK9I84CypT7PfpS qBFOb8x9F3scTbhk1W5f+/YJC8Q+O3l3+f9yw3A9XGl8xFDoplE7cveY1cPd8UaTQGWF CrWQ==; darn=isar-build.org ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=iz3wtDGv; 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 felix.moessbauer@siemens.com designates 2a01:111:f403:c20a::7 as permitted sender) smtp.mailfrom=felix.moessbauer@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=20251104; t=1790003209; x=1790608009; 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=g8CrP6QXfJPEdPPlU1t92WRyYhF4OCWNhC77aFhIbGA=; b=cUlhQxMljGLkE9/CkQ8ld7R03HoloiPhrk+1U5QaQRDWjI8E7X6mKbRABx+aMz4UAw PvkWkUYga9jcNhyzzz9v4oULe9KGyH3D8FL4M1tIAj2tC64kAGxygTB7fBeLkZ2mlFvE aQ3yrxVtZRZUoW4ppBjS/COHLfAXYRKRPkttQMznodAuPmyVQ6PvxJkBVnuUM2psguRR Kszeze6gNczCyj8D9+5m8nUWJKVjfHizkc3xaYSog7LN6Szh/fXldZtRL04A3iu8TXf/ GCCgeF2mLhsV6QadOTSmn6bCJiG8/FYqYAZF3iRNaqTrXyzJ/LUXeEI1rSkfa9CrfqUM osQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790003209; x=1790608009; 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=g8CrP6QXfJPEdPPlU1t92WRyYhF4OCWNhC77aFhIbGA=; b=E0WKI+I4RjS5ZfxPb84Qro9vWQoDzgvalimCNqwLocDIobbc+wMl1rl4cGJPeqdYgn 1N42TpBLhOe4HoylpEoCfYqQ0lCB0hoPGefHrHG5LcoH9M75BkMFT4AThALcLQ6kmh8M inx/XLDKH9VbpIdPHc+w9Qqo4i6D4kFv7hgl0Rl5OMVg2Ydq3ChSwkSlJh9i6Vposyk6 Ze+KEnnkfyjFzERtk38JwUCNa+xFlsJMvTAa0fLzFJrw1rEkjVJyWW93xr2RPuu2z59P iMgd9xIhx1OEJ+NIhaCS5v840WKq64yam7SjCnzZvP56V/aVwp1yhZLiWt++0lCeGVbS NcXQ== X-Forwarded-Encrypted: i=3; AKwUvBz/cpa/n05FGu9ZlxlhYSOrLU6yF8sp4MBBrMNstYGc+GKjtCQJwV7J1YgJOHqWbdGWbFWp7rI=@isar-build.org X-Gm-Message-State: AFuF++mJPKKJuQ3Sf7AHrSTTPs+eYRWmuQDcpEVFwUxoVibRjbpTs/Y9 1Bh331s4zuXKP318GJi5xogxRF4djjV4F6x92QFiuaGXhjDEA3nJe97J X-Received: by 2002:a4a:e904:0:b0:6cd:3fdc:6000 with SMTP id 006d021491bc7-6cd3fdc607fmr6712933eaf.81.1790003208873; Mon, 21 Sep 2026 08:06:48 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="ATskLdc8bfoIL85iUFND2XgODrnVA9wamgDDYpw/NbOkpt0B7Q==" Received: by 2002:a05:6820:7099:10b0:6c7:aa9d:c3be with SMTP id 006d021491bc7-6c8f1478a5fls3752902eaf.0.-pod-prod-01-us; Mon, 21 Sep 2026 08:06:48 -0700 (PDT) X-Received: by 2002:a05:6820:4cc1:b0:6c9:80d8:a1f8 with SMTP id 006d021491bc7-6ca9cb5e00emr10343652eaf.53.1790003207986; Mon, 21 Sep 2026 08:06:47 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1790003207; cv=pass; d=google.com; s=arc-20260327; b=OJh3dlTmSefjsyriRl9Fup7qA1yI/j7hYBzI3sqWQ8cGJhHWBTdHMIPGGCPzqxodLi bxFOoa38a5a/dzYzc2UdpE08SXJsITvyzdVeru6zohde2q9U52y+CKFxUfmutPqppaWQ w6MBZS/nI911Lik+SWHWlN8CBAmddPHhAHllwgJLZfl8NR7tOeScISsBils1rvJxtxFg tvJyI3Gb2txU1ql7W8oKTRbxuDNme/LCnU5tAeU/KFP4IjhQmCdgatKRyF10dykvaHzJ x6goEQ7B5HIkW8O7fIOF3QqHTJLfOKvUwr8abw+wf05Eyh6WyIBp4b17pRa0ONsUIY0A MnMA== 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=zkYz8WzlVF89h5zOrPhlNXFg7eJ3eh1/5yfU4dxPmRw=; fh=Xwx5KAQd7M5XPJvQVz6xz/z//08kOEttrlFeLBySLJ8=; b=rASvxglNK2FuGcCADHO16G0UIy5C1ZZ3oOAlsnHT6QJ62nFNPitfLiXZ7PJcwqqvFg haIn+6HUq/ei99VMgHALlCiCit1RsG2/0jj/JibWOGDp5PC7G5KdMU5otDnVOghgESmT jC1JG+3vj3yQU3hbDbPpjqxcx9YT5w1sDjS2hNPJFhqpaX2/RztQ6f+d9A98/IdbJcbE zIufS441t3iDBAAh4991pyyxbPj9JxpLDttqYiBItlw7JqJZUMibuPBcmxDN5Lvn3A30 cdcdvhovmgPLPA31mK04BpA/uXN8qg0RVi0KY98M28/geR1H+GR15cBY/MnFR2zddrfn bpgw==; dara=google.com ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=iz3wtDGv; 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 felix.moessbauer@siemens.com designates 2a01:111:f403:c20a::7 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com. [2a01:111:f403:c20a::7]) by gmr-mx.google.com with ESMTPS id 006d021491bc7-6d140d39e25si6248eaf.0.2026.09.21.08.06.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Sep 2026 08:06:47 -0700 (PDT) Received-SPF: pass (google.com: domain of felix.moessbauer@siemens.com designates 2a01:111:f403:c20a::7 as permitted sender) client-ip=2a01:111:f403:c20a::7; ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cyfhbg3OVuvyYcDqHksbNaWGcdO/xXmw61HFSDq6iKWOMtqlG3HMZ0la+aoncfSjk/IYe67KAmwre625AdA+6PnsIQG608WoQU5H5nSQ0TDrsSbhYnuNPkCtgVIWgXmYn6WL1yCU+PDaGamZFTq8+hSEz7peEo/Mg84hRaqAaGHgK2+lfoavF5JxUNLuia+qr+Lzk0SXn/E//RBteNBvZeZLWOVP8w5kyG8t5Y2HZIH2qgp+FSkLz6XeXtL5dxueX3AR/WARL3pmXAkHMENLuHu6vpVQdlmFLPluKpWicS19xtOxL0yNi/+vcknvkA6C2dFUaM5+llNfJZFtPaSsJg== 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=zkYz8WzlVF89h5zOrPhlNXFg7eJ3eh1/5yfU4dxPmRw=; b=I4wxSZd3F59XfRPv8uAyUrEnhIh35oCwKWWhq5zRlh7wYtAwLbTEvhSJSPVcHCv/5rY2IJiisY8NfDZFlvDdo7mUgu7SNBc1IMcLpBaSziBjr01IioBBbsqg9neRBFNPzXMV2E4tQv4Z1oJH6sutJ1ZGnixOjinevkiIwv3AAUxv5LUzXwyX2CWJ/EvpEaNweHwLsw+Cx7oRr+91zFEY15c91w1335hHKk6pWMYq0Sgwcdncmnfh2dc/zLTc2+6qPkeurQqU18mPqNq+3i71tZWClwEAS/EsBvKPL+kPtoWHHMw7Y81jx3u+ZJnVXV/9mEP6Kz39Hjyea8+6UqwUSA== 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 AM7PR10MB3956.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:17e::10) by PAXPR10MB5383.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:284::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.16; Mon, 21 Sep 2026 15:06:44 +0000 Received: from AM7PR10MB3956.EURPRD10.PROD.OUTLOOK.COM ([fe80::c54c:ccd8:ebbf:477c]) by AM7PR10MB3956.EURPRD10.PROD.OUTLOOK.COM ([fe80::c54c:ccd8:ebbf:477c%3]) with mapi id 15.21.0428.015; Mon, 21 Sep 2026 15:06:44 +0000 X-Patchwork-Original-From: "'Felix Moessbauer' via isar-users" From: Felix Moessbauer To: isar-users@googlegroups.com Cc: adriaan.schmidt@siemens.com, Felix Moessbauer Subject: [PATCH 3/3] isar-sstate: add delta command to compare artifact with others Date: Mon, 21 Sep 2026 17:06:34 +0200 Message-ID: <20260921150634.972641-4-felix.moessbauer@siemens.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921150634.972641-1-felix.moessbauer@siemens.com> References: <20260921150634.972641-1-felix.moessbauer@siemens.com> X-ClientProxiedBy: FR3P281CA0037.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::21) To AM7PR10MB3956.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:17e::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM7PR10MB3956:EE_|PAXPR10MB5383:EE_ X-MS-Office365-Filtering-Correlation-Id: a66d95ab-095b-4549-5fe9-08df17f1f2e3 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|10070799003|1800799024|6133799003|22082099003|18002099003|55112099003|11063799006|5023799004|56012099006|10067099003|3023799007; X-Microsoft-Antispam-Message-Info: cm0WxI5HDPNt2YLXkkYvAQQaYrDSEqIiPo3mheQow+Q0nk+haY21yWJIgtl/o3ZQDNrBs/XvW3nx1x0Vfjlsej4RvwBK+RJ8tD+yrWm85U9i26kBr39K6fZq6YRjyflVafM1KHc0ZJ0fBQ/MUbJ9ETLZCT78OwISktdqh2VEDVFzQo6O+ssiWPNdvIpZRRYdXu7hosfEcgn4x99QGwKqiPx1bP7gOfuXtvoLHV3m3o18jEVJP6laC/nq871dupOy0vbv7HCC9qVbOv72xJr1iyQEPH0XpRSz3GiBSj8YttXnbxnvcqs3vuKNgwxnFouEn+lKNtpttpO0sjzc1ydvF9hBQS1beClneP08aKrL4vyKnzppujdWcBjjxKa+VXWiq0mlZ4J5Vpx3Oy0rZEPzy/aYLb99xmmcKclpkRLxpMAGllWD8sO+LgH7eLbBFPbyYYC9Xm1YPoyBJRaITFBnnQCVLH2bSGjO+iguihVtTktlEMwzN4lCcLPWG/ycVP15kzTaHXtmjPpiVI6K9R94cFoiO1zi3UaqdGajDbp9sQ4z/8c/4BRKcsX0eFlgbJxb6D/0rAAhvwxMYzTbn0Nv6GOdEqPzrY+t6vc36h7K7r7aXKnm/XNhEMDjoK604QAhmaab/YArWgQDvjlFHr9S1rwuqLxx9dtA4fsfX//v+rA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM7PR10MB3956.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(10070799003)(1800799024)(6133799003)(22082099003)(18002099003)(55112099003)(11063799006)(5023799004)(56012099006)(10067099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: 4FvK0ZTu9HimQe7aZX6HycJxAdGvFTVV16Bg3qIA1AbGaOSGgTrILYhNEPY8L1w833WbXhoz8ZZNNK5p+Xs8HJlR9ZKAw/b0gf4RDYcyR7FE3PMQ/nMCN4uJgxvpr6qfit9Vv84AY1/8FM0wDEeUfJjUCjrPK3zPFbIZqfZu65D2Anq6ojc8AloIHmMXZjedqXLyN4vF8s3ASHlk0kr5PvswtHE9lf5Od6KKRhhYSRETrPeG6YbKdoUgkrVfmuVOsTd2YajEm0ckN4pbGnZIRLSUhYRBr1T4jxYWt3X9MxARfzhyDb8slXMsBtTtHaRmDt3R8P7qrnGzHpc+mz5lCqyHIuVMoPSSb/Qr3+5lKjAgcGIAEsu0RCIZeHymefg79/kECvrXSAUnczAxsIfbGbG5J7gMTjiAH1r7wxDBZC6LCO6kBRcU9kT5q/J28qXi0jmx+OGokFfrO+st4LE+u0GtGsw+PRTayDD99pwcQaAVMl7CRJAaQWWXQ0M3+Zkdl+w7q6YqLcd0XanSdCqWLw706KugCPBOHS6WWecuFFoNFfAJnhAys+OZZfFOz8xQHiqrW+tNvnNyRrBijOzf07yW2b86VLn8g+Y76vttXRQ7HgPJc9nyE/UU8RmD/yjzGIA5ZgvbaRGmcvtxYGg4zrm73WHy03drmuAx9h6zxhqIUZw6qG1gqlo5kOpzX3/E8DwA0D9P+UeT7eRjbaP12RhNkE3/CWKDsW9a25X330uNzHZ75VBZ6ByOTFvBUpn/N5ssSfjK8xBzKMkbKAHuNqTazDUW52AUfea/nO4SflDYI/OhSggopeUY6fc/uTFxw0+Kq6g7rc0da9zitlypdrwO2cGQdIOc7bBt42Mkh2oA8AEjzttkV+KFiLWpMlpwbAAmYSaVD7GKPRUaiaAP8oVbacFfagIGMV1yaCjAA6s6VSYYe73pgn3grOkPrCWaCcDGuPjr17ubtsgFqpA0/12n6uwC7T4mdGu75T/Ip3Ax/SsE+LGnFkRFLEJlc1/4yfyWe64oazNZHNtioBMnVuzO5EEc9BcGfeAl44iBw4qiOHhIjFy/EEIInyNaeUJcq5fmrDTxc8h46TOYtpFch/sFRImDczpMFqzW5krmFeZ6px0OJ92eNwP3y37z4mjTfsj/7kqHFYyYIVMbl+LF/hTM6uylTHPALHRS03WfcI+HvmItQA2qYTWbA2Ol/v1hmUeSHjcTpwALxIjNgU4HlZxkr5dil1M9eUHlxAVgmTQLLAQgaIMO+HZLSbY76ltWVRw5aBSSxwN+xTDbBPrzUVdB/go0Rd9OchKM6/xdxQV4BUDm714j9YoWj8KS9h4FHwSaQBVSvdhM/O7wd/Acy8gZtaVmUCrOCwMrg96cG8PkC6CglukNv8WfL56UpiUrg/ddE7+6Qgu7te8p7G7rtHNE+ECYWh0smPa0XJFjO8g1BcMqDNfanINGhHv/62yqxOY5XPCMVYx8UajiQCQXmMDOhpIjsLkM2F5MjPzLYViddalBZtrUfG/hyU70SPbOPG+3zNapSX/eyrFKGDYdIg9hKDLxm26/RVJBkRUxJHOHobWEKjttrCsyGXk8UkaobWfr0bkTLVCl3IZXsnn886d3Ej+vgupVG8TC9IpQ6YkwXiqH64PimiBhrDPVAFWMxpjh3YycMHHAVyP3qVgYLD0LG6PR8ItJGK8rNnMhBgTXADRD7VGb9Tr5e1h7roAP2w7LXLdlazNfoTifc2WOrupP4gcRveqmqYHQpgCSRep6h7tq3GpteUIUMfdrjFNxUGNMsVjg X-MS-Exchange-AntiSpam-MessageData-1: 5LkswDJnvHdZ/u0eiTpP35Tajj3Hgb5b3yk= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: a66d95ab-095b-4549-5fe9-08df17f1f2e3 X-MS-Exchange-CrossTenant-AuthSource: AM7PR10MB3956.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Sep 2026 15:06:44.0885 (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: nfikM4P7lZqCiNrTD9rPP5Ftool4jBBmiEP7PhG5ZKR71olUGmZrIl8A6/F0hL9Xy9AKoCUBagM6WWXfQVAFye+YcECk4KbIYxtMj0SVFH0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR10MB5383 X-Original-Sender: felix.moessbauer@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=iz3wtDGv; 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 felix.moessbauer@siemens.com designates 2a01:111:f403:c20a::7 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Felix Moessbauer Reply-To: Felix Moessbauer 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?= For debugging cache efficiency, it helps to easily compare one artifact to all other artifacts of the same arch / PN / task. For that, we introduce the delta command, which behaves similar to the analyze command but takes a hash as input. The comparison candidates are ordered by age and are limited to the DISTRO of the given hash, as artifacts of other distros always differ. Use --verbose to compare against all distros. Signed-off-by: Felix Moessbauer --- scripts/isar-sstate | 78 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 4 deletions(-) diff --git a/scripts/isar-sstate b/scripts/isar-sstate index b0d4033f..767661f6 100755 --- a/scripts/isar-sstate +++ b/scripts/isar-sstate @@ -22,7 +22,7 @@ sstate cache: `SSTATE_DIR`. To share them, you need to explicitly upload them to the shared location, which is what isar-sstate is for. -isar-sstate implements six commands (upload, clean, info, show, analyze, lint), +isar-sstate implements seven commands (upload, clean, info, show, delta, analyze, lint), and supports three remote backends (filesystem, http/webdav, AWS S3). ## Commands @@ -59,6 +59,13 @@ The argument `--verbose` increases the amount of information displayed. The `show` command lists all individual artifacts for a recipe (`PN`) in the remote cache, grouped by architecture, task name, `DISTRO`, and hash. +### delta + +The `delta` command compares the signature of a specified hash against +all other signatures in the cache matching the same architecture, +recipe (`PN`), and task. Artifacts built for a different `DISTRO` are +skipped, unless `--verbose` is given. + ### analyze The `analyze` command iterates over all artifacts in the local sstate cache, @@ -630,11 +637,11 @@ def arguments(): parser = argparse.ArgumentParser() parser.add_argument( 'command', type=str, metavar='command', - choices='info upload clean show analyze lint'.split(), - help="command to execute (info, upload, clean, show, analyze, lint)") + choices='info upload clean show delta analyze lint'.split(), + help="command to execute (info, upload, clean, show, delta, analyze, lint)") parser.add_argument( 'source', type=str, nargs='?', - help="local sstate dir (for uploads or analysis), or PN (for show)") + help="local sstate dir (for uploads or analysis), PN (for show), or hash (for delta)") parser.add_argument( 'target', type=str, help="remote sstate location (a file://, http://, or s3:// URI)") @@ -678,6 +685,9 @@ def arguments(): elif args.command == 'show' and args.source is None: print(f"ERROR: '{args.command}' needs a PN and target") sys.exit(1) + elif args.command == 'delta' and args.source is None: + print(f"ERROR: '{args.command}' needs a hash and target") + sys.exit(1) elif args.command in 'info clean'.split() and args.source is not None: print(f"ERROR: '{args.command}' must not have a source (only a target)") sys.exit(1) @@ -864,6 +874,64 @@ def sstate_show(source, target, verbose, filter, arch, **kwargs): return 0 +def sstate_delta(hash, target, verbose, filter, arch, **kwargs): + if not target.exists(): + print(f"WARNING: {target} does not exist. Nothing to analyze.") + return 0 + + target.enable_cache() + sigs = {s.hash: s for s in target.list_all() if s.suffix.endswith('.siginfo')} + + matches = [s for s in sigs.values() if s.hash.startswith(hash)] + if len(matches) == 0: + print(f"ERROR: hash '{hash}' not found in {target}") + return 1 + if len(set(s.hash for s in matches)) > 1: + print(f"ERROR: hash prefix '{hash}' is ambiguous") + return 1 + ref_sig = matches[0] + + print(f"\033[1;33m==== checking item {ref_sig.arch}:{ref_sig.pn}:{ref_sig.task} ({ref_sig.hash[:8]}) ====\033[0m") + other_matches = apply_filters([ + s for s in sigs.values() + if s.arch == ref_sig.arch and s.pn == ref_sig.pn and s.task == ref_sig.task and s.hash != ref_sig.hash + ], filter, arch) + + ref_distro = None if verbose else get_distro(target, ref_sig.path) + if ref_distro: + other_matches = [s for s in other_matches + if get_distro(target, s.path) in (ref_distro, None)] + + if len(other_matches) == 0: + print(" -> found no other matches for comparison") + return 0 + print(f" -> found {len(other_matches)} potential matches") + + def recursecb(key, hash_a, hash_b): + recout = [] + if hash_a not in sigs or hash_b not in sigs: + recout.append(f"could not find signatures for job {key}") + return recout + out = compare_sigfiles(target.download(sigs[hash_a].path), + target.download(sigs[hash_b].path), recursecb, color=True) + for change in out: + recout.extend([' ' + line for line in change.splitlines()]) + return recout + + ref_file = target.download(ref_sig.path) + for t in sorted(other_matches, key=lambda x: (x.age, x.hash)): + age_str = str(datetime.timedelta(seconds=t.age)) + print(f"\033[0;33m**** comparing to {t.hash[:8]} (age: {age_str}) ****\033[0m") + try: + out = compare_sigfiles(target.download(t.path), ref_file, recursecb, color=True) + except: + out = ["Failed to compare signatures."] + # shorten hashes from 64 to 8 characters for better readability + out = [re.sub(r'([0-9a-f]{8})[0-9a-f]{56}', r'\1', line) for line in out] + print('\n'.join(out)) + return 0 + + def sstate_analyze(source, target, filter, arch, **kwargs): if not os.path.isdir(source): print(f"WARNING: source {source} does not exist. Nothing to analyze.") @@ -1042,6 +1110,8 @@ def main(): return 1 args.target = target + if args.command == 'delta': + args.hash = args.source return globals()[f'sstate_{args.command}'](**vars(args))