From patchwork Fri Jun 14 11:23:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Mikanovich X-Patchwork-Id: 3602 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Fri, 14 Jun 2024 13:23:41 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lf1-f56.google.com (mail-lf1-f56.google.com [209.85.167.56]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 45EBNdXE031668 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 14 Jun 2024 13:23:39 +0200 Received: by mail-lf1-f56.google.com with SMTP id 2adb3069b0e04-52bb096e9d8sf1347061e87.2 for ; Fri, 14 Jun 2024 04:23:39 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1718364214; cv=pass; d=google.com; s=arc-20160816; b=Njy9xXLDhw7yBo8lBXNZhr+9Fg0YH9T+SGM4ZuFfKG6sEUYs3R/39r9lfZ+Em/iS4W BHyAYxJMHlzHaz5SxmBwuwVY3398hQHyTLG4v5vVq4a8ofLmG93orEeSox0fzTUsAReH HdZTwbO8JeahiuxJ5ANf1nc+ZHTWbJ9G/15tGF64omr3FyrEq7lSFihYaGhNxBnFDi1q WvOwMAgSKUYwHXMkEjAOeLfY/Tj4/shT2v9G5BG+Zqpwz8IgItbeU3zbKvm6JcyIgy1R 5heJOtljj8eaA9CaFef72RE9meJEXcvG2UIF/LfmM2nls6mxHPNCFUPVanjkLSYb+Exd SdYg== 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=qrOv3DJ3/wiZuNrHv0szz3W6uwOjf9QpD1JuTzUCMrA=; fh=VxKFsH9mXOsmFsloSR/ovXd0dCxkrpOEdUhvfdHxYqo=; b=Gnh7rJmwCnP2AdoRV8ZAEKeepII/wa19sitE1NtMWEiQ2IzMOlR6XR+WHNTtKmvcSg iHb+VcSFJYzOGEdTnT/cKMjJr1H5brWn7/ucMqihmWYP1XDpogf80kEMe6ZGHOW5guJN klBPfR3eTU2Wi5Pheq+Q3N7/X/pzkevCI9hM6M6ciMi1NeLFE6cSZqnZznPDJuTxDNHj FlLGWVOyaCiiJFA9KCm2OJiWIL1A/g+jq18AWLZTvXyxny/J0tTFFdXvrDiBG4s8ffE5 CMY0RUwgaeNTuLyYMRxaRua2/rE04HEhIoIEcz4S0VWL1BCfhz1qVl31iq7Kuf3lVKt7 xVzg==; 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=1718364214; x=1718969014; 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=qrOv3DJ3/wiZuNrHv0szz3W6uwOjf9QpD1JuTzUCMrA=; b=hbVRTlAl3fBPfavLzVlS8RWaYS5YK8oHq5MfjMfaSJX3QReodab2m8pFdfQXTpO+9T Trgr6GuBJwVTtvD2lcHwAH9hulnJblVmfBIo+63rMVnPLz4cKdkkMWgicwxakSdm/98p XKIif6+7ldBr1P7HgPjomEufxZ3IHlU6g4PNFIVzPVp/6soiu1bMzQNmBSCxprQpC/Fo n2qbX/kPuGeujq5twS/CrT+WmcpDMuk1iqBPk562MyI8BjE1NrCri+5Azj+VP5ipuZhc K+jkkg4Zr13Hmgcb3Q/oHRb+GbzogO/52xIz4M4LUVf/IuYiVXz8xLMKTzvn72BOVB4K pKGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718364214; x=1718969014; 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=qrOv3DJ3/wiZuNrHv0szz3W6uwOjf9QpD1JuTzUCMrA=; b=jR2baGKiYBypVQ3ybuYr2+r0vNMZzV515r5ol9OKt1rQbcXfX1xenUK0kjj0rd8Z6v w7iYXltrlu5Z0pOeGvVLoAO9SgmII7h1gnC5/7Y+c6PoaPQJrA1NCw7grSe9E7zgO8Hx gr3MEjhMfE0qP7b6PuxVKtKejoAbDZx+CJHcG5YopoNxEDDWpkqd+Eqt0kBquc3cwR7l XpLcJXhRYsTFiMchSlnMfhqMPxwaj2TDauzKuVFfunZgncL0N90w0cLBUOG4GlwPtozM JXM7HVwcHGtgRSfsaRoOUtJR7atGnEsjy/vGms603B/WECW3TY3jjT2zbcKgWbp145Jj ZUVA== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AJvYcCVeoXcVIa1dSxoOzEdotyieGm355WNLYTxYW11pdGY692Otz6G8fDG2uC8edgnkcrvU4pkoMCDFSvkA/3ldPzjCmcsKjSA= X-Gm-Message-State: AOJu0Ywu8dMt4phIZy/Hg1rQfTXJbMNMOK/9Ic8gexVJIjNfikSQx0nD K4v6WMw2X10VUfdFsNGi8tlNSTH434SEaW7DgPzZn50icd7jxXh0 X-Google-Smtp-Source: AGHT+IHEZXgQtTphvObSvWFRPrTNk91nDIWZrUt65r/80Tjmo5fJSTwZIFxbKR6oPkQ0lCnmDQpWHg== X-Received: by 2002:a05:6512:34c4:b0:52c:86d6:e8d7 with SMTP id 2adb3069b0e04-52ca6e55da5mr1531871e87.13.1718364212648; Fri, 14 Jun 2024 04:23:32 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:600c:4346:b0:422:cb6c:76b2 with SMTP id 5b1f17b1804b1-422cb6c7806ls7395645e9.2.-pod-prod-04-eu; Fri, 14 Jun 2024 04:23:31 -0700 (PDT) X-Received: by 2002:a05:600c:3107:b0:423:499:a1ce with SMTP id 5b1f17b1804b1-42304d934c4mr23412525e9.32.1718364210661; Fri, 14 Jun 2024 04:23:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1718364210; cv=none; d=google.com; s=arc-20160816; b=ipBJUT+yIIG+/B/8SbVuC5V3261XmSGlR/3rOqGnAtK39qyPcXXYaWUeuUBxxmNjtF AFUz5lGT9jrnI4FLWfmtplmEwWGdHg1K9n+mDi+hVtPon0wtIjzF+8YbLTkZOvVvRPck drcKRDN9wTPTZUGYadUUHNzfqde0PEULSQfsyJoAvz5mpe9CiTv+CrsfzIeE7AfK5QMh mQbYukmw8/YpvOx8M3DYrITzT8yMkPhnicpCMHtCqn7bvuw+oc2IpcKp2k7ujWXB+hp6 PUdGSlgwhyN1hYESHuxX/q8c+4bYOA5Db7dtN+irHCeoBNN7wNQkcJjUAaaHPn0gKCzB amPw== 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=hskK4u7n5ErVzXVZBFwz9m5DLyzu2MEHv6uQkHx6L7OBJz6Oca6ezCtEiptsS2NvS/ PSutLgv4V5Ti1nm011Qpba0bgyHZqUYEerHZXO3KFYXuowHwvSLQco5a1tgsXGP8GuQB L8Y/uNMLIm1atbnr391nFupmxgU3H9xzn8v4d9RneLjowUfh76YWcU54Fe0KEYk8cu1N 1gMMHBihxu2meC0sNhXzvydO92obbHibzoXhCkIvqWs5BZSF6QQ+v7XACHcGwkyTMXe4 24WEIQUhC9iBL/ZLrnpdKNkqvt7+n21LhiaZZe3S+Daq50amFpffZDnxRdzxh3JiMQWl U0nQ==; 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-422869d533esi1326005e9.0.2024.06.14.04.23.30 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 14 Jun 2024 04:23:30 -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 (r154-240-38-77-broadband.btv.lv [77.38.240.154] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 45EBNRq2031631 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 14 Jun 2024 13:23:29 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Ilia Skochilov , Anton Mikanovich Subject: [PATCH 1/5] start_vm: Switch to python version Date: Fri, 14 Jun 2024 14:23:16 +0300 Message-Id: <20240614112320.122428-2-amikan@ilbers.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240614112320.122428-1-amikan@ilbers.de> References: <20240614112320.122428-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)