From patchwork Mon Jun 17 15:08:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Mikanovich X-Patchwork-Id: 3615 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 17 Jun 2024 17:09:21 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lj1-f184.google.com (mail-lj1-f184.google.com [209.85.208.184]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 45HF9K1K019119 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 17 Jun 2024 17:09:20 +0200 Received: by mail-lj1-f184.google.com with SMTP id 38308e7fff4ca-2ec1cb56679sf20862851fa.1 for ; Mon, 17 Jun 2024 08:09:20 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1718636955; cv=pass; d=google.com; s=arc-20160816; b=xkQZm7zBYJI6jbO5Qg1y1TNF318jueMR6U2PvlbtTG7fKjFS4TAVQw9qe06MpgAQTU J1I3MnNt6wVXhS+SGK6AALaE+QcIvZnkrlWt6QvaZ5H3yy2pYTotplaeVspAaoTkJgdj WxfE3cVqNdwgLvNSngW3nUCGWW8BihqCnvggf269bZFW9Bl9+ZVbuaXd5oShw9HGJ+6C WJ7Mz3ovPoJJ/I2aNN21nRBDaiPvHLW0PiBgjKetXL0rqWabi2dOcCGV+qDCJ36PdGm/ Rb/+Phe+2EROWeU8gsqGqqHj838mb2aGKNlNKZqGPfseRsj70bn7VV4n0kuN6QTsaFaW /w2A== 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=UBhANvT2bQojsfZqFX3tOTpOMwHW0ufxLEWGKIlJWG8=; fh=Cs635jErJVxqVwpxI5y2fzKvVswY6hSPxl5HWieYb8I=; b=ZbOF9kYEyHDO7I0EtHZltmmZde2X8rhvFDJPqjgNbtOGBShhS/nS7bEgfLEJknFLfs MNv79RtS+fRkXXk9JjvPnkzLcmXFxAPWar5yzFWAMBx7MmKbNmiq12Fl79keOBowDLwe op16PL4yyAv3yEjk0X3q8kw2q5YAXP1KLvXjvBEi2M6dEOkkTD+kC6zyNs5FB7Tpvk8x 9DN8uEBkVkpvxyOVPPkX1pkdDr1DK5bYwU4VlVg2YWF2UFyVxnh4XpLm+jwXHlgdUY6o h7fz9aRw37XA3k0WhQwyNFRE48lZYcqhYoE7Tt/O8mZn1Q6dzct8IUusiLgOFmR+5Uo5 vcQg==; 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=1718636955; x=1719241755; 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=UBhANvT2bQojsfZqFX3tOTpOMwHW0ufxLEWGKIlJWG8=; b=gjPuTMrgzVGndhS4R3CLFrB0wEvGUIDEIC9xugQqMUmEnHvL8Vd+qZ/LbzVOhpNb8l u1JZlIjkYhAbXErHRepl17S7jD1q/cvUNKnDzpmAAr/Wr+qRImzi2D51Kf8ed30LgDUW gqI8rRdNOKm5juvjey49mE7AvbCe8KD0E/NLQbi0g1wRY+fwIoLRbsNlxABvVuA4Nb00 c4QYtaLSEeRPnNN2dcMfGO1/9gc4Vt2ifLN4eFAQzjA9A2nqH2w3lm1J32EWxPNxApBq BKF/NkVy9LGU4uYYoTlu2W3CrWQOKrj/MmNnvGcUYojTdoFyN+jGvFJ6mbA8ucOvb/mA VJbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718636955; x=1719241755; 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=UBhANvT2bQojsfZqFX3tOTpOMwHW0ufxLEWGKIlJWG8=; b=np/l/Zcl9aEpPr60wTpGZAZn/cG/KxbSlqAxQj7PvH4sShDggZnw3N8OlrfdvpQHAp MznXMMEbvlT3NMUXUnWxZvBl6n6XToVPwGSESRhAta8KF0K1XzkEQqIvzdhrD5N0PqvB imj0myr95CXb6EC0doVsN6Nwt8fd5drk47VvhsMsLdSg5AEN/M6dxsX7cG+N8jewYX9G 7LVivcEea0za7oDeOHidq8CtVwRx89D2lCvGknG9xhXJD/glKoHXPLw7KQ2mzQAOBliE T9bXd0c1lsIBwIx7z6Po+PwzUy15VUo1IkJqUh0dB5lBxt24N8fkAyEvYsqfbdYIjj4F xCuQ== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AJvYcCWX6GdBhVWoa/Qw6GUxT+pIMDThwyLhR3oYmfFRlmcqqHugbmGBZZqOSkWLbTZaUT9e0h43jTzMWRxG5K7uy9kqnd+QHXI= X-Gm-Message-State: AOJu0YzOKDefvcaVhVqwIz0JGljENp7Ok/9OCCVMH8OjCY3ae+JntrRx 5FJEiehBzeAT47O8l0+zRFNaBi/fcqYFnGPEEi/G1C1oSm5t3G8M X-Google-Smtp-Source: AGHT+IHmyRT9y+gjO3h42KvaqCsHWDAOXdL2704+qVtgyRAk9UuoVPAWVx1A+L/b+hRUakZJRS9HPg== X-Received: by 2002:a2e:3505:0:b0:2ea:ea79:4fa1 with SMTP id 38308e7fff4ca-2ec0e6002ecmr63395021fa.37.1718636954643; Mon, 17 Jun 2024 08:09:14 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:a608:0:b0:2ea:b32c:c86e with SMTP id 38308e7fff4ca-2ec02874af0ls7754411fa.0.-pod-prod-04-eu; Mon, 17 Jun 2024 08:09:12 -0700 (PDT) X-Received: by 2002:a2e:988c:0:b0:2eb:f472:e7d3 with SMTP id 38308e7fff4ca-2ec0e5b5f05mr61976771fa.6.1718636952466; Mon, 17 Jun 2024 08:09:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1718636952; cv=none; d=google.com; s=arc-20160816; b=nrAJZPEt+r+NBIqnBeSgvH77HDt4QGQ7S/6cVUdWxNzIuJLRbnfr3Y1q6FD7ZXP5FG JCDXAKrI7wlPh5DVltTQ70/J+coBOj7mO5FYiIJEiKmwxbVwH59yC/sRcWJUs+8nL1kk Agc28JscKmxHB+S+5z9F3hEKw3NM6I4Qyr96qm1GzBVgiYo5JBG4ggXke16y1jqLVAiE jW0bMgAQIlKBstZFArR0dJNeOlWoXrh98eKM4gqOTgTHvcBJZd2+Uh29o/bNCMwOhLAA 8s3cbWVS1gMlTKPAhfnv1g3Lq5muJ9lMXj3B1zrU52NfEt5mK58Hagr8HFu0OEcHGuZf 25Ug== 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=hpcmsfJ65TdAte7q8iIInuvVOvL5IlpTUkuYrK21ziY=; fh=z3rP6Lb9kCHMNktWueEpSrG6TTw5jLe7zgHgRhRlVvY=; b=fSsGZ+d87rJt/sfMy3lAeiNCpRKf8fM7OBxokTMzvHJv4NSn33UMo/2mt9gsKoN7qv eJue9Qsdu+IGk0DuKMraMsyrPyNk2gz4XejURMiar+AxlcKHNxbMhxeli5GCRhA1Dla1 GFRZaujAz3Pa2p4t/rOwwkbbs2fDrnv7L+k9NuuRX7TD4Zb953pAJLlY2qNTfhe4+tiq 6DZWgW/aMCsxI0+1H0xx5fyDaVx4xp7zcK83219WEdaGFm2KLDvzNBcb3sYO2qOLfRx7 tsyKQ9bxkZmFpdzx77CJKWmFZ1IraalbNExYSdtf/ig2zRYsWhFdmUcX44hs09/irFS3 PkFQ==; 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-42284b090dfsi8700625e9.0.2024.06.17.08.09.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 Jun 2024 08:09: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 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 45HF9AkM019081 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 17 Jun 2024 17:09:11 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Ilia Skochilov , Anton Mikanovich Subject: [PATCH v2 1/5] start_vm: Switch to python version Date: Mon, 17 Jun 2024 18:08:57 +0300 Message-Id: <20240617150901.55853-2-amikan@ilbers.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240617150901.55853-1-amikan@ilbers.de> References: <20240617150901.55853-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, 18 insertions(+), 156 deletions(-) diff --git a/scripts/start_vm b/scripts/start_vm index 42899df9..b081e973 100755 --- a/scripts/start_vm +++ b/scripts/start_vm @@ -1,156 +1,15 @@ -#!/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 sys, os +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'testsuite')) -ES_OK=0 -ES_BUG=3 +from start_vm import parse_args, start_qemu -# 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:]]*/=/' -} +if __name__ == "__main__": + args = parse_args() -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 -} - -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)