From patchwork Fri Jun 21 15:08:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Mikanovich X-Patchwork-Id: 3625 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 Jun 2024 17:08:36 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lj1-f187.google.com (mail-lj1-f187.google.com [209.85.208.187]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 45LF8YG9006194 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 21 Jun 2024 17:08:35 +0200 Received: by mail-lj1-f187.google.com with SMTP id 38308e7fff4ca-2ec507c1b59sf6745021fa.3 for ; Fri, 21 Jun 2024 08:08:35 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1718982509; cv=pass; d=google.com; s=arc-20160816; b=gJu3pzd7EEkWlaYsQ81U0H0Crxn9OXlgQRQHO0e1+oV8UqrGtpItQXQlSg7Lvzh+xq X69GVtNfjm7j6EFENsNxxcBFv9db0pGLv/srkZ4biE/FKJsKdjPhY7atDG24W1686DJI guhPC/agzQlfOdi8owqVEEmv798UeU9b3kCUJ8HE1ZJuVGMfRLE7p30JLyDIlZuc5chX eUEtKCXeJFef4U0/dT4sc9YGNyEnniKCWjwSsYqOh+jCfx8uM5P5psk5oxkgmq5Jx6mZ AvkvIME/c7szGkybXo1qJamiSQmJx5Ap96q5PuCKs11hbpZpgJkZUiItiz2WZy32otkM ObJg== 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=mGkOGeTuHlVCue8ajvAaTuTY1puIfrMbISsMQf1cP0I=; fh=lyZGSrwmVyv8siVc2vUnU0xCXoRs42zYdJq7dsL6TMI=; b=BvRV9ktqAz9g/ulC+mNj7qf8gpByrW9OhIEPytQ9eBE7FUoQVwgKfItj5DENZyLmq/ vGxOuUtnFAakSH16FSJB8px7J3tV81scmH4f60O8JfOH+9XrLiPe3jMtKaQ5Yt3hY6D0 cgABWaRm/xJ+dIK8CzmUeyts2MGvJuOIp9f6CZ8acuK0d34rl9WF2GRDz6ddaNQUcGUS QdrBlFhlrvvasTKo/hXJnbAuO67l3qV2Vf0JP8NFfOsE13EHb7e8uhTQNH6IjozfJWpn rsN4LLcYe7duzzsu4ESbvgi86k5me51BnjC+AXW8ag9wwvbZGUWcrev16Uz0ac8hlGff zAbQ==; 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=1718982509; x=1719587309; 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=mGkOGeTuHlVCue8ajvAaTuTY1puIfrMbISsMQf1cP0I=; b=uGyFwRsCDFFdQJf1Rk7pTHC2Xh/R3qy9v9Ar99gf3V4R1I42ITRV9EWt7MpAEQUb9/ uUeQZRyXd92LGfEpidJlf155MGYh7QrAED5Vl8PvjvsIqRbsUf+RAKlN90SrfMbdAkDB LiOfoCQXaxtrqOYsTOt/J5KQd7NghNtqzD1Oxshpkr4YO15j9xFS/qz5fdIJsorx6pGM jfbXimcn80pEck1OaY8P7PJZvag4mZGmGPE/ISwp9fcOI1z3CuIf5WsTxR6byaYmrXw5 MRqJuf/moDNYQQ/i+rxQgcDy+Up9iOmT+15KKiesL07Fix/7L25CHL0yg0q4hTLQAIpI cQqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718982509; x=1719587309; 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=mGkOGeTuHlVCue8ajvAaTuTY1puIfrMbISsMQf1cP0I=; b=NrQp/RLzFoAubznUmlPornt+GrIVgVyQg8+szibSYD0hgNHwyxaLJKdJ61GOo05rg4 +9X5kq4UQ8FhEUMzmHUl6cEpZrJtxkLV1XYTEuaCV1gQEm3bhviOIRLLjRRBwTyOrSht kpjM3uEyN0VKuIf2wQJo8XbP1i+BrmXwjHKxnV3OzT4TT+NlVB3HfxP0DGrurIH7ishp zZWfJhDctClblo/uCFebdHyBJSth3NcO8mvYu+gaYKoT5RTJp7KNIkQLkCwV1WKe4Kzi bKqlWkorIfupT15DAEbVXluBXjA3RjNCl8ysI79vNETF0152L5HxU986qYO++7pmLNhC Zq9Q== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AJvYcCUT99RYxLr+bXe2+6/lr83BSdDfMJSuoSVpwEszVk8wNmyZyBgkikv4lXKvF/ICXrXLZc5s8Z/DsSgF844W0KTy8v3rcxE= X-Gm-Message-State: AOJu0Yyc4365iKA6cZ9MGT/cUESciMYaKAMFQbNUbRpqQ93UqCjlDPR8 qsnZJO3B1qy2zNqlLVeiwHcNKvMHnG7Ht8ZiVkqi2KMaLGiHWqFq X-Google-Smtp-Source: AGHT+IHT+Np8YIuZVexhDCaPipNdWbg07HAQR72mzVsjrgQPN6f/4tj2i5NS7m3wqz1925n2D4SEkA== X-Received: by 2002:a2e:b60f:0:b0:2ec:4f0c:36f9 with SMTP id 38308e7fff4ca-2ec4f0c38ccmr17297661fa.36.1718982508680; Fri, 21 Jun 2024 08:08:28 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:9306:0:b0:2ec:4470:4e2b with SMTP id 38308e7fff4ca-2ec44704f95ls10607981fa.1.-pod-prod-05-eu; Fri, 21 Jun 2024 08:08:27 -0700 (PDT) X-Received: by 2002:a2e:a548:0:b0:2ec:40ab:694b with SMTP id 38308e7fff4ca-2ec40ab6a03mr70861591fa.47.1718982506667; Fri, 21 Jun 2024 08:08:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1718982506; cv=none; d=google.com; s=arc-20160816; b=LszWDLujei/x9COMGu+OBzgd2WPQEroGbKQynuSXo0H+SeNn/pmcZ16cQuXiUrBj5b 9LMOaiQQpc8Fycn3f8JcjAx+rW8bUvIcI0Cj2sDR0z4bZmtKysdBDRqLOTYlVN5588i6 JainqCrD56lvnvHAyMRH3tQ3XLDR5h/2ApkHN8tDvL3zywYJ/M0y+8Y9zXudtUXsrZtl G+aqvIhd3FaxjheeQK9U4ztaCfTn+Vnno2AKIFbw/83DhGxoqfFR/7O+3ls6zbEAjmDB yk4/cnoFkI9uqVdiyGhwisDbxRq+ii3zkohzp5clcdueEcqnBvc7IkdixQtuVcEu5G6D Ma/A== 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=bevBQJalmm++54d3Hasad1tvftGzZGzU/bCvhO1+YUU=; fh=z3rP6Lb9kCHMNktWueEpSrG6TTw5jLe7zgHgRhRlVvY=; b=Y/5opPc5P905kL5VG88yUCWCM6Lag6ydx4gVyMIzKaiDN9WRXK21ETrHWvfZVIHHky qn3WaHL/s7/aYakUyheU8IVIj7WPnT/Vu5EjQ2CLk2KZlEUVvGBaSUwmIS0IBlGl0eys 9G4pTfXz6/YLBKSDmWls3V4cCNCHlGFeS+N6swTzl9cJ/T9X7C986y1czmHKEnIyG4hb r3lkBS+XLkCWv8btWX2S/kYpJ/rT2vwngMdcwhB6v6rYt921VSootbb1aNSzCMJ1MCuT Wz41jqteyQ0BLJdMrIPkwkrWuHg7BB1W7uecr/Wmv6hZU4CFWBCc7eOOAZjcGyZhXWEc qzkQ==; 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-42478c9bbdesi1253275e9.1.2024.06.21.08.08.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 21 Jun 2024 08:08:26 -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 user-B660.promwad.corp ([159.148.83.114]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 45LF8ObC006158 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 Jun 2024 17:08:25 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Ilia Skochilov , Anton Mikanovich Subject: [PATCH v3 1/5] start_vm: Switch to python version Date: Fri, 21 Jun 2024 18:08:10 +0300 Message-Id: <20240621150814.189288-2-amikan@ilbers.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240621150814.189288-1-amikan@ilbers.de> References: <20240621150814.189288-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_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?= From: Ilia Skochilov Remove the shell version of start_vm. Use the python version of start_vm for both testsuite and command line. Signed-off-by: Ilia Skochilov Signed-off-by: Anton Mikanovich --- scripts/start_vm | 161 +++-------------------------------------- testsuite/README.md | 4 +- testsuite/cibuilder.py | 2 +- testsuite/start_vm.py | 7 +- 4 files changed, 19 insertions(+), 155 deletions(-) diff --git a/scripts/start_vm b/scripts/start_vm index 42899df9..cc80bce5 100755 --- a/scripts/start_vm +++ b/scripts/start_vm @@ -1,156 +1,17 @@ -#!/bin/sh +#!/usr/bin/env python3 # -# This software is a part of ISAR. -# Copyright (C) 2015-2017 ilbers GmbH +# Helper script to start QEMU with Isar image +# Copyright (c) 2024, ilbers GmbH -set -e +import os +import sys -ES_OK=0 -ES_BUG=3 +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'testsuite')) -# Convert bitbake assignments to shell ones -# a = b a=b -# a ?= b a=b -# TODO: Use bitbake to parse vars correctly (overriding in local.conf, etc.) -bb2sh() { - sed 's/[[:space:]]*?*=[[:space:]]*/=/' -} +from start_vm import parse_args, start_qemu -start_qemu() { - root=`echo $QEMU_DISK_ARGS \ - | sed 's,##ROOTFS_IMAGE##,'$IMAGE_DIR/$ROOTFS_IMAGE','` - [ -n "$KARGS$EXTRA_KARGS" ] && OPT_KERNEL_ARGS="-append $KARGS$EXTRA_KARGS" - local had_x - echo $- | grep -q x && had_x=1 || had_x=0 - [ $had_x -eq 0 ] && set -x - qemu-system-$QEMU_ARCH \ - -m 1024M \ - -M $QEMU_MACHINE \ - $QCPU \ - -nographic \ - $EXTRA_ARGS \ - $OPT_KERNEL_ARGS \ - $root - [ $had_x -eq 0 ] && set +x -} +if __name__ == "__main__": + args = parse_args() -show_help() { - echo "This script runs ISAR image in QEMU emulator." - echo - echo "Usage:" - echo " $0 [params] [BUILD_DIR]" - echo "BUILD_DIR is your ISAR build folder. If not set, current folder" - echo "is used." - echo - echo "Parameters:" - echo " -a, --arch ARCH set isar machine architecture." - echo " Supported: arm, i386, amd64, arm64, mipsel, riscv64." - echo " -b, --build BUILD set path to build directory." - echo " -d, --distro DISTRO set isar Debian distribution." - echo " Supported: buster, bullseye, bookworm" - echo " -o, --out FILE Route QEMU console output to" - echo " specified file." - echo " -p, --pid FILE Store QEMU pid to file." - echo " -s, --secureboot Enable secureboot with default MS keys." - echo " --help display this message and exit." - echo - echo "Exit status:" - echo " 0 if OK," - echo " 3 if invalid parameters are passed." -} - -# Set default values, that can be overwritten from command line -ARCH=arm -DISTRO=bookworm -BUILD_DIR=$PWD - -# Parse command line to get user configuration -while [ $# -gt 0 ] -do - key="$1" - - case $key in - -h|--help) - show_help - exit 0 - ;; - -a|--arch) - ARCH=$2 - shift - ;; - -b|--build) - BUILD_DIR=$2 - shift - ;; - -d|--distro) - DISTRO=$2 - shift - ;; - -o|--out) - EXTRA_ARGS="$EXTRA_ARGS -serial file:$2" - shift - ;; - -p|--pid) - EXTRA_ARGS="$EXTRA_ARGS -pidfile $2" - shift - ;; - -s|--secureboot) - OVMF_VARS_ORIG="/usr/share/OVMF/OVMF_VARS_4M.ms.fd" - OVMF_VARS="$(basename "${OVMF_VARS_ORIG}")" - cp "${OVMF_VARS_ORIG}" "${OVMF_VARS}" - EXTRA_ARGS="$EXTRA_ARGS -drive if=pflash,format=raw,unit=1,file=${OVMF_VARS}" - ;; - *) - echo "error: invalid parameter '$key', please try '--help' to get list of supported parameters" - exit $ES_BUG - ;; - esac - - shift -done - -eval $(bitbake -e mc:qemu$ARCH-$DISTRO:isar-image-base | grep "^DEPLOY_DIR_IMAGE=") -readonly IMAGE_DIR=$DEPLOY_DIR_IMAGE - -readonly ISARROOT="$(dirname "$0")"/.. - -readonly MACHINE_CONF=$ISARROOT/meta-isar/conf/machine/qemu$ARCH.conf -eval "$(egrep 'MACHINE_SERIAL|QEMU_' $MACHINE_CONF |bb2sh)" - -eval $(bitbake -e mc:qemu$ARCH-$DISTRO:isar-image-base | grep "\(^IMAGE_FSTYPES=\|^IMAGE_FULLNAME=\)") -# Take first image type for VM if there are several defined -IMAGE_FSTYPES=$(echo "$IMAGE_FSTYPES" | awk '{print $1}') -case "$IMAGE_FSTYPES" in - ext4) - readonly ROOTFS_IMAGE=$IMAGE_FULLNAME.ext4 - - eval $(bitbake -e mc:qemu$ARCH-$DISTRO:isar-image-base | grep "^KERNEL_IMAGE=") - eval $(bitbake -e mc:qemu$ARCH-$DISTRO:isar-image-base | grep "^INITRD_DEPLOY_FILE=") - QKERNEL=$IMAGE_DIR/${KERNEL_IMAGE} - QINITRD=/dev/null - [ -n "$INITRD_DEPLOY_FILE" ] && QINITRD=$IMAGE_DIR/${INITRD_DEPLOY_FILE} - if [ "$ARCH" = "riscv64" ]; then - EXTRA_ARGS="$EXTRA_ARGS -device loader,file=$QKERNEL,addr=0x80200000" - QKERNEL="/usr/lib/riscv64-linux-gnu/opensbi/qemu/virt/fw_jump.elf" - fi - EXTRA_ARGS="$EXTRA_ARGS \ - -kernel $QKERNEL \ - -initrd $QINITRD" - KARGS="console=$MACHINE_SERIAL root=/dev/$QEMU_ROOTFS_DEV rw $QEMU_KARGS" - ;; - wic) - readonly ROOTFS_IMAGE=$IMAGE_FULLNAME.wic - EXTRA_ARGS="$EXTRA_ARGS -snapshot" - ;; - *) - echo "IMAGE_FSTYPES \"$IMAGE_FSTYPES\" not supported" - exit 1 - ;; -esac - -QCPU= -[ -n "$QEMU_CPU" ] && QCPU="-cpu $QEMU_CPU" - -start_qemu - -exit $ES_OK + start_qemu(args.arch, args.build, args.distro, args.image, args.out, + args.pid, args.pcbios) diff --git a/testsuite/README.md b/testsuite/README.md index 913767fc..cfcfb1bf 100644 --- a/testsuite/README.md +++ b/testsuite/README.md @@ -57,11 +57,11 @@ $ avocado run ../testsuite/citest.py -t startvm,full ## Manual running -There is a tool `start_vm.py` which is the replacement for the bash script in +There is a tool start_vm which is the replacement for the bash script in `isar/scripts` directory. It can be used to run image previously built: ``` -./start_vm.py -a amd64 -b /build -d bullseye -i isar-image-base +start_vm -a amd64 -b /build -d bullseye -i isar-image-base ``` # Tests for running commands under qemu images diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py index 227d0a96..12c48180 100755 --- a/testsuite/cibuilder.py +++ b/testsuite/cibuilder.py @@ -529,7 +529,7 @@ BBPATH .= ":${LAYERDIR}"\ 'DISTRO', \ target=multiconfig) - # only the first type will be tested in start_vm.py + # only the first type will be tested in start_vm if image_fstypes.split()[0] == 'wic': if wks_file: # ubuntu is less verbose so we do not see the message diff --git a/testsuite/start_vm.py b/testsuite/start_vm.py index ef0dfbcb..2c07b816 100755 --- a/testsuite/start_vm.py +++ b/testsuite/start_vm.py @@ -98,7 +98,7 @@ def start_qemu(arch, build, distro, image, out, pid, enforce_pcbios): print(cmdline) p1 = subprocess.call('exec ' + ' '.join(cmdline), shell=True) -if __name__ == "__main__": +def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('-a', '--arch', choices=['arm', 'arm64', 'amd64', 'i386', 'mipsel'], help='set isar machine architecture.', default='arm') parser.add_argument('-b', '--build', help='set path to build directory.', default=os.getcwd()) @@ -107,6 +107,9 @@ if __name__ == "__main__": parser.add_argument('-o', '--out', help='Route QEMU console output to specified file.') parser.add_argument('-p', '--pid', help='Store QEMU pid to specified file.') parser.add_argument('--pcbios', action="store_true", help='remove any bios options to enforce use of pc bios') - args = parser.parse_args() + return parser.parse_args() + +if __name__ == "__main__": + args = parse_args() start_qemu(args.arch, args.build, args.distro, args.image, args.out, args.pid, args.pcbios)