From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7171498873478709248 X-Received: by 2002:a02:856a:0:b0:389:ce3b:6bc0 with SMTP id g97-20020a02856a000000b00389ce3b6bc0mr8413292jai.61.1669744698480; Tue, 29 Nov 2022 09:58:18 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a02:22c1:0:b0:373:f0cf:a81f with SMTP id o184-20020a0222c1000000b00373f0cfa81fls1405823jao.9.-pod-prod-gmail; Tue, 29 Nov 2022 09:58:17 -0800 (PST) X-Google-Smtp-Source: AA0mqf5xfG/9f3qVoiKEOOzH10N0PlAmri39aTgFS5HhinJpTb58nHvDV9XkKxKp+ogbOExlQetS X-Received: by 2002:a02:a399:0:b0:363:a2f8:5223 with SMTP id y25-20020a02a399000000b00363a2f85223mr26273272jak.282.1669744697885; Tue, 29 Nov 2022 09:58:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669744697; cv=none; d=google.com; s=arc-20160816; b=Y90kV6FzeBz5xsUm21J1umNf4Uo8uAmw4+8yWfN+0xRKh0V3OC6B/Gul3qLgUPOCRk vUa6K2j60HvmgjKCe+omyoNDWBjlFQWYrqN0alkNSegiM3HsUz7OpZ/FXSwLW3UdkdRN vZ9xLnWVB1XSnGxLn/qA0cP5Pc6tnNiCDDHK6Tv10Zobc/M2giZa2xmEgMYNycRz2xqC TQsDRIpwT2Oj/kiZNewX8O46xc7SaS3i+LGzXpuv3W2VKbwf/EA1bA2P2Il9fATXHBWs /1jxQ/4BHQXjIdLkxIlIdHBYqS1sQDSo989nxWg6Oibaw/3hR6LAenjFfJoHMPsx26WM OCGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from; bh=7xMWg08YlphV+7dpSc8PUAWS6X98LOfeBQXRnL/6MQk=; b=F8xk/ft6FKRNttIb3tKhtMDVau1Pvo901BLVVzknfXVQTeDPEMT9M3EexNSNIzsbUm /Ldvmhs+RaMaoLv4Lk6St/SO1xkXXSt8K5AlQOcdig86TCVpFsqDOEbgAZaDVrIVgmWa wZjVuujYeggKOUdLrZxngjeKmp+h27vqrpY17D5ov0lzgZDY7uRUV8udhMB4e+PMsPZv irD8edy4DSItrSHQqzYp8htLpSygNW1ocKvqCk96EtndZIDDMwgbiCu/5IDy6MAyqtEA UoLiqt6+muAQYvtDwa0r7P9qx6UauTrglZch/hy9Djuk7vpLNCdT43sUmPYylVxvJP8P LEfQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id b24-20020a056602001800b00684c9b5bc7asi627805ioa.1.2022.11.29.09.58.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 Nov 2022 09:58:17 -0800 (PST) Received-SPF: pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Received: from baighyz.m.ilbers.de (host-80-81-17-52.static.customer.m-online.net [80.81.17.52]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 2ATHwEbR003006 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 29 Nov 2022 18:58:15 +0100 From: Uladzimir Bely To: isar-users@googlegroups.com Subject: [PATCH 2/2] testsuite: check Isar image for reproducability. Date: Tue, 29 Nov 2022 18:58:14 +0100 Message-Id: <20221129175814.16355-3-ubely@ilbers.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20221129175814.16355-1-ubely@ilbers.de> References: <20221129175814.16355-1-ubely@ilbers.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED 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-TUID: ubuW1CUTmSBO This test uses 'diffoscope'[1] tool to check the difference between two consecutive builds and copy the differeneces in html format. [1] https://diffoscope.org/ Signed-off-by: Uladzimir Bely --- testsuite/cibase.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ testsuite/citest.py | 18 ++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/testsuite/cibase.py b/testsuite/cibase.py index 6239b4de..8a6d4c6e 100755 --- a/testsuite/cibase.py +++ b/testsuite/cibase.py @@ -2,6 +2,7 @@ import glob import os +import subprocess import re import tempfile import time @@ -55,6 +56,49 @@ class CIBaseTest(CIBuilder): # Try to build with changed configuration with no cleanup self.bitbake(targets, **kwargs) + def perform_reproducable_test(self, targets, **kwargs): + def get_bitbake_var(output, var): + ret = '' + for line in output.splitlines(): + if line.startswith(var + '='): + ret = line.split('"')[1] + return ret + + self.configure(**kwargs) + + self.log.info('Starting first build...') + self.bitbake(targets, **kwargs) + + self.move_in_build_dir('tmp', 'tmp1') + self.delete_from_build_dir('sstate-cache') + self.delete_from_build_dir('ccache') + + self.log.info('Starting second build...') + self.bitbake(targets, **kwargs) + self.bitbake(targets, **kwargs) + + self.move_in_build_dir('tmp', 'tmp2') + self.delete_from_build_dir('sstate-cache') + self.delete_from_build_dir('ccache') + + for target in targets: + output = subprocess.check_output(['bitbake', '-e', target]).decode() + + machine=get_bitbake_var(output, 'MACHINE') + distro=get_bitbake_var(output, 'DISTRO') + + cmdline = ['diffoscope'] + cmdline.extend(['--html-dir', 'diffoscope_out']) + cmdline.extend(['tmp1/deploy/images/' + machine + '/isar-image-base-' + distro + '-' + machine + '.tar.gz']) + cmdline.extend(['tmp2/deploy/images/' + machine + '/isar-image-base-' + distro + '-' + machine + '.tar.gz']) + + print(cmdline) + + p1 = subprocess.call(cmdline) + + if p1.returncode: + self.fail('Image is not reproducable') + def perform_ccache_test(self, targets, **kwargs): def ccache_stats(dir, field): # Look ccache source's 'src/core/Statistic.hpp' for field meanings diff --git a/testsuite/citest.py b/testsuite/citest.py index 2dc78015..aa63e848 100755 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -48,6 +48,24 @@ class ReproTest(CIBaseTest): finally: self.move_in_build_dir('tmp', 'tmp_repro_unsigned') +class ReproducableTest(CIBaseTest): + + """ + Test cached base repository + + :avocado: tags=reproducable + """ + def test_reproducable(self): + targets = [ + 'mc:qemuamd64-bullseye:isar-image-base' + ] + + self.init() + try: + self.perform_reproducable_test(targets) + except: + self.cancel('KFAIL') + class CcacheTest(CIBaseTest): """ -- 2.20.1