From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7163187300010033152 X-Received: by 2002:a05:600c:3c93:b0:3d9:71fe:d0ef with SMTP id bg19-20020a05600c3c9300b003d971fed0efmr2726708wmb.15.1673049682844; Fri, 06 Jan 2023 16:01:22 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:d206:0:b0:2b6:8e51:dcb with SMTP id j6-20020adfd206000000b002b68e510dcbls835523wrh.3.-pod-prod-gmail; Fri, 06 Jan 2023 16:01:21 -0800 (PST) X-Google-Smtp-Source: AMrXdXs35bKesZzi3FTIYZL/0kEyoiQzXh20kwJz+TayVC3H5wzPvo+2OKEzbyYAnnZee/UoguZd X-Received: by 2002:a05:6000:888:b0:2aa:438a:2165 with SMTP id ca8-20020a056000088800b002aa438a2165mr8021817wrb.24.1673049681718; Fri, 06 Jan 2023 16:01:21 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1673049681; cv=pass; d=google.com; s=arc-20160816; b=Wn5HoaPeuVydh/YZvAg2yPpS5wTO+Q+Wa5HyQlafyBCYu+jrK3bvypRQ+xfWDP27OM FR1mn5aB/Ws4vi3pntk6NVRcbcgZEAIWSxg12Bkwdf476a1fmy+lFotrzEFLpYTzw1Xg pcd+t5aAEjZ8/c52ER5HB6gGseBXO7INIRPUACFyzTmrxAW47q3eD2+5meKygAmOEUMX 8ZYKOtMrJWIX5nVEazOZl2Vr1vlR4Wr/MhZODOSPajCj3h7lc0QKPysNrE7c8zvE2L8j OUbvlsc1g90rcs+yBrV36v4IQ/LxT022IginRWN+ogxSpup+7IOjLHRMziRG4DPolcMb hxug== 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=BJvUGs+Kj9BmlMk/y3NS+AxHpJFMwv9DiHP+KIFwerw=; b=xZ8+elVqISKYLha+zSXzgYTveVLTjf5A/2ll9UuYmGNWszb9GfCfT0QqqfWYow2AaO ccZLTkLFnePubDByp4x/njMvthHdlwpHXNMSgEQbXjwKEjZkP/YVC9xOQuZrYKHoEn8L mWBXjZCX77kTWzDvzdu8bbSGtxPLdaKLb3vOaJIm8oJGGxWFhxpyBHRxikp+/eieYc9m P9Mslnt4U7yLRJPJgPV0O5DABY0m9mtq0a9cb6Bre3G1yuG64sSUCsNwJYfe7OxoCVMN CSXhvzbeSyaLKRbvHFSjehRlU5S2H/q3MCWxncwy3uxNMQecgqTKP5iloQcH/XFRVDFq 8dZw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=gkCfhl79; 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 40.107.22.42 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-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2042.outbound.protection.outlook.com. [40.107.22.42]) by gmr-mx.google.com with ESMTPS id v5-20020a5d59c5000000b00236e8baff63si93908wry.0.2023.01.06.16.01.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 06 Jan 2023 16:01:21 -0800 (PST) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 40.107.22.42 as permitted sender) client-ip=40.107.22.42; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=gkCfhl79; 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 40.107.22.42 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=Lj6ZH7I+0WUshBS4M5w9vJVVGeH6indRGdG5YGDqxmCPf372qDOntDg0rePkLo0wEVmacTMFdH6DGQrn/2Dd5ur3bVi7uqUoU8GXbYXiUO8aoNlYo9xFsgB07VdGFpijeX3LWrasb/p45eswD6/AHsTOeP546nubJO8Z+1XSCbVLiTV76dOs5+a+TMw11JZWik6aN6RHwUIhaFAWGJ6YqHFPSU2XoKRfUlxaBX4LJ4fsWHlW46lEOVPDA+gcyxzyf3qobFMP1Ba4XOwPNmeCwp4gnjgqxmVYLo0699A1V1LfB0Y1QW3XidA+wuB0RHqFNATTNf3z1fDdmYDBuHay/Q== 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=BJvUGs+Kj9BmlMk/y3NS+AxHpJFMwv9DiHP+KIFwerw=; b=MF/FtQgBGzpnOfQHUE4TSM2eCXeRKj6DQkO5jiL/Nfl1JIxsxDErHKyipRxBebQhyrKEJNvDPzun4WkUbm1ukq5qtTAiuucyZx0dhVsdjJr7KcwSMXgL8OqDYFu3NsG3LrpZXq94cHNu91P6rLl3RNMJzqgnnIr1IsRsXh751rDsddSqId8DuQKF9F5IU/usWeBmHSVcRum0Mu/VDrNvbbfi44V7yfgemvbTuRcRqAymNrQ6aIaxCb/gxWTlKltd5JrhxCQ4RQC1sORHPvg6jf+mBK4PBRtvYO81EAOjfOqu39Xs0QNEdzceuF7ZtNuS2dSYB5y5RdK4H+wYHaifWA== 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=BJvUGs+Kj9BmlMk/y3NS+AxHpJFMwv9DiHP+KIFwerw=; b=gkCfhl79SF1CslnszeM1opw38oqyWKhzvdX0YF3d1f4Ew60hh+GhzZFs6ZdlG99E1XpMOW4XcCZIE0YwfV9pmttWlQQ5i22OMdutx9dcTbQcOIk+CaqoR6+Ad/LsrlOiMizXNJ8b5bTAfmDwM9f3PsrJb8t0hgmh4hiibJy2iE2SBiFIP59oupX6d2t+J0oABtw7dhGrW91GCX/8tyCCUGHkK8ZPm8N04mrMbZDXRCKML5nnPW0OevCaANho503E6Ou0TVyCz4r+q0MJlRi6DMBLQdt375CPcJZ0EpEe5djwbcgT6ovaiUUSV24YBArG6LxR27VXauK/C5OmynnRqA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siemens.com; Received: from PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:269::8) by AS8PR10MB7208.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:618::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Sat, 7 Jan 2023 00:01:20 +0000 Received: from PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM ([fe80::bdf0:fdeb:f955:bc79]) by PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM ([fe80::bdf0:fdeb:f955:bc79%3]) with mapi id 15.20.5944.019; Sat, 7 Jan 2023 00:01:20 +0000 Date: Sat, 7 Jan 2023 01:01:11 +0100 From: Henning Schild To: venkata.pyla@toshiba-tsip.com Cc: isar-users@googlegroups.com, jan.kiszka@siemens.com, kazuhiro3.hayashi@toshiba.co.jp, dinesh.kumar@toshiba-tsip.com Subject: Re: [PATCH 2/2] repro-build-test.py: Test to check images are reproducible Message-ID: <20230107010111.4136d84d@md1za8fc.ad001.siemens.net> In-Reply-To: <20221219144147.31245-3-venkata.pyla@toshiba-tsip.com> References: <20221219144147.31245-3-venkata.pyla@toshiba-tsip.com> X-Mailer: Claws Mail 4.1.0 (GTK 3.24.35; x86_64-pc-linux-gnu) Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-ClientProxiedBy: CH2PR02CA0028.namprd02.prod.outlook.com (2603:10b6:610:4e::38) To PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:269::8) Return-Path: henning.schild@siemens.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR10MB5780:EE_|AS8PR10MB7208:EE_ X-MS-Office365-Filtering-Correlation-Id: 0f79ad2e-3d29-4a46-7bb3-08daf0424e72 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xEKEx4z0HovlPpaEqqs4sOd4OHh6+5L4in+x9yOZzFWPYAsOP7JhizzFYFoaxaOkPd6pePPGLxGIBsX32NsYNKohrlcPaEaWfE7K8e9lMcXz6or3HFrGs1CW17eglwdOzKkTWOunSWhYJEYgxZZ0llO/KFLVrE3u3cLk/8vhT635/bXt8j/wSr8MJ0Klshqda7/ey1cQMRzGO/67sKV3449/Y1KlpxKUYMUvyslwANFiSrFPHjeN/wIIjhznZ1+giVWg3HNxd9/lzxKDylu9HvaK+1H9qahvnhsI/yU6aQFoHEL+nPPuw7YOwsLNCujWLSH1m75miQ5hnEuhUK5eWXe1cYHGH00khITWgzZMkkzId8p4mXr/6fHpt1s6DidJ6cGT9uId1nu6giR15LGHF5TIxeiTpsVeF7vA1IXJNLLOEnnXqxDETPQgTxqgKFVFKMEuxjO/GKAcQH3/FG6lpgM1amPMvPuEeJSGk8bI5eE3pOY2uQxxpbAqQJq28ZhmOdWRFTAJlhy/kYLUCM6sJeteeCFQpF8hG/Oyu+ZF8JQZfW3RVZ1HYBnS0+t4yeNjmde1pPZu5UXwdCNlAtcdPNFtvd0MIL1S9FdR67aN7FRIHGbXXtNNt/ceJ2QSfz6HYj2GNleotqkNgFL78bhI6A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(376002)(396003)(136003)(346002)(451199015)(66946007)(82960400001)(86362001)(6506007)(38100700002)(6916009)(66476007)(66556008)(6486002)(478600001)(6512007)(9686003)(186003)(1076003)(6666004)(316002)(4326008)(2906002)(8936002)(8676002)(44832011)(5660300002)(41300700001)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0EY+BLiJMKao+bAAx1nLLTaEt3YH06kYrOEWEuZp8k+oiACF1G3eBwnMY0ls?= =?us-ascii?Q?Zlx5jUeL5HgJ+KDHBAsHySMnrPVrEem5YwIsQVoKdWwQkImDvKKewvkeCMRU?= =?us-ascii?Q?9RbV37xuPYdDthYPYFJZwUiu4NXgFC19VQDU+e52ANgk1DM6D9UNxM9nf1BC?= =?us-ascii?Q?qeiZk6ofcN6ATMu8W9ogdZV0yHNcKGWYRanh6AkWYnDs6QJ11Zl0H44GVT7/?= =?us-ascii?Q?tXYYu4EKg/5kyjydMH/SvBLGxrsn65EbB3JujbZi/MYxO7cX9E7nk9msF7Uj?= =?us-ascii?Q?FnrYLegft9WvnwvE4nUKX+fVabf1ePsATqfu5VI40EP8M4fwnXP76y1pgOeP?= =?us-ascii?Q?BRJNFHchuC7y7vHNUAYwc782AYuIJOl3bHi9wD8BY3z8aUsefVWxyKz6f5YZ?= =?us-ascii?Q?JkaHXwrBxRkLE/vvz77laD2jP01egIH6lvUOiAmnTUGmV+poCi7ESj8WY0+4?= =?us-ascii?Q?EFx7seU1rK7zHUDNsUEk2a4+wMvgDUG7qJLJjSk5NKMGMAoHZJ+BOXz26glR?= =?us-ascii?Q?iVdDG/DdxSOnIF86NSa1fRcjhbIQMYexgrK4/qvim4SVUf4YvxYWmz+TluEb?= =?us-ascii?Q?BuvseAklIm/auKm9/FC2aisi9/DAZH7WXVP35J8p3ww6jKBV47cvUNRkqbyE?= =?us-ascii?Q?5BMOpll+vPXr2JpvItxTwBjYdFfxByYpJybslzGjNr5Q+wCV+URrI9IcKR2Q?= =?us-ascii?Q?mL9Xx8LhnUgtRgO5zwgLc1UyV1Fmblje/IRZcT5vCMJUAJ3HmgoLHrdvJ+NR?= =?us-ascii?Q?EIN5dknpD+n22qcncLM9djVaqmzKvzFSk1BrGhUQMgkj66H8I2mOmOMHvj1/?= =?us-ascii?Q?6/R47m6s9sor+SezKRQ+CgHaMIl2e6gOfjjSmIcLSdSBPAavShLtbS7eT4/A?= =?us-ascii?Q?V3aniykK7wA6xqN5gYrrxDDhLOj2EcEoLLc5wcuuKOtJVdLwFMtox+Hdhpwx?= =?us-ascii?Q?3ZWBODg6t4Ca/hNxnGPOZF5F5l1VXBYBWqiY8PzWYYeYn2q0/j6CRW6JBFnH?= =?us-ascii?Q?GiuFtWvIcB989W9QDEGdJT1Ov8n6F08bKhORL1FxcaJJo4v8fzRxn9IIHL+i?= =?us-ascii?Q?IEC2b6Zs/Yz03a/2be4AmqAAFkveW+4pqsmwJwRB+qHBSv72UEfhLKyNokzZ?= =?us-ascii?Q?pFNQsDBlU+qIXNOWA5MkIfsltcX9S+lZrv/ANMhGh8ElkStG/qx44Pc+As+u?= =?us-ascii?Q?CdJ6rPBwgsrVmlKXy8xl9Z/d9qjCH+5gZ04/z3F9LgWauSsnYNc2kP7zWHOl?= =?us-ascii?Q?x1n89kkDiGhrkj6YxAZ/WHieYLTTeRPmJGm9HPq9m9junuOdMOdcV2bNADMr?= =?us-ascii?Q?VhyxWMkrALQmjCMc3asCwmN15zeGIywxXLZNAXmwVyWO83bKNZeNXPhMISK+?= =?us-ascii?Q?MDmJ2Fqm+vDXL+xJ2dEqlnIz3D7TXOkSuB9otF9Q6HLEy4V/dJgLzN6FQpsJ?= =?us-ascii?Q?dMRuMplUFoiUS3toj3TRz8rQ1CyX6/C2prOPLOFE4cCqUN9ue/7dcUxV0jdR?= =?us-ascii?Q?9nACzCM18xfe1TOiHgZRQe1Lbibf3d8LcUlHapwn6POdC4cH8e/UqmQFIWLK?= =?us-ascii?Q?Ot04PKyJ6Nw3YHsEWN/X7ey+Co9zWgHuHDCxTBc/IfRgP91tWhADZKcDViSy?= =?us-ascii?Q?MLqaUb+ZU6Zd6vGks4xGE3g117Cdy1eXtJ5FeNDmvSh8aNPVgKtfO7YYX1rX?= =?us-ascii?Q?Krnlbg=3D=3D?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f79ad2e-3d29-4a46-7bb3-08daf0424e72 X-MS-Exchange-CrossTenant-AuthSource: PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2023 00:01:20.4260 (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: SG0gXyhgkLw7HZBiiaOIAFZWaM7wt+VbDLmZVyoqiczj5+R3DAhFxMVKRuuGdlDLKLMXbPz6JFQIlS3U53I6wqlBWwcvmvDSRagZdK6awTo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR10MB7208 X-TUID: mjFeFu8g6ZDf This was merged into "master", if we did have linter checks like "flake8" on python code this one would certainly fail them. A simple black testsuite/repro-build-test.py already makes it much happier. And the several "imported but unused" could also be checked. venkata pyla please have a look at this if you want run black testsuite/repro-build-test.py and see if you like the result run flake8 testsuite/repro-build-test.py and see if you can fix things it reports possibly do that in "black" and "flake8" loops until both agree And maybe do the same thing for other .py files if you like. The whole repro story is about being pedantic so let us use tools that help us with being very pedantic. Henning Am Mon, 19 Dec 2022 20:11:47 +0530 schrieb venkata.pyla@toshiba-tsip.com: > From: venkata pyla > > This test verifies whether the images are reproducible by checking > with in-depth comparision tool `diffoscope` and produces a > comparision output in plain text format for checking the differences. > > Signed-off-by: venkata pyla > --- > testsuite/repro-build-test.py | 68 > +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) > create mode 100755 testsuite/repro-build-test.py > > diff --git a/testsuite/repro-build-test.py > b/testsuite/repro-build-test.py new file mode 100755 > index 0000000..e89becf > --- /dev/null > +++ b/testsuite/repro-build-test.py > @@ -0,0 +1,68 @@ > +#!/usr/bin/env python3 > + > +import glob > +import os > +import re > +import tempfile > +import time > + > +from cibuilder import CIBuilder, isar_root > +from avocado.utils import process > + > +class ReproBuild(CIBuilder): > + > + """ > + Test reproducible builds by comparing the artifacts > + > + :avocado: tags=repro-build > + """ > + def test_repro_build(self): > + target = self.params.get('build_target', > default='mc:qemuamd64-bullseye:isar-image-base') > + source_date_epoch = self.params.get('source_date_epoch', > default=self.git_last_commit_timestamp()) > + self.init() > + self.build_repro_image(target, source_date_epoch, > 'image1.tar.gz') > + self.build_repro_image(target, source_date_epoch, > 'image2.tar.gz') > + self.compare_repro_image('image1.tar.gz', 'image2.tar.gz') > + > + def git_last_commit_timestamp(self): > + return process.run('git log -1 --pretty=%ct').stdout > + > + def get_image_path(self, target_name): > + image_dir = "tmp/deploy/images" > + target_params = target_name.split(':') > + machine = target_params[1].split('-')[0] > + distro = 'debian-' + target_params[1].split('-')[1] > + image_type = target_params[2] > + return > f'{image_dir}/{machine}/{image_type}-{distro}-{machine}.tar.gz' + > + def build_repro_image(self, target, source_date_epoch=None > ,image_name='image.tar.gz'): + > + if not source_date_epoch: > + self.error("Reproducible build should configure with > source_date_epoch time") + > + # clean artifacts before build > + self.clean() > + > + # Build > + self.log.info("Started Build " + image_name) > + self.configure(source_date_epoch=source_date_epoch) > + self.bitbake(target) > + > + # copy the artifacts image name with given name > + image_path = self.get_image_path(target) > + self.log.info("Copy image " + image_path + " as " + > image_name) > + self.move_in_build_dir(image_path, image_name) > + > + def clean(self): > + self.delete_from_build_dir('tmp') > + self.delete_from_build_dir('sstate-cache') > + > + def compare_repro_image(self, image1, image2): > + self.log.info("Compare artifacts image1: " + image1 + ", > image2: " + image2) > + result = process.run('diffoscope ' > + '--text ' + self.build_dir + > '/diffoscope-output.txt' > + ' ' + self.build_dir + '/' + image1 + > + ' ' + self.build_dir + '/' + image2 , > + ignore_status = True) > + if result.exit_status > 0: > + self.fail(f'Images {image1} and {image2} are not > reproducible')