From patchwork Fri Feb 21 15:48:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Mikanovich X-Patchwork-Id: 4068 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Fri, 21 Feb 2025 16:49:03 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f61.google.com (mail-wm1-f61.google.com [209.85.128.61]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 51LFn2vZ015929 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 21 Feb 2025 16:49:02 +0100 Received: by mail-wm1-f61.google.com with SMTP id 5b1f17b1804b1-438e180821asf11823465e9.1 for ; Fri, 21 Feb 2025 07:49:02 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1740152937; cv=pass; d=google.com; s=arc-20240605; b=MxpquoVfomYOOyizUcOMF7ixWOjjCbwTeQDtYH2Fat5DQEcXoBzyhJZnl3qjyxWidk deaqmuaaReUte6hxQB78btMOAI5sou8/xduecO9Iln7Fqp5a6fvl5mW2Y7siAfOMZTbe CuSUm6Qg2rR4ogwj55DyXmxDRp4zT31f2MuGw0WXWt7SX6lQmCwBYs8gI7I+HJK6SBIL 10JJvPNWHIWG5t30clrxW4VypyObWSpES7TZNygHpL4K/3dZ4otKGKsYVGQjWf7HgilO 7jt0FBcwXqX7HAcfu/Wbf9QbqMmnsSN6vXuRHkD91Az5zpryRK4+aIerZoHN+8gx2E6e YQLg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=kax3d4Ums4ZpjKCLs3L+nQU+C9x2sTz0hLyymbgxlZE=; fh=1ngCJ8fZoKc7Va3mnlTxfctqyA9CRR9kUdTbG03a3ro=; b=kOis8Lf1Z54tX5BSxDDP3+djiEcNkfPJRgIWx5TkFhCZAk64dKtBhTZBBhTfbqJHw6 gacbuiwYh5w1lMu/OjA0v+eUqTHS2m8AAQaAbq8B6DHVAhRqNccUHCCxpp49TdvMPUzf FzNefLGSds8PzQYUAnjf6+1aSJvWzICaogQjcyL38j+FH0BUZiOoHsUE3rk6ENdwoR9N /QGMLmLOcglcswSR0qjC7b/8vRndFDaOjF50Jb58RwaqpmyADEHFUyYK2D7VQtjBfGsn iqqHfBvhxaXud6BNrHl7MzRYq0RUpPIu/PqTzEdRMSghhdy/XZcqGx/KBJ7d0JQjHyZ7 Zh+g==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1740152937; x=1740757737; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=kax3d4Ums4ZpjKCLs3L+nQU+C9x2sTz0hLyymbgxlZE=; b=LPc4IE7+XzrrhJriOW3qD0HMJacXmmbh5e6SQq2rsf5ghyz3JL1R//9t8m1hZLHDrA jLrpYx1tSiXshZX0yWKVOILo0Ejvfptbpg20tLXdDCYPopkV5llliovYg7rvpUdQdhGk qeDv0HSNhjcJSFfgOa81mD85lQSaN9Gy/d/EPWD3hEJH7HLzBhbn70PVQbso7jmEeray oDG93m4JJPnCw577vJ7m8rZ9riIv4o2FKxk5je7smnJWKjvc7z9el7VkI48I4TYd4Zsy In/5NtiLmAKm9KBCcvxEq9jRTjynLpdgGrXKSbwAEKuYviBc97O8e9egFbCVJDsZP4Ap wNjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740152937; x=1740757737; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=kax3d4Ums4ZpjKCLs3L+nQU+C9x2sTz0hLyymbgxlZE=; b=C503kN6tPRLMCekvJEssEB4NRt5C+SYWZB6/85hVuO6+iUWEXmDDA4Na7cmKD6fLBc d0bR10kLfZhZ2mZ8HiLndD8NrNihyOBXzyL7kUXAhIk5MUnQnBjBe7H5Gr7AvOGQQ+mB 4HMyUpHWFMP1J2vlzOAzuu27Bxiwr/4mwCp5JxAgKX0CBh5y2BlOB7QuK1JZ1/KZqftD HBzjjW7ssmYVKfDvTnqS4e7CQVZ7gcxHzBpFeApyoZkEw1W/QPVYsjSwJ1WSMiiVyC/G mPuVjsseuJ2CtmjVaYbvgtdr0KdhLKS1Ulvytx3u/SkPoODUrGRNftEepOSP9wGO0zQs vXgw== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AJvYcCX61Hmv7KwP6jgrLciZLZ3iJfh58h8Enj9qr4Zp7hE7xbHk+buIbYS0q+ID2QfOPZhkSPxOUqc=@isar-build.org X-Gm-Message-State: AOJu0YyWCjBIirkajJ4wcNSLF9qojs/8IJ3RPTiELr8X0+yv+XbHsm4V 3b5+xBPOuSNUT+fb1+AJnXbwjjg/emULAr3flD0MJZd4J4CT01jP X-Google-Smtp-Source: AGHT+IFiDG1ZQJsTmn5/MiYY6rXqbFt5B3KaTiIOCsa6WArQPAQKzI5d2NRSrrCvPyEEv3SpUVUN9w== X-Received: by 2002:a05:600c:46c7:b0:439:86fb:7324 with SMTP id 5b1f17b1804b1-439ae1d7e16mr33430565e9.4.1740152936466; Fri, 21 Feb 2025 07:48:56 -0800 (PST) X-BeenThere: isar-users@googlegroups.com; h=Adn5yVHe3rFd3pC/Bg3KvgZLqOVxDst+YDKZodKUEIIyjBqG6g== Received: by 2002:a05:600c:3550:b0:439:9744:6876 with SMTP id 5b1f17b1804b1-439a285722cls8576395e9.0.-pod-prod-04-eu; Fri, 21 Feb 2025 07:48:54 -0800 (PST) X-Received: by 2002:a05:600c:1ca1:b0:439:a4d9:34a3 with SMTP id 5b1f17b1804b1-439ae1e6619mr32791645e9.12.1740152934225; Fri, 21 Feb 2025 07:48:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1740152934; cv=none; d=google.com; s=arc-20240605; b=dU2yEZ+Xv30dtgg6tvnirP6ZbMBy5ChU6tpKgZdXs1Q/4dwsVY4ySZVGZ8evk4tiP2 +xOMT3uR9DyvhNVip590EnqEC+Nfvwb42RrL/1L/Vor8L+pdzcaOy4H8T4E9kEgFtanD /vjCuvNcSVmPQvCyjlC9Rc3tLvPgUMZ1ObzQz4vJJMj9MTZv07082Nju4ebZ9djPYK/D znyn0BxFqe3VJ0w9bPi/kGALZ8hHHHVwassfAksIcvhkSgOFbx849I6LJdrM2cH+zr9J 8S55aiBLUWlaoqyLs/PM9VZv19UVrDncVWAliHpeiak1tNcuSOQNFg9/Kp22FMD1inaU PeZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=UegNh9q4K91GF8M0+G8xMXWagH/ZT67+iEkAZhtlmyM=; fh=/h9QQkzJ8EboVkWg45aWwpaUro6WMavIVd2OhN45RtE=; b=Wnl7drQaJPPRN+ZMwHIGsMIKYPQITnABsVN00PC/VqtZ8EHz2nXJJiBb8N0+O9erqr +44aTeszS4RB7M5Bd5TFsrsEXQvjEfpdJ2yT9xXBzNSPbAugglDMo9s2c66jqxw+U1pn iPwKWU33NIKX2VPdUpfH+4jpHc38Dlh7LTSMsHHTBT3nzXgBPIFMGs1Ym8zLden7u1pA DQM632NvN0CX6T8P9gAYf35Mr+uRA8M86jT+hKIQfiqhO+0CFMflGx0YVFcCOF4ljIaI T4V5o1zIs9mtc6YbQxi3XqJyfIqzse0HZRd/2KguTMfvyx40d0MQNMvODuYuPjrUps2s jlYg==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id 5b1f17b1804b1-439b0131a99si350095e9.0.2025.02.21.07.48.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 21 Feb 2025 07:48:54 -0800 (PST) Received-SPF: pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from user-B660.promwad.corp ([159.148.83.123]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 51LFmn2r015858 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 Feb 2025 16:48:53 +0100 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Anton Mikanovich Subject: [PATCH 4/6] CI: Add essential packages rebuild test case Date: Fri, 21 Feb 2025 17:48:41 +0200 Message-Id: <20250221154843.515037-5-amikan@ilbers.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250221154843.515037-1-amikan@ilbers.de> References: <20250221154843.515037-1-amikan@ilbers.de> MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, 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-Original-Sender: amikan@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= Rebuilding of essential packages (already present in sbuild chroot) was not covered with CI before. Add a testcase for such a fuctionality. This test case also covers f62de679 change already merged. Signed-off-by: Anton Mikanovich --- testsuite/cibase.py | 101 +++++++++++++++++++++++++++++++++++++++++ testsuite/cibuilder.py | 4 ++ testsuite/citest.py | 25 +++++++++- 3 files changed, 129 insertions(+), 1 deletion(-) diff --git a/testsuite/cibase.py b/testsuite/cibase.py index 075535b1..c692719a 100755 --- a/testsuite/cibase.py +++ b/testsuite/cibase.py @@ -1,4 +1,10 @@ #!/usr/bin/env python3 +# +# This software is a part of ISAR. +# Copyright (C) 2022-2025 ilbers GmbH +# Copyright (C) 2022-2024 Siemens AG +# +# SPDX-License-Identifier: MIT import glob import os @@ -359,3 +365,98 @@ class CIBaseTest(CIBuilder): self.fail("Source packages are equal") finally: self.cleanup_tmp_layer(tmp_layer_dir) + + +class CIEssentialTest(CIBaseTest): + def init(self, pkg='sed', dep='enable-fsck', **kwargs): + self.__pkg = pkg + self.__dep = dep + self.__flag = 'isar' + super().init(**kwargs) + + def perform_build_test(self, targets, **kwargs): + package_targets = [] + dependant_targets = [] + localapt_targets = [] + cleanup_targets = [] + rootfs_dirs = {} + work_dirs = {} + for target in targets: + package_target = target.split(':', 3) + dependant_target = package_target.copy() + cleanup_target = package_target.copy() + + package_target[-1] = self.__pkg + dependant_target[-1] = self.__dep + cleanup_target[-1] = 'sbuild-chroot-target:do_cleansstate' + + package_targets.append(':'.join(package_target)) + dep_str = ':'.join(dependant_target) + dependant_targets.append(dep_str) + localapt_targets.append(dep_str + ':do_local_isarapt') + cleanup_targets.append(':'.join(cleanup_target)) + + rootfs_dirs[target] = CIUtils.getVars( + 'IMAGE_ROOTFS', target=target + ) + + work_dirs[dep_str] = CIUtils.getVars('WORKDIR', target=dep_str) + + self.configure(essentials=self.__pkg, **kwargs) + + cmd = ( + "%e dpkg-query -f='\${Version}' -W " + f"{self.__pkg} > ${{WORKDIR}}/ci_vercheck" + ) + sbuildclass_file = self.set_sbuild_hook(cmd) + + try: + # Build local isar-apt copy + self.bitbake(localapt_targets, **kwargs) + + # Build package for target + self.bitbake(package_targets, **kwargs) + + # Cleanup existing sbuild chroot + self.bitbake(cleanup_targets, **kwargs) + + # Build other package + self.bitbake(dependant_targets, **kwargs) + + # Ensure updated build dep used + for target in dependant_targets: + check_path = os.path.join(work_dirs[target], 'ci_vercheck') + with open(check_path) as f: + ver = f.read() + if self.__flag not in ver: + self.fail( + f"Package {self.__pkg} of version {ver} used for " + f"building don't have {self.__flag} flag" + ) + finally: + self.restorefile(sbuildclass_file) + + # Change rootfs bbclass and rebuild + layerdir_core = CIUtils.getVars('LAYERDIR_core') + rfsclass_file = os.path.join(layerdir_core, 'classes/rootfs.bbclass') + self.backupfile(rfsclass_file) + try: + with open(rfsclass_file, 'a') as file: + file.write('python do_rootfs_install:append() {\n\n}') + + # Build again package for target + self.bitbake(package_targets, **kwargs) + finally: + self.restorefile(rfsclass_file) + + # Build full image after all + self.bitbake(targets, **kwargs) + + # Ensure target rootfs use non-updated package + for target in targets: + ver = self.get_pkg_ver(rootfs_dirs[target], self.__pkg) + if self.__flag in ver: + self.fail( + f"Package {self.__pkg} of version {ver} used for " + f"installing have {self.__flag} flag, but shouldn't" + ) diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py index d335dbe8..5aa64e31 100755 --- a/testsuite/cibuilder.py +++ b/testsuite/cibuilder.py @@ -109,6 +109,7 @@ class CIBuilder(Test): source_date_epoch=None, use_apt_snapshot=False, image_install=None, + essentials=None, **kwargs, ): # write configuration file and set bitbake_args @@ -155,6 +156,7 @@ class CIBuilder(Test): f" sstate_dir = {sstate_dir}\n" f" ccache_dir = {ccache_dir}\n" f" image_install = {image_install}\n" + f" essentials = {essentials}\n" f"===================================================" ) @@ -216,6 +218,8 @@ class CIBuilder(Test): f.write('IMAGE_INSTALL = "%s"\n' % image_install) if fail_on_cleanup == '1': f.write('ISAR_FAIL_ON_CLEANUP = "1"\n') + if essentials: + f.write('ISAR_REBUILD_ESSENTIAL_PKGS = "%s"\n' % essentials) # include ci_build.conf in local.conf with open(self.build_dir + '/conf/local.conf', 'r+') as f: diff --git a/testsuite/citest.py b/testsuite/citest.py index ee965278..9e2c1b43 100755 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -1,9 +1,15 @@ #!/usr/bin/env python3 +# +# This software is a part of ISAR. +# Copyright (C) 2022-2025 ilbers GmbH +# Copyright (C) 2022-2025 Siemens AG +# +# SPDX-License-Identifier: MIT from avocado import skipUnless from avocado.core import exceptions from avocado.utils import path -from cibase import CIBaseTest +from cibase import CIBaseTest, CIEssentialTest from utils import CIUtils UMOCI_AVAILABLE = True @@ -400,6 +406,23 @@ class SstateTest(CIBaseTest): self.perform_sstate_test(image_target, package_target) +class EssentialTest(CIEssentialTest): + + """ + Essential packages rebuild test + + :avocado: tags=essential,full + """ + + def test_essential(self): + targets = [ + 'mc:qemuamd64-bookworm:isar-image-base', + ] + + self.init(pkg="sed", dep="enable-fsck") + self.perform_build_test(targets) + + class SingleTest(CIBaseTest): """