From patchwork Wed Mar 17 04:52:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Mikanovich X-Patchwork-Id: 369 Return-Path: Delivered-To: ilbers.mnt@gmail.com Received: by 2002:a4a:378f:0:0:0:0:0 with SMTP id r137csp645814oor; Wed, 17 Mar 2021 07:53:13 -0700 (PDT) X-Received: by 2002:a05:6512:10c5:: with SMTP id k5mr2479514lfg.583.1615992793653; Wed, 17 Mar 2021 07:53:13 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1615992793; cv=pass; d=google.com; s=arc-20160816; b=HtT56rRCp7xeWcgaZuaaCrjv1hcGFJnVpet4WuJNHlpO94uMLvvyOgT1eL+1FB+oeG dr/66zs8gbWYU1nGklhU9qFrKpNmZSROBwuCgUrU7ECsxA57yR85ieAquBxKXJBkYfAS hJ5vvVDAl41WjvPEnUBCs9kz+VW020BlTn16RDHB/pkG0PVhDlUq/yq540MojBrcny5n 5gyQ7UED+TUE4Fybh/pO5iLCtedHJzOYnpqoRTPwfNn92JIiW8OEC6uLn+0jraT5Y7h3 OGLDS+UEmgPaydXHfWsoP1XHgejPf486JkKO/eAxHvjIWx+KNkaWK09lYVmbRBHE8kWM u0EQ== ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=2Qfl1A8XBxnMxDS97VOwboAaIut5EldVTwa9pUhMBws=; b=PAy0MTqIEo0fesC7noLTgB4IJI1pZYULGW0pgHvA29HqQRgoSE95zHuRVwo/XaVyFw zrFEkG60GLszRujg7SJJWGfbfBRyWbBiwu2YmvhWyOw/vf9BZVoB1fqpPkhikE0WjfVS 9cDG05fDnJw1Tx2sIKhf09NbcR2R9MsmHyVGw9qM9TNQBqJF0sTitES0zQpcTn8+lpNc osLeQNTXkL+UZrMcd/9XcYszody1ZLxtQ4UR3Ggj1bA/FREx/P7lJcdSHZC8cIj80GCV 52Gq9MonXwZtZdUlog2KsbppZm+WdAinfUyilmg4+xuObQHUMcLJ5G1VK6R6JAbZZAOc faiQ== ARC-Authentication-Results: i=3; mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=jgD6DA+2; arc=pass (i=2 spf=pass spfdomain=ilbers.de); spf=pass (google.com: domain of isar-users+bncbchiponzwecrbwnpzcbamgqeq2nsf3a@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCHIPONZWECRBWNPZCBAMGQEQ2NSF3A@googlegroups.com Received: from mail-sor-f55.google.com (mail-sor-f55.google.com. [209.85.220.55]) by mx.google.com with SMTPS id d7sor9623365ljg.76.2021.03.17.07.53.13 (Google Transport Security); Wed, 17 Mar 2021 07:53:13 -0700 (PDT) Received-SPF: pass (google.com: domain of isar-users+bncbchiponzwecrbwnpzcbamgqeq2nsf3a@googlegroups.com designates 209.85.220.55 as permitted sender) client-ip=209.85.220.55; Authentication-Results: mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=jgD6DA+2; arc=pass (i=2 spf=pass spfdomain=ilbers.de); spf=pass (google.com: domain of isar-users+bncbchiponzwecrbwnpzcbamgqeq2nsf3a@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCHIPONZWECRBWNPZCBAMGQEQ2NSF3A@googlegroups.com ARC-Seal: i=2; a=rsa-sha256; t=1615992793; cv=pass; d=google.com; s=arc-20160816; b=Myc7e9oALDlUiV2jqFPVZKemQxkhgaM8xCW1xiP93cxDHHH1Kvoak+SvhlQ/BSVCHp rwY7GAoJ6+MfWgOTrAQBFyfaXa1YQPVa9FGMzqija7lyTB1YicQkfyGI+4OnAxen9SV8 DagYq4Oh9VTRL+YVvxHEctMZaxHUfgZNjr8kChPcvo479UQVIG5QRCxG9ENj9wWgJYVs ZXU2J8o0WQcXClZOy8J9eP8DKDkUOMMONw0/jgeK/DxJwyltYKeafMx8M/2kW9F+w9Ta 7Pe6FbrHhCHX0hHLz6qCHweEgYoLRsuTSv8JqRldJE9ZeEJPSjUGgK7AqZTcmyUgWS43 4Ueg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=2Qfl1A8XBxnMxDS97VOwboAaIut5EldVTwa9pUhMBws=; b=hxKpje54TNDMYtugzHBmgrX3ZAVEf+bINrz3hkgvosQagK1Vwp5Ht/PDjJOE/P+GG/ MDUGZi5f2Q/pu1g8RWo/AKrmMuZprRRwHUtP4qk4pQxm364JP0uriZpq9K8YyfNSAQfu 3GjkRqxKHYhzmvDFMJxqEUdvyuij63w5Rew1OdM1ZbpcYc+KBUyo8agAlTGIeDnVQefQ Hxp4CCkdgIbeLRIwjpgAxIqZtynpUII8G6C/BjP3MbzK/tyFQFQBsP+OdHb6wCP8SGQ1 4sksjKqgO8qZSY5JKa/HgKXldXuYEBCXHs4Q/6HFAyAA12Tl2C0+mdDAK/q8aPkTGU8A I6iw== 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=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=2Qfl1A8XBxnMxDS97VOwboAaIut5EldVTwa9pUhMBws=; b=jgD6DA+262KPV5Zire2ihLgr3oM9WJJ3h2YwwcdFmiwvNnCXZVULqPLzBw6Wpc8BJt 3KjvYeu78W1/bMFvfbpT0+5sI+RXmLIqrDpvlLeOx/1TEuxVWQ9UKDigTElQ5bZ5TGIn VhAQTs/6i+75B28bLIYheOtmGjngUWYZRagRVxs5EobxCjxbY+1PeXOImWV+oEUZd4XB SNEwWCiCoIMSgR57XsyyMDq9EqasfpO0J/e4UAwlxhHHUeNF2pgZDb4rX/FhMAZrw72H WE7y6wRGP3HDeOjDIzuiknFYDZ14MvQBwV4MGHsIloA5/oVjuPJ7zZJb1QLALiW80euE MtKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=2Qfl1A8XBxnMxDS97VOwboAaIut5EldVTwa9pUhMBws=; b=ZzIHU0WEDGstdwgRP3lyUCVoST332GTKZpQAyCzPwXpPID/7wH7uhGRY0usyQKu6Gq nbDG7TW8I938qVPAVsRF+H4voUht9TitHoo/iJb5pQfiNKk933NrPJ4S1NYrLsHnrHaE YXDjM8hbZJ6nvVL0ym48Dm+srtqpblL1SPspUrC64vN7Bab940c9N9pHYXhV3DPWmo4t z2hPuYvF6iJN56jEe1hXgoD/mjH90d5I2rFc0V1JgI8VDXeb3dPrd1LlHJvtUbqHoVT5 gKTbyAsTWb3YAdDOQL3fVVfFSAxQdzvz38LJvHG81qZJUQal97r9oo0W12ijTXOkuJnU wTWw== Sender: isar-users@googlegroups.com X-Gm-Message-State: AOAM532Gwqb2Eyvq1KEDJ6zB9+hrtNOHO+HmuKR1K8AQnzv20ywpypQt Ti/xjVr+4sK3qJv6kWU2xqQ= X-Google-Smtp-Source: ABdhPJwPnnNEiICil4c1tPE7jLk5lqk0+1nrGsse2wd4qOPsuOpJzAVstl2d6NksFA6ySILVJKtnjw== X-Received: by 2002:a05:651c:2125:: with SMTP id a37mr2728007ljq.19.1615992793348; Wed, 17 Mar 2021 07:53:13 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a19:e86:: with SMTP id 128ls6949675lfo.0.gmail; Wed, 17 Mar 2021 07:53:12 -0700 (PDT) X-Received: by 2002:ac2:5932:: with SMTP id v18mr2591656lfi.659.1615992792562; Wed, 17 Mar 2021 07:53:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1615992792; cv=none; d=google.com; s=arc-20160816; b=sgRKRU4vjWlOjD/1wSexjy+y0o+CSCxcIUPaFD358B6Yh3z/HI5cg5SLXk60ab410C Ho4uwnPWaTEFPGYllEDsCGR9TE/7sG407zgIQWcXU8B7HJdKX+R3iiSIo8BmgXsaqOCj /NwDgCHTY2Qk1BCJn31FDnFmqixP9f9ozq6c90dns2EceOnr6QK+xk4fGuhvAhoWBhKD PZ3+sKLuryXDXbQhicI7MDYBuTIaIOBU5vwQW+WCWNr6QTijHbiAKrxUp4gn25mFwbUK yD6uY9Xu6mNCocViycMX6/MfLfr/H4QJzEhwSu05+n7PwvfJoaQsv9CfGNyUIWnqE0cO 44sA== 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:cc:to:from; bh=KN3uZjWOb/dzfefsW0O5VeHp1AoyW/pcPNzaisII/8s=; b=mWI3xCTV9+c+9ZCQZ/PKKDOdtF6oud9sh7JYMB+DTjFejaPxwR+HvPxZwB9KIWzj4g 1vNb1kSq7dgh43xKq6vdIvkYq0/Hxx5NtSaHMa/ibpbAVuCRtH1RVKMxv61PTttmbZ0D zDy8W0R6jmABPzpRBtCMqcOHaXApT1+yf6+k2BT10yX8QnekP9Fw9AD4eqLMYXklgOY8 PSSutvVUDTm9waGjveN4WAuUdvYKdFX+hAbIBHOHSIvdekULBuBBNp4ur+jwu7SwaMaH 4CKNCHcV+zIsEf5tNUOrRfT4U+XPP3ss4av3jprN1c/uInK1Gpnik8qpy2l5zhbCR0LB L8hQ== 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 j2si328878lfe.5.2021.03.17.07.53.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 17 Mar 2021 07:53:12 -0700 (PDT) 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 localhost.localdomain (mm-117-75-121-178.mgts.dynamic.pppoe.byfly.by [178.121.75.117] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8) with ESMTPSA id 12HEqhaG032071 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Mar 2021 15:53:11 +0100 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Anton Mikanovich Subject: [PATCH v3 07/11] build_test: Refactoring build tests cases Date: Wed, 17 Mar 2021 17:52:21 +0300 Message-Id: <20210317145225.88050-8-amikan@ilbers.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210317145225.88050-1-amikan@ilbers.de> References: <20210317145225.88050-1-amikan@ilbers.de> MIME-Version: 1.0 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-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: INBOX X-GMAIL-THRID: =?utf-8?q?1694491259909275959?= X-GMAIL-MSGID: =?utf-8?q?1694491259909275959?= Split build test into classes and separate cases. Implement test cases tagging for external configuring. Also remove the usage of external varianter plugin. In this step, all ci_build test cases were copied as-is without functional changes. Signed-off-by: Anton Mikanovich --- testsuite/build_test/build_test.py | 137 ++++++++++++++++++++++++----- testsuite/build_test/cibase.py | 121 +++++++++++++++++++++++++ testsuite/build_test/cibuilder.py | 79 +++++++++++++++++ testsuite/build_test/run.sh | 3 - testsuite/build_test/run_fast.sh | 3 + testsuite/build_test/run_full.sh | 3 + testsuite/build_test/variant.yaml | 22 ----- 7 files changed, 323 insertions(+), 45 deletions(-) create mode 100644 testsuite/build_test/cibase.py create mode 100644 testsuite/build_test/cibuilder.py delete mode 100755 testsuite/build_test/run.sh create mode 100755 testsuite/build_test/run_fast.sh create mode 100755 testsuite/build_test/run_full.sh delete mode 100644 testsuite/build_test/variant.yaml diff --git a/testsuite/build_test/build_test.py b/testsuite/build_test/build_test.py index 7a55c2f..bc33fce 100644 --- a/testsuite/build_test/build_test.py +++ b/testsuite/build_test/build_test.py @@ -1,29 +1,126 @@ #!/usr/bin/env python3 import os -import subprocess32 -import sys -from os.path import dirname -from avocado import Test +from cibase import CIBaseTest -class BuildTest(Test): +class ReproTest(CIBaseTest): - def test(self): - # TODO: add default values - build_dir = self.params.get('build_dir', default='.') - arch = self.params.get('arch', default='arm') - distro = self.params.get('distro', default='stretch') + """ + Test cached base repository - self.log.info('===================================================') - self.log.info('Running Isar build test for (' + distro + '-' + arch + ')') - self.log.info('Isar build folder is: ' + build_dir) - self.log.info('===================================================') + :avocado: tags=repro,fast,full + """ + def test_repro(self): + targets_signed = ['mc:de0-nano-soc-buster:isar-image-base', + 'mc:qemuarm64-stretch:isar-image-base'] - #isar_root = dirname(__file__) + '/..' - os.chdir(build_dir) - cmdline = ['bitbake', 'mc:qemu' + arch + '-' + distro + ':isar-image-base'] - p1 = subprocess32.run(cmdline) + targets_unsigned = ['mc:qemuamd64-stretch:isar-image-base', + 'mc:qemuarm-stretch:isar-image-base'] + + is_cross_build = self.params.get('cross', default=0) + + self.perform_repro_test(targets_signed, is_cross_build, 1) + self.perform_repro_test(targets_unsigned, is_cross_build, 0) + +class CrossTest(CIBaseTest): + + """ + Start cross build for the defined set of configurations + + :avocado: tags=cross,fast,full + """ + def test_cross(self): + targets = ['mc:qemuarm-stretch:isar-image-base', + 'mc:qemuarm-buster:isar-image-base', + 'mc:qemuarm64-stretch:isar-image-base', + 'mc:qemuamd64-stretch:isar-image-base', + 'mc:de0-nano-soc-buster:isar-image-base', + 'mc:stm32mp15x-buster:isar-image-base', + 'mc:rpi-stretch:isar-image-base', + 'mc:qemuarm64-focal:isar-image-base', + 'mc:qemuarm-bullseye:isar-image-base'] + + self.perform_build_test(targets, 1, None) + +class SdkTest(CIBaseTest): + + """ + In addition test SDK creation + + :avocado: tags=sdk,fast,full + """ + def test_sdk(self): + self.perform_build_test('mc:qemuarm-stretch:isar-image-base', + 1, 'do_populate_sdk') + +class NoCrossTest(CIBaseTest): + + """ + Start non-cross build for the defined set of configurations + + :avocado: tags=nocross,full + """ + def test_nocross(self): + targets = ['mc:qemuarm-stretch:isar-image-base', + 'mc:qemuarm-buster:isar-image-base', + 'mc:qemuarm64-stretch:isar-image-base', + 'mc:qemui386-stretch:isar-image-base', + 'mc:qemui386-buster:isar-image-base', + 'mc:qemuamd64-stretch:isar-image-base', + 'mc:qemuamd64-buster:isar-image-base', + 'mc:qemuamd64-buster-tgz:isar-image-base', + 'mc:qemuamd64-buster:isar-initramfs', + 'mc:qemumipsel-stretch:isar-image-base', + 'mc:qemumipsel-buster:isar-image-base', + 'mc:nand-ubi-demo-buster:isar-image-ubi', + 'mc:rpi-stretch:isar-image-base', + 'mc:qemuamd64-focal:isar-image-base', + 'mc:qemuamd64-bullseye:isar-image-base', + 'mc:qemuarm-bullseye:isar-image-base', + 'mc:qemui386-bullseye:isar-image-base', + 'mc:qemumipsel-bullseye:isar-image-base'] + + self.perform_build_test(targets, 0, None) + +class RebuildTest(CIBaseTest): + + """ + Test image rebuild + + :avocado: tags=rebuild,fast,full + """ + def test_rebuild(self): + is_cross_build = self.params.get('cross', default=0) + + layerdir_core = self.getlayerdir('core') + + dpkgbase_file = layerdir_core + '/classes/dpkg-base.bbclass' + + self.backupfile(dpkgbase_file) + with open(dpkgbase_file, 'a') as file: + file.write('do_fetch_append() {\n\n}') + + try: + self.perform_build_test('mc:qemuamd64-stretch:isar-image-base', + is_cross_build, None) + finally: + self.restorefile(dpkgbase_file) + +class WicTest(CIBaseTest): + + """ + Test wic --exclude-path + + :avocado: tags=wic,fast,full + """ + def test_wic_exclude(self): + is_cross_build = self.params.get('cross', default=0) + + # TODO: remove hardcoded filenames + wks_path = '/scripts/lib/wic/canned-wks/sdimage-efi.wks' + wic_path = '/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img' + + self.perform_wic_test('mc:qemuamd64-stretch:isar-image-base', + is_cross_build, wks_path, wic_path) - if p1.returncode: - self.fail('Test failed') diff --git a/testsuite/build_test/cibase.py b/testsuite/build_test/cibase.py new file mode 100644 index 0000000..68debca --- /dev/null +++ b/testsuite/build_test/cibase.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 + +import os +import re +import tempfile + +from cibuilder import CIBuilder +from avocado.utils import process + +isar_root = os.path.dirname(__file__) + '/../..' + +class CIBaseTest(CIBuilder): + + def perform_build_test(self, targets, cross, bitbake_cmd): + build_dir = self.params.get('build_dir', default=isar_root + '/build') + quiet = self.params.get('quiet', default=None) + bitbake_args = '-v' + + if quiet: + bitbake_args = '' + + self.log.info('===================================================') + self.log.info('Running Isar build test for:') + self.log.info(targets) + self.log.info('Isar build folder is: ' + build_dir) + self.log.info('===================================================') + + self.init(build_dir) + self.confprepare(build_dir, 1, cross, 1) + + self.log.info('Starting build...') + + self.bitbake(build_dir, targets, bitbake_cmd, bitbake_args) + + def perform_repro_test(self, targets, cross, signed): + build_dir = self.params.get('build_dir', default=isar_root + '/build') + quiet = self.params.get('quiet', default=None) + bitbake_args = '-v' + + if quiet: + bitbake_args = '' + + self.log.info('===================================================') + self.log.info('Running repro Isar build test for:') + self.log.info(targets) + self.log.info('Isar build folder is: ' + build_dir) + self.log.info('===================================================') + + self.init(build_dir) + self.confprepare(build_dir, 1, cross, 1) + + gpg_pub_key = os.path.dirname(__file__) + '/../base-apt/test_pub.key' + gpg_priv_key = os.path.dirname(__file__) + '/../base-apt/test_priv.key' + + if signed: + with open(build_dir + '/conf/ci_build.conf', 'a') as file: + # Enable use of signed cached base repository + file.write('BASE_REPO_KEY="file://' + gpg_pub_key + '"\n') + + os.chdir(build_dir) + + os.environ['GNUPGHOME'] = tempfile.mkdtemp() + result = process.run('gpg --import %s %s' % (gpg_pub_key, gpg_priv_key)) + + if result.exit_status: + self.fail('GPG import failed') + + self.bitbake(build_dir, targets, None, bitbake_args) + + self.deletetmp(build_dir) + with open(build_dir + '/conf/ci_build.conf', 'a') as file: + file.write('ISAR_USE_CACHED_BASE_REPO = "1"\n') + file.write('BB_NO_NETWORK = "1"\n') + + self.bitbake(build_dir, targets, None, bitbake_args) + + # Cleanup and disable use of signed cached base repository + self.deletetmp(build_dir) + self.confcleanup(build_dir) + + def perform_wic_test(self, targets, cross, wks_path, wic_path): + build_dir = self.params.get('build_dir', default=isar_root + '/build') + quiet = self.params.get('quiet', default=None) + bitbake_args = '-v' + + if quiet: + bitbake_args = '' + + self.log.info('===================================================') + self.log.info('Running WIC exclude build test for:') + self.log.info(targets) + self.log.info('Isar build folder is: ' + build_dir) + self.log.info('===================================================') + + self.init(build_dir) + self.confprepare(build_dir, 1, cross, 1) + + layerdir_isar = self.getlayerdir('isar') + + wks_file = layerdir_isar + wks_path + wic_img = build_dir + wic_path + + if not os.path.isfile(wic_img): + self.fail('Build was not performed before: ' + wic_img + ' not exist') + + self.backupfile(wks_file) + self.backupmove(wic_img) + + with open(wks_file, 'r') as file: + lines = file.readlines() + with open(wks_file, 'w') as file: + for line in lines: + file.write(re.sub(r'part \/ ', 'part \/ --exclude-path usr ', line)) + + try: + self.bitbake(build_dir, targets, None, bitbake_args) + finally: + self.restorefile(wks_file) + + self.restorefile(wic_img) + diff --git a/testsuite/build_test/cibuilder.py b/testsuite/build_test/cibuilder.py new file mode 100644 index 0000000..85a5678 --- /dev/null +++ b/testsuite/build_test/cibuilder.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 + +import os +import shutil + +from avocado import Test +from avocado.utils import path +from avocado.utils import process + +isar_root = os.path.dirname(__file__) + '/../..' + +class CIBuilder(Test): + + def init(self, build_dir): + os.chdir(isar_root) + output = process.getoutput('/bin/bash -c "source isar-init-build-env \ + %s 2>&1 >/dev/null; env"' % build_dir) + env = dict((line.split("=", 1) for line in output.splitlines())) + os.environ.update(env) + + def confprepare(self, build_dir, compat_arch, cross, debsrc_cache): + with open(build_dir + '/conf/ci_build.conf', 'w') as file: + if compat_arch: + file.write('ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"\n') + file.write('ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"\n') + file.write('ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"\n') + if cross: + file.write('ISAR_CROSS_COMPILE = "1"\n') + if debsrc_cache: + file.write('BASE_REPO_FEATURES = "cache-deb-src"\n') + + with open(build_dir + '/conf/local.conf', 'r+') as file: + for line in file: + if 'include ci_build.conf' in line: + break + else: + file.write('\ninclude ci_build.conf') + + def confcleanup(self, build_dir): + open(build_dir + '/conf/ci_build.conf', 'w').close() + + def deletetmp(self, build_dir): + process.run('rm -rf ' + build_dir + '/tmp', sudo=True) + + def bitbake(self, build_dir, target, cmd, args): + os.chdir(build_dir) + cmdline = ['bitbake'] + if args: + cmdline.append(args) + if cmd: + cmdline.append('-c') + cmdline.append(cmd) + if isinstance(target, list): + cmdline.extend(target) + else: + cmdline.append(target) + + process.run(" ".join(cmdline)) + + def backupfile(self, path): + shutil.copy2(path, path + '.ci-backup') + + def backupmove(self, path): + shutil.move(path, path + '.ci-backup') + + def restorefile(self, path): + shutil.move(path + '.ci-backup', path) + + def getlayerdir(self, layer): + try: + path.find_command('bitbake') + except path.CmdNotFoundError: + build_dir = self.params.get('build_dir', default=isar_root + '/build') + self.init(build_dir) + output = process.getoutput('bitbake -e | grep "^LAYERDIR_.*="') + bitbake_env = dict((line.split("=", 1) for line in output.splitlines())) + + return bitbake_env['LAYERDIR_' + layer].strip('"') + diff --git a/testsuite/build_test/run.sh b/testsuite/build_test/run.sh deleted file mode 100755 index a8ea9cc..0000000 --- a/testsuite/build_test/run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -avocado run build_test.py --mux-yaml test:variant.yaml --mux-inject build_dir:$BUILDDIR diff --git a/testsuite/build_test/run_fast.sh b/testsuite/build_test/run_fast.sh new file mode 100755 index 0000000..4d1bf44 --- /dev/null +++ b/testsuite/build_test/run_fast.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +avocado run build_test.py -t fast -p quiet=1 -p cross=1 diff --git a/testsuite/build_test/run_full.sh b/testsuite/build_test/run_full.sh new file mode 100755 index 0000000..af5ec59 --- /dev/null +++ b/testsuite/build_test/run_full.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +avocado run build_test.py -t full -p quiet=1 diff --git a/testsuite/build_test/variant.yaml b/testsuite/build_test/variant.yaml deleted file mode 100644 index 9ddc634..0000000 --- a/testsuite/build_test/variant.yaml +++ /dev/null @@ -1,22 +0,0 @@ -variants: !mux - stretch-amd64: - distro: "stretch" - arch: "amd64" - stretch-i386: - distro: "stretch" - arch: "i386" - stretch-arm: - distro: "stretch" - arch: "arm" - stretch-arm64: - distro: "stretch" - arch: "arm64" - buster-amd64: - distro: "buster" - arch: "amd64" - buster-i386: - distro: "buster" - arch: "i386" - buster-arm: - distro: "buster" - arch: "arm"