From patchwork Tue Sep 19 07:27:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815297 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxDxt0JHpz9sDB for ; Tue, 19 Sep 2017 17:28:33 +1000 (AEST) Received: from localhost ([::1]:40436 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxL-0001gj-Qg for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:28:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38274) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCwa-0001fT-FB for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCwZ-0007lj-Id for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43458) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCwZ-0007lR-DK for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:43 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6DB5381DE7; Tue, 19 Sep 2017 07:27:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 6DB5381DE7 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id 265835D6A4; Tue, 19 Sep 2017 07:27:34 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:07 +0800 Message-Id: <20170919072719.11815-2-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 19 Sep 2017 07:27:42 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 01/13] gitignore: Ignore vm test images X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Fam Zheng --- .gitignore | 1 + tests/.gitignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index cf65316863..40acfcb9e2 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,7 @@ /vscclient /vhost-user-scsi /fsdev/virtfs-proxy-helper +*.tmp *.[1-9] *.a *.aux diff --git a/tests/.gitignore b/tests/.gitignore index fed0189a5a..cf6d99c91e 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -95,3 +95,4 @@ test-filter-mirror test-filter-redirector *-test qapi-schema/*.test.* +vm/*.img From patchwork Tue Sep 19 07:27:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815298 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxDy23s4wz9sBZ for ; Tue, 19 Sep 2017 17:28:42 +1000 (AEST) Received: from localhost ([::1]:40437 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxU-0001lE-7h for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:28:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38315) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCwi-0001jr-7M for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCwf-0007nH-Ho for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43158) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCwf-0007n2-BB for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:49 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 62C8A356F6; Tue, 19 Sep 2017 07:27:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 62C8A356F6 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0C13D5D6A4; Tue, 19 Sep 2017 07:27:42 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:08 +0800 Message-Id: <20170919072719.11815-3-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 19 Sep 2017 07:27:48 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 02/13] qemu.py: Add "wait()" method X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Fam Zheng Reviewed-by: Stefan Hajnoczi Reviewed-by: Alex Bennée --- scripts/qemu.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/qemu.py b/scripts/qemu.py index 5e02dd8e78..2b5c2accb5 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -215,6 +215,13 @@ class QEMUMachine(object): LOG.debug('Output: %r', self._iolog) raise + def wait(self): + '''Wait for the VM to power off''' + self._popen.wait() + self._qmp.close() + self._load_io_log() + self._post_shutdown() + def shutdown(self): '''Terminate the VM and clean up''' if self.is_running(): From patchwork Tue Sep 19 07:27:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815299 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxDy70RPNz9sBZ for ; Tue, 19 Sep 2017 17:28:47 +1000 (AEST) Received: from localhost ([::1]:40438 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxZ-0001os-2N for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:28:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38344) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCwm-0001nL-Fp for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCwl-0007pk-Jo for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45086) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCwl-0007pb-E6 for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:27:55 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 79CF2883BF; Tue, 19 Sep 2017 07:27:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 79CF2883BF Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id F14AF5D6A4; Tue, 19 Sep 2017 07:27:48 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:09 +0800 Message-Id: <20170919072719.11815-4-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 19 Sep 2017 07:27:54 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 03/13] scripts: Add archive-source.sh X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Fam Zheng Reviewed-by: Alex Bennée Reviewed-by: Eric Blake --- scripts/archive-source.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 scripts/archive-source.sh diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh new file mode 100755 index 0000000000..e155d980ee --- /dev/null +++ b/scripts/archive-source.sh @@ -0,0 +1,46 @@ +#!/bin/sh +# +# Author: Fam Zheng +# +# Archive source tree, including submodules. This is created for test code to +# export the source files, in order to be built in a different enviornment, +# such as in a docker instance or VM. +# +# This code is licensed under the GPL version 2 or later. See +# the COPYING file in the top-level directory. + +error() { + echo "$@" >&2 + exit 1 +} + +if test $# -lt 1; then + error "Usage: $0 " +fi + +submodules=$(git submodule foreach --recursive --quiet 'echo $name') + +if test $? -ne 0; then + error "git submodule command failed" +fi + +if test -n "$submodules"; then + { + git ls-files || error "git ls-files failed" + for sm in $submodules; do + (cd $sm; git ls-files) | sed "s:^:$sm/:" + if test ${PIPESTATUS[0]} -ne 0 -o $? -ne 0; then + error "git ls-files in submodule $sm failed" + fi + done + } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) > "$1".list +else + git ls-files > "$1".list +fi + +if test $? -ne 0; then + error "failed to generate list file" +fi + +tar -cf "$1" -T "$1".list || error "failed to create tar file" +rm "$1".list From patchwork Tue Sep 19 07:27:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815303 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF1L0b8lz9sBZ for ; Tue, 19 Sep 2017 17:31:34 +1000 (AEST) Received: from localhost ([::1]:40452 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD0E-0004Cy-6k for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:31:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38397) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCws-0001tH-TN for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCwq-0007rM-6x for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:02 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35710) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCwp-0007qw-VH for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:00 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0C8C0C057FA8; Tue, 19 Sep 2017 07:27:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0C8C0C057FA8 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id 04E005D6A4; Tue, 19 Sep 2017 07:27:54 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:10 +0800 Message-Id: <20170919072719.11815-5-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 19 Sep 2017 07:27:59 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 04/13] tests: Add a test key pair X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This will be used by setup test user ssh. Signed-off-by: Fam Zheng Reviewed-by: Alex Bennée Reviewed-by: Eric Blake --- tests/keys/README | 6 ++++++ tests/keys/id_rsa | 27 +++++++++++++++++++++++++++ tests/keys/id_rsa.pub | 1 + 3 files changed, 34 insertions(+) create mode 100644 tests/keys/README create mode 100644 tests/keys/id_rsa create mode 100644 tests/keys/id_rsa.pub diff --git a/tests/keys/README b/tests/keys/README new file mode 100644 index 0000000000..f381ac0698 --- /dev/null +++ b/tests/keys/README @@ -0,0 +1,6 @@ +This folder contains a well-known key pair used in QEMU tests. + +Some guests require the key to exist prior to provisioning the guest; also, +reusing a pre-built key avoids consuming entropy every time the testsuite is +run. Because the private key is well-known, care must be taken to use the key +ONLY in situations that cannot be compromised by external network clients. diff --git a/tests/keys/id_rsa b/tests/keys/id_rsa new file mode 100644 index 0000000000..2933eac3db --- /dev/null +++ b/tests/keys/id_rsa @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAopAuOlmLV6LVHdFBj8/eeOwI9CqguIJPp7eAQSZvOiB4Ag/R +coEhl/RBbrV5Yc/SmSD4PTpJO/iM10RwliNjDb4a3I8q3sykRJu9c9PI/YsH8WN9 ++NH2NjKPtJIcKTu287IM5JYxyB6nDoOzILbTyJ1TDR/xH6qYEfBAyiblggdjcvhA +RTf93QIn39F/xLypXvT1K2O9BJEsnJ8lEUvB2UXhKo/JTfSeZF8wPBeowaP9EONk +7b+nuJOWHGg68Ji6wVi62tjwl2Szch6lxIhZBpnV7QNRKMfYHP6eIyF4pusazzZq +Telsq6xI2ghecWLzb/MF5A+rklsGx2FNuJSAJwIDAQABAoIBAHHi4o/8VZNivz0x +cWXn8erzKV6tUoWQvW85Lj/2RiwJvSlsnYZDkx5af1CpEE2HA/pFT8PNRqsd+MWC +7AEy710cVsM4BYerBFYQaYxwzblaoojo88LSjVPw3h5Z0iLM8+IMVd36nwuc9dpE +R8TecMZ1+U4Tl6BgqkK+9xToZRdPKdjS8L5MoFhGN+xY0vRbbJbGaV9Q0IHxLBkB +rEBV7T1mUynneCHRUQlJQEwJmKpT8MH3IjsUXlG5YvnuuvcQJSNTaW2iDLxuOKp8 +cxW8+qL88zpb1D5dppoIu6rlrugN0azSq70ruFJQPc/A8GQrDKoGgRQiagxNY3u+ +vHZzXlECgYEA0dKO3gfkSxsDBb94sQwskMScqLhcKhztEa8kPxTx6Yqh+x8/scx3 +XhJyOt669P8U1v8a/2Al+s81oZzzfQSzO1Q7gEwSrgBcRMSIoRBUw9uYcy02ngb/ +j/ng3DGivfJztjjiSJwb46FHkJ2JR8mF2UisC6UMXk3NgFY/3vWQx78CgYEAxlcG +T3hfSWSmTgKRczMJuHQOX9ULfTBIqwP5VqkkkiavzigGRirzb5lgnmuTSPTpF0LB +XVPjR2M4q+7gzP0Dca3pocrvLEoxjwIKnCbYKnyyvnUoE9qHv4Kr+vDbgWpa2LXG +JbLmE7tgTCIp20jOPPT4xuDvlbzQZBJ5qCQSoZkCgYEAgrotSSihlCnAOFSTXbu4 +CHp3IKe8xIBBNENq0eK61kcJpOxTQvOha3sSsJsU4JAM6+cFaxb8kseHIqonCj1j +bhOM/uJmwQJ4el/4wGDsbxriYOBKpyq1D38gGhDS1IW6kk3erl6VAb36WJ/OaGum +eTpN9vNeQWM4Jj2WjdNx4QECgYAwTdd6mU1TmZCrJRL5ZG+0nYc2rbMrnQvFoqUi +BvWiJovggHzur90zy73tNzPaq9Ls2FQxf5G1vCN8NCRJqEEjeYCR59OSDMu/EXc2 +CnvQ9SevHOdS1oEDEjcCWZCMFzPi3XpRih1gptzQDe31uuiHjf3cqcGPzTlPdfRt +D8P92QKBgC4UaBvIRwREVJsdZzpIzm224Bpe8LOmA7DeTnjlT0b3lkGiBJ36/Q0p +VhYh/6cjX4/iuIs7gJbGon7B+YPB8scmOi3fj0+nkJAONue1mMfBNkba6qQTc6Y2 +5mEKw2/O7/JpND7ucU3OK9plcw/qnrWDgHxl0Iz95+OzUIIagxne +-----END RSA PRIVATE KEY----- diff --git a/tests/keys/id_rsa.pub b/tests/keys/id_rsa.pub new file mode 100644 index 0000000000..d9888e312f --- /dev/null +++ b/tests/keys/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCikC46WYtXotUd0UGPz9547Aj0KqC4gk+nt4BBJm86IHgCD9FygSGX9EFutXlhz9KZIPg9Okk7+IzXRHCWI2MNvhrcjyrezKREm71z08j9iwfxY3340fY2Mo+0khwpO7bzsgzkljHIHqcOg7MgttPInVMNH/EfqpgR8EDKJuWCB2Ny+EBFN/3dAiff0X/EvKle9PUrY70EkSycnyURS8HZReEqj8lN9J5kXzA8F6jBo/0Q42Ttv6e4k5YcaDrwmLrBWLra2PCXZLNyHqXEiFkGmdXtA1Eox9gc/p4jIXim6xrPNmpN6WyrrEjaCF5xYvNv8wXkD6uSWwbHYU24lIAn qemu-test From patchwork Tue Sep 19 07:27:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815308 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF4X59J9z9sBZ for ; Tue, 19 Sep 2017 17:34:20 +1000 (AEST) Received: from localhost ([::1]:40465 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD2w-0006a9-Or for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:34:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38446) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCx1-000212-GL for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCwy-0007xR-NV for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51064) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCwy-0007x6-EC for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:08 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 81F12C04B92E; Tue, 19 Sep 2017 07:28:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 81F12C04B92E Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id A25515D6A4; Tue, 19 Sep 2017 07:27:59 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:11 +0800 Message-Id: <20170919072719.11815-6-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 19 Sep 2017 07:28:07 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 05/13] tests: Add vm test lib X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This is the common code to implement a "VM test" to 1) Download and initialize a pre-defined VM that has necessary dependencies to build QEMU and SSH access. 2) Archive $SRC_PATH to a .tar file. 3) Boot the VM, and pass the source tar file to the guest. 4) SSH into the VM, untar the source tarball, build from the source. Signed-off-by: Fam Zheng Reviewed-by: Alex Bennée --- tests/vm/basevm.py | 262 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100755 tests/vm/basevm.py diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py new file mode 100755 index 0000000000..3c863bc237 --- /dev/null +++ b/tests/vm/basevm.py @@ -0,0 +1,262 @@ +#!/usr/bin/env python +# +# VM testing base class +# +# Copyright 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# This code is licensed under the GPL version 2 or later. See +# the COPYING file in the top-level directory. +# + +import os +import sys +import logging +import time +import datetime +sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "scripts")) +from qemu import QEMUMachine +import subprocess +import hashlib +import optparse +import atexit +import tempfile +import shutil +import multiprocessing +import traceback + +SSH_KEY = open(os.path.join(os.path.dirname(__file__), + "..", "keys", "id_rsa")).read() +SSH_PUB_KEY = open(os.path.join(os.path.dirname(__file__), + "..", "keys", "id_rsa.pub")).read() + +class BaseVM(object): + GUEST_USER = "qemu" + GUEST_PASS = "qemupass" + ROOT_PASS = "qemupass" + + # The script to run in the guest that builds QEMU + BUILD_SCRIPT = "" + # The guest name, to be overridden by subclasses + name = "#base" + def __init__(self, debug=False, vcpus=None): + self._guest = None + self._tmpdir = os.path.realpath(tempfile.mkdtemp(prefix="vm-test-", + suffix=".tmp", + dir=".")) + atexit.register(shutil.rmtree, self._tmpdir) + + self._ssh_key_file = os.path.join(self._tmpdir, "id_rsa") + open(self._ssh_key_file, "w").write(SSH_KEY) + subprocess.check_call(["chmod", "600", self._ssh_key_file]) + + self._ssh_pub_key_file = os.path.join(self._tmpdir, "id_rsa.pub") + open(self._ssh_pub_key_file, "w").write(SSH_PUB_KEY) + + self.debug = debug + self._stderr = sys.stderr + self._devnull = open(os.devnull, "w") + if self.debug: + self._stdout = sys.stdout + else: + self._stdout = self._devnull + self._args = [ \ + "-nodefaults", "-m", "2G", + "-cpu", "host", + "-netdev", "user,id=vnet,hostfwd=:127.0.0.1:0-:22", + "-device", "virtio-net-pci,netdev=vnet", + "-vnc", "127.0.0.1:0,to=20", + "-serial", "file:%s" % os.path.join(self._tmpdir, "serial.out")] + if vcpus: + self._args += ["-smp", str(vcpus)] + if os.access("/dev/kvm", os.R_OK | os.W_OK): + self._args += ["-enable-kvm"] + else: + logging.info("KVM not available, not using -enable-kvm") + self._data_args = [] + + def _download_with_cache(self, url, sha256sum=None): + def check_sha256sum(fname): + if not sha256sum: + return True + checksum = subprocess.check_output(["sha256sum", fname]).split()[0] + return sha256sum == checksum + + cache_dir = os.path.expanduser("~/.cache/qemu-vm/download") + if not os.path.exists(cache_dir): + os.makedirs(cache_dir) + fname = os.path.join(cache_dir, hashlib.sha1(url).hexdigest()) + if os.path.exists(fname) and check_sha256sum(fname): + return fname + logging.debug("Downloading %s to %s...", url, fname) + subprocess.check_call(["wget", "-c", url, "-O", fname + ".download"], + stdout=self._stdout, stderr=self._stderr) + os.rename(fname + ".download", fname) + return fname + + def _ssh_do(self, user, cmd, check, interactive=False): + ssh_cmd = ["ssh", "-q", + "-o", "StrictHostKeyChecking=no", + "-o", "UserKnownHostsFile=" + os.devnull, + "-o", "ConnectTimeout=1", + "-p", self.ssh_port, "-i", self._ssh_key_file] + if interactive: + ssh_cmd += ['-t'] + assert not isinstance(cmd, str) + ssh_cmd += ["%s@127.0.0.1" % user] + list(cmd) + logging.debug("ssh_cmd: %s", " ".join(ssh_cmd)) + r = subprocess.call(ssh_cmd, + stdin=sys.stdin if interactive else self._devnull, + stdout=sys.stdout if interactive else self._stdout, + stderr=sys.stderr if interactive else self._stderr) + if check and r != 0: + raise Exception("SSH command failed: %s" % cmd) + return r + + def ssh(self, *cmd): + return self._ssh_do(self.GUEST_USER, cmd, False) + + def ssh_interactive(self, *cmd): + return self._ssh_do(self.GUEST_USER, cmd, False, True) + + def ssh_root(self, *cmd): + return self._ssh_do("root", cmd, False) + + def ssh_check(self, *cmd): + self._ssh_do(self.GUEST_USER, cmd, True) + + def ssh_root_check(self, *cmd): + self._ssh_do("root", cmd, True) + + def build_image(self, img): + raise NotImplementedError + + def add_source_dir(self, src_dir): + name = "data-" + hashlib.sha1(src_dir).hexdigest()[:5] + tarfile = os.path.join(self._tmpdir, name + ".tar") + logging.debug("Creating archive %s for src_dir dir: %s", tarfile, src_dir) + subprocess.check_call(["./scripts/archive-source.sh", tarfile], + cwd=src_dir, stdin=self._devnull, + stdout=self._stdout, stderr=self._stderr) + self._data_args += ["-drive", + "file=%s,if=none,id=%s,cache=writeback,format=raw" % \ + (tarfile, name), + "-device", + "virtio-blk,drive=%s,serial=%s,bootindex=1" % (name, name)] + + def boot(self, img, extra_args=[]): + args = self._args + [ + "-device", "VGA", + "-drive", "file=%s,if=none,id=drive0,cache=writeback" % img, + "-device", "virtio-blk,drive=drive0,bootindex=0"] + args += self._data_args + extra_args + logging.debug("QEMU args: %s", " ".join(args)) + qemu_bin = os.environ.get("QEMU", "qemu-system-x86_64") + guest = QEMUMachine(binary=qemu_bin, args=args) + try: + guest.launch() + except: + logging.error("Failed to launch QEMU, command line:") + logging.error(" ".join([qemu_bin] + args)) + logging.error("Log:") + logging.error(guest.get_log()) + logging.error("QEMU version >= 2.10 is required") + raise + atexit.register(self.shutdown) + self._guest = guest + usernet_info = guest.qmp("human-monitor-command", + command_line="info usernet") + self.ssh_port = None + for l in usernet_info["return"].splitlines(): + fields = l.split() + if "TCP[HOST_FORWARD]" in fields and "22" in fields: + self.ssh_port = l.split()[3] + if not self.ssh_port: + raise Exception("Cannot find ssh port from 'info usernet':\n%s" % \ + usernet_info) + + def wait_ssh(self, seconds=120): + starttime = datetime.datetime.now() + guest_up = False + while (datetime.datetime.now() - starttime).total_seconds() < seconds: + if self.ssh("exit 0") == 0: + guest_up = True + break + time.sleep(1) + if not guest_up: + raise Exception("Timeout while waiting for guest ssh") + + def shutdown(self): + self._guest.shutdown() + + def wait(self): + self._guest.wait() + + def qmp(self, *args, **kwargs): + return self._guest.qmp(*args, **kwargs) + +def parse_args(vm_name): + parser = optparse.OptionParser( + description="VM test utility. Exit codes: " + "0 = success, " + "1 = command line error, " + "2 = environment initialization failed, " + "3 = test command failed") + parser.add_option("--debug", "-D", action="store_true", + help="enable debug output") + parser.add_option("--image", "-i", default="%s.img" % vm_name, + help="image file name") + parser.add_option("--force", "-f", action="store_true", + help="force build image even if image exists") + parser.add_option("--jobs", type=int, default=multiprocessing.cpu_count() / 2, + help="number of virtual CPUs") + parser.add_option("--build-image", "-b", action="store_true", + help="build image") + parser.add_option("--build-qemu", + help="build QEMU from source in guest") + parser.add_option("--interactive", "-I", action="store_true", + help="Interactively run command") + parser.disable_interspersed_args() + return parser.parse_args() + +def main(vmcls): + try: + args, argv = parse_args(vmcls.name) + if not argv and not args.build_qemu and not args.build_image: + print "Nothing to do?" + return 1 + if args.debug: + logging.getLogger().setLevel(logging.DEBUG) + vm = vmcls(debug=args.debug, vcpus=args.jobs) + if args.build_image: + if os.path.exists(args.image) and not args.force: + sys.stderr.writelines(["Image file exists: %s\n" % args.image, + "Use --force option to overwrite\n"]) + return 1 + return vm.build_image(args.image) + if args.build_qemu: + vm.add_source_dir(args.build_qemu) + cmd = [vm.BUILD_SCRIPT.format( + configure_opts = " ".join(argv), + jobs=args.jobs)] + else: + cmd = argv + vm.boot(args.image + ",snapshot=on") + vm.wait_ssh() + except Exception as e: + if isinstance(e, SystemExit) and e.code == 0: + return 0 + sys.stderr.write("Failed to prepare guest environment\n") + traceback.print_exc() + return 2 + + if args.interactive: + if vm.ssh_interactive(*cmd) == 0: + return 0 + vm.ssh_interactive() + return 3 + else: + if vm.ssh(*cmd) != 0: + return 3 From patchwork Tue Sep 19 07:27:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815300 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF0r4mbrz9sBZ for ; Tue, 19 Sep 2017 17:31:08 +1000 (AEST) Received: from localhost ([::1]:40448 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCzq-0003rq-JY for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:31:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38581) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxK-0002E3-IT for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCxE-00087F-Ev for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38514) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCxE-00086p-77 for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:24 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3C3F72F9451; Tue, 19 Sep 2017 07:28:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 3C3F72F9451 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id 08A385D6A4; Tue, 19 Sep 2017 07:28:07 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:12 +0800 Message-Id: <20170919072719.11815-7-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 19 Sep 2017 07:28:23 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 06/13] tests: Add ubuntu.i386 image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This adds a 32bit guest. The official LTS cloud image is downloaded and initialized with cloud-init. Signed-off-by: Fam Zheng --- tests/vm/ubuntu.i386 | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100755 tests/vm/ubuntu.i386 diff --git a/tests/vm/ubuntu.i386 b/tests/vm/ubuntu.i386 new file mode 100755 index 0000000000..e70dcb89ce --- /dev/null +++ b/tests/vm/ubuntu.i386 @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# +# Ubuntu i386 image +# +# Copyright 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# This code is licensed under the GPL version 2 or later. See +# the COPYING file in the top-level directory. +# + +import os +import sys +import subprocess +import basevm +import time + +class UbuntuX86VM(basevm.BaseVM): + name = "ubuntu.i386" + BUILD_SCRIPT = """ + set -e; + cd $(mktemp -d); + sudo chmod a+r /dev/vdb; + tar -xf /dev/vdb; + ./configure {configure_opts}; + make -j{jobs}; + make check; + """ + + def _gen_cloud_init_iso(self): + cidir = self._tmpdir + mdata = open(os.path.join(cidir, "meta-data"), "w") + mdata.writelines(["instance-id: ubuntu-vm-0\n", + "local-hostname: ubuntu-guest\n"]) + mdata.close() + udata = open(os.path.join(cidir, "user-data"), "w") + udata.writelines(["#cloud-config\n", + "chpasswd:\n", + " list: |\n", + " root:%s\n" % self.ROOT_PASS, + " %s:%s\n" % (self.GUEST_USER, self.GUEST_PASS), + " expire: False\n", + "users:\n", + " - name: %s\n" % self.GUEST_USER, + " sudo: ALL=(ALL) NOPASSWD:ALL\n", + " ssh-authorized-keys:\n", + " - %s\n" % basevm.SSH_PUB_KEY, + " - name: root\n", + " ssh-authorized-keys:\n", + " - %s\n" % basevm.SSH_PUB_KEY]) + udata.close() + subprocess.check_call(["genisoimage", "-output", "cloud-init.iso", + "-volid", "cidata", "-joliet", "-rock", + "user-data", "meta-data"], + cwd=cidir, + stdin=self._devnull, stdout=self._stdout, + stderr=self._stdout) + return os.path.join(cidir, "cloud-init.iso") + + def build_image(self, img): + cimg = self._download_with_cache("https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-i386-disk1.img") + img_tmp = img + ".tmp" + subprocess.check_call(["cp", "-f", cimg, img_tmp]) + subprocess.check_call(["qemu-img", "resize", img_tmp, "50G"]) + self.boot(img_tmp, extra_args = ["-cdrom", self._gen_cloud_init_iso()]) + self.wait_ssh() + self.ssh_root_check("touch /etc/cloud/cloud-init.disabled") + self.ssh_root_check("apt-get update") + self.ssh_root_check("apt-get install -y cloud-initramfs-growroot") + # Don't check the status in case the guest hang up too quickly + self.ssh_root("sync && reboot") + time.sleep(5) + self.wait_ssh() + # The previous update sometimes doesn't survive a reboot, so do it again + self.ssh_root_check("apt-get update") + self.ssh_root_check("apt-get build-dep -y qemu") + self.ssh_root_check("apt-get install -y libfdt-dev") + self.ssh_root("poweroff") + self.wait() + if os.path.exists(img): + os.remove(img) + os.rename(img_tmp, img) + return 0 + +if __name__ == "__main__": + sys.exit(basevm.main(UbuntuX86VM)) From patchwork Tue Sep 19 07:27:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815310 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF782G4Cz9sDB for ; Tue, 19 Sep 2017 17:36:36 +1000 (AEST) Received: from localhost ([::1]:40488 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD58-0008OB-De for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:36:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38574) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxJ-0002DV-W9 for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCxI-00088f-B4 for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:34540) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCxI-00088H-61 for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:28 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 42B894A702; Tue, 19 Sep 2017 07:28:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 42B894A702 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id C5A425D6A8; Tue, 19 Sep 2017 07:28:23 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:13 +0800 Message-Id: <20170919072719.11815-8-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 19 Sep 2017 07:28:27 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 07/13] tests: Add FreeBSD image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The image is prepared following instructions as in: https://wiki.qemu.org/Hosts/BSD Signed-off-by: Fam Zheng --- tests/vm/freebsd | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 tests/vm/freebsd diff --git a/tests/vm/freebsd b/tests/vm/freebsd new file mode 100755 index 0000000000..039dad8f69 --- /dev/null +++ b/tests/vm/freebsd @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# FreeBSD VM image +# +# Copyright 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# This code is licensed under the GPL version 2 or later. See +# the COPYING file in the top-level directory. +# + +import os +import sys +import subprocess +import basevm + +class FreeBSDVM(basevm.BaseVM): + name = "freebsd" + BUILD_SCRIPT = """ + set -e; + cd $(mktemp -d /var/tmp/qemu-test.XXXXXX); + tar -xf /dev/vtbd1; + ./configure {configure_opts}; + gmake -j{jobs}; + gmake check; + """ + + def build_image(self, img): + cimg = self._download_with_cache("http://download.patchew.org/freebsd-11.1-amd64.img.xz", + sha256sum='adcb771549b37bc63826c501f05121a206ed3d9f55f49145908f7e1432d65891') + img_tmp_xz = img + ".tmp.xz" + img_tmp = img + ".tmp" + subprocess.check_call(["cp", "-f", cimg, img_tmp_xz]) + subprocess.check_call(["xz", "-df", img_tmp_xz]) + if os.path.exists(img): + os.remove(img) + os.rename(img_tmp, img) + +if __name__ == "__main__": + sys.exit(basevm.main(FreeBSDVM)) From patchwork Tue Sep 19 07:27:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815301 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF101vfkz9sDB for ; Tue, 19 Sep 2017 17:31:16 +1000 (AEST) Received: from localhost ([::1]:40449 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCzy-0003zX-9l for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:31:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38715) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxY-0002RY-5B for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCxV-0008Fg-H2 for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44576) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCxV-0008FH-Bm for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:41 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 796BC81DE6; Tue, 19 Sep 2017 07:28:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 796BC81DE6 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id E98B45D6A4; Tue, 19 Sep 2017 07:28:27 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:14 +0800 Message-Id: <20170919072719.11815-9-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 19 Sep 2017 07:28:40 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 08/13] tests: Add NetBSD image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The image is prepared following instructions as in: https://wiki.qemu.org/Hosts/BSD Signed-off-by: Fam Zheng Reviewed-by: Kamil Rytarowski --- tests/vm/netbsd | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 tests/vm/netbsd diff --git a/tests/vm/netbsd b/tests/vm/netbsd new file mode 100755 index 0000000000..3972d8b45c --- /dev/null +++ b/tests/vm/netbsd @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# NetBSD VM image +# +# Copyright 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# This code is licensed under the GPL version 2 or later. See +# the COPYING file in the top-level directory. +# + +import os +import sys +import subprocess +import basevm + +class NetBSDVM(basevm.BaseVM): + name = "netbsd" + BUILD_SCRIPT = """ + set -e; + cd $(mktemp -d /var/tmp/qemu-test.XXXXXX); + tar -xf /dev/rld1a; + ./configure --python=python2.7 {configure_opts}; + gmake -j{jobs}; + gmake check; + """ + + def build_image(self, img): + cimg = self._download_with_cache("http://download.patchew.org/netbsd-7.1-amd64.img.xz", + sha256sum='b633d565b0eac3d02015cd0c81440bd8a7a8df8512615ac1ee05d318be015732') + img_tmp_xz = img + ".tmp.xz" + img_tmp = img + ".tmp" + subprocess.check_call(["cp", "-f", cimg, img_tmp_xz]) + subprocess.check_call(["xz", "-df", img_tmp_xz]) + if os.path.exists(img): + os.remove(img) + os.rename(img_tmp, img) + +if __name__ == "__main__": + sys.exit(basevm.main(NetBSDVM)) From patchwork Tue Sep 19 07:27:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815304 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF4D2bx2z9sDB for ; Tue, 19 Sep 2017 17:34:03 +1000 (AEST) Received: from localhost ([::1]:40460 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD2f-0006Nq-6Y for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:34:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38826) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxg-0002a3-JL for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCxd-0008Jr-Uz for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46222) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCxd-0008JR-PG for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:49 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C8494883B8; Tue, 19 Sep 2017 07:28:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C8494883B8 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id F11C45D6A4; Tue, 19 Sep 2017 07:28:40 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:15 +0800 Message-Id: <20170919072719.11815-10-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 19 Sep 2017 07:28:48 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 09/13] tests: Add OpenBSD image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The image is prepared following instructions as in: https://wiki.qemu.org/Hosts/BSD Signed-off-by: Fam Zheng --- tests/vm/openbsd | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 tests/vm/openbsd diff --git a/tests/vm/openbsd b/tests/vm/openbsd new file mode 100755 index 0000000000..6ae16d97fd --- /dev/null +++ b/tests/vm/openbsd @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# +# OpenBSD VM image +# +# Copyright 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# This code is licensed under the GPL version 2 or later. See +# the COPYING file in the top-level directory. +# + +import os +import sys +import subprocess +import basevm + +class OpenBSDVM(basevm.BaseVM): + name = "openbsd" + BUILD_SCRIPT = """ + set -e; + cd $(mktemp -d /var/tmp/qemu-test.XXXXXX); + tar -xf /dev/rsd1c; + ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 --python=python2.7 {configure_opts}; + gmake -j{jobs}; + # XXX: "gmake check" seems to always hang or fail + #gmake check; + """ + + def build_image(self, img): + cimg = self._download_with_cache("http://download.patchew.org/openbsd-6.1-amd64.img.xz", + sha256sum='8c6cedc483e602cfee5e04f0406c64eb99138495e8ca580bc0293bcf0640c1bf') + img_tmp_xz = img + ".tmp.xz" + img_tmp = img + ".tmp" + subprocess.check_call(["cp", "-f", cimg, img_tmp_xz]) + subprocess.check_call(["xz", "-df", img_tmp_xz]) + if os.path.exists(img): + os.remove(img) + os.rename(img_tmp, img) + +if __name__ == "__main__": + sys.exit(basevm.main(OpenBSDVM)) From patchwork Tue Sep 19 07:27:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815311 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF8v2R2bz9sBZ for ; Tue, 19 Sep 2017 17:38:07 +1000 (AEST) Received: from localhost ([::1]:40507 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD6b-0001Hx-GJ for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:38:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38884) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxk-0002db-TT for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCxj-0008Mn-TY for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46414) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCxj-0008MU-LX for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:28:55 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B3B4C883C8; Tue, 19 Sep 2017 07:28:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B3B4C883C8 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5DC025D6A4; Tue, 19 Sep 2017 07:28:49 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:16 +0800 Message-Id: <20170919072719.11815-11-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 19 Sep 2017 07:28:54 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 10/13] Makefile: Add rules to run vm tests X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Reviewed-by: Alex Bennée Tested-by: Alex Bennée Signed-off-by: Fam Zheng --- Makefile | 2 ++ configure | 2 +- tests/vm/Makefile.include | 42 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 tests/vm/Makefile.include diff --git a/Makefile b/Makefile index b53fc69a60..79684ab138 100644 --- a/Makefile +++ b/Makefile @@ -812,6 +812,7 @@ endif -include $(wildcard *.d tests/*.d) include $(SRC_PATH)/tests/docker/Makefile.include +include $(SRC_PATH)/tests/vm/Makefile.include .PHONY: help help: @@ -835,6 +836,7 @@ help: @echo 'Test targets:' @echo ' check - Run all tests (check-help for details)' @echo ' docker - Help about targets running tests inside Docker containers' + @echo ' vm-test - Help about targets running tests inside VM' @echo '' @echo 'Documentation targets:' @echo ' html info pdf txt' diff --git a/configure b/configure index 94db2d103e..bbf053e3e0 100755 --- a/configure +++ b/configure @@ -6505,7 +6505,7 @@ if test "$ccache_cpp2" = "yes"; then fi # build tree in object directory in case the source is not in the current directory -DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" +DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm" DIRS="$DIRS docs docs/interop fsdev" DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" DIRS="$DIRS roms/seabios roms/vgabios" diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include new file mode 100644 index 0000000000..5daa2a3b73 --- /dev/null +++ b/tests/vm/Makefile.include @@ -0,0 +1,42 @@ +# Makefile for VM tests + +.PHONY: vm-build-all + +IMAGES := ubuntu.i386 freebsd netbsd openbsd +IMAGE_FILES := $(patsubst %, tests/vm/%.img, $(IMAGES)) + +.PRECIOUS: $(IMAGE_FILES) + +vm-test: + @echo "vm-test: Test QEMU in preconfigured virtual machines" + @echo + @echo " vm-build-ubuntu.i386 - Build QEMU in ubuntu i386 VM" + @echo " vm-build-freebsd - Build QEMU in FreeBSD VM" + @echo " vm-build-netbsd - Build QEMU in NetBSD VM" + @echo " vm-build-openbsd - Build QEMU in OpenBSD VM" + +vm-build-all: $(addprefix vm-build-, $(IMAGES)) + +tests/vm/%.img: $(SRC_PATH)/tests/vm/% \ + $(SRC_PATH)/tests/vm/basevm.py \ + $(SRC_PATH)/tests/vm/Makefile.include + $(call quiet-command, \ + $< \ + $(if $(V)$(DEBUG), --debug) \ + --image "$@" \ + --force \ + --build-image $@, \ + " VM-IMAGE $*") + + +# Build in VM $(IMAGE) +vm-build-%: tests/vm/%.img + $(call quiet-command, \ + $(SRC_PATH)/tests/vm/$* \ + $(if $(V)$(DEBUG), --debug) \ + $(if $(DEBUG), --interactive) \ + $(if $(J),--jobs $(J)) \ + --image "$<" \ + --build-qemu $(SRC_PATH), \ + " VM-BUILD $*") + From patchwork Tue Sep 19 07:27:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815309 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF6s4wHCz9sBZ for ; Tue, 19 Sep 2017 17:36:21 +1000 (AEST) Received: from localhost ([::1]:40476 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD4t-0008BZ-QI for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:36:19 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38952) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxs-0002ib-6u for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCxp-0008OX-IU for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47802) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCxp-0008OF-CE for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:01 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 633B67EA81; Tue, 19 Sep 2017 07:29:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 633B67EA81 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id 341855D6A4; Tue, 19 Sep 2017 07:28:54 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:17 +0800 Message-Id: <20170919072719.11815-12-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 19 Sep 2017 07:29:00 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 11/13] MAINTAINERS: Add tests/vm entry X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Fam Zheng Reviewed-by: Stefan Hajnoczi --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 4bd1797330..e9be7faff7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1890,6 +1890,7 @@ S: Maintained F: .travis.yml F: .shippable.yml F: tests/docker/ +F: tests/vm/ W: https://travis-ci.org/qemu/qemu W: https://app.shippable.com/github/qemu/qemu W: http://patchew.org/QEMU/ From patchwork Tue Sep 19 07:27:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815312 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxFBF4SZPz9sBZ for ; Tue, 19 Sep 2017 17:39:15 +1000 (AEST) Received: from localhost ([::1]:40516 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD7h-0001so-4r for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:39:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39077) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxz-0002oE-PP for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCxv-00005t-CI for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52614) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCxv-0008WU-2s for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:07 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1E914C00DBA0; Tue, 19 Sep 2017 07:29:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 1E914C00DBA0 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id 539F95D6A4; Tue, 19 Sep 2017 07:29:02 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:18 +0800 Message-Id: <20170919072719.11815-13-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 19 Sep 2017 07:29:06 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 12/13] tests: Add README for vm tests X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Fam Zheng --- tests/vm/README | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 tests/vm/README diff --git a/tests/vm/README b/tests/vm/README new file mode 100644 index 0000000000..ae53dce6ee --- /dev/null +++ b/tests/vm/README @@ -0,0 +1,89 @@ +=== VM test suite to run build in guests === + +== Intro == + +This test suite contains scripts that bootstrap various guest images that have +necessary packages to build QEMU. The basic usage is documented in Makefile +help which is displayed with "make vm-test". + +== Quick start == + +Run "make vm-test" to list available make targets. Invoke a specific make +command to run build test in an image. For example, "make vm-build-freebsd" +will build the source tree in the FreeBSD image. The command can be executed +from either the source tree or the build dir; if the former, ./configure is not +needed. The command will then generate the test image in ./tests/vm/ under the +working directory. + +Note: images created by the scripts accept a well-known RSA key pair for SSH +access, so they SHOULD NOT be exposed to external interfaces if you are +concerned about attackers taking control of the guest and potentially +exploiting a QEMU security bug to compromise the host. + +== QEMU binary == + +By default, qemu-system-x86_64 is searched in $PATH to run the guest. If there +isn't one, or if it is older than 2.10, the test won't work. In this case, +provide the QEMU binary in env var: QEMU=/path/to/qemu-2.10+. + +== Make jobs == + +The "-j$X" option in the make command line is not propagated into the VM, +specify "J=$X" to control the make jobs in the guest. + +== Debugging == + +Add "DEBUG=1" and/or "V=1" to the make command to allow interactive debugging +and verbose output. If this is not enough, see the next section. + +== Manual invocation == + +Each guest script is an executable script with the same command line options. +For example to work with the netbsd guest, use $QEMU_SRC/tests/vm/netbsd: + + $ cd $QEMU_SRC/tests/vm + + # To bootstrap the image + $ ./netbsd --build-image --image /var/tmp/netbsd.img + <...> + + # To run an arbitrary command in guest (the output will not be echoed unless + # --debug is added) + $ ./netbsd --debug --image /var/tmp/netbsd.img uname -a + + # To build QEMU in guest + $ ./netbsd --debug --image /var/tmp/netbsd.img --build-qemu $QEMU_SRC + + # To get to an interactive shell + $ ./netbsd --interactive --image /var/tmp/netbsd.img sh + +== Adding new guests == + +Please look at existing guest scripts for how to add new guests. + +Most importantly, create a subclass of BaseVM and implement build_image() +method and define BUILD_SCRIPT, then finally call basevm.main() from the +script's main(). + + - Usually in build_image(), a template image is downloaded from a predefined + URL. BaseVM._download_with_cache() takes care of the cache and the + checksum, so consider using it. + + - Once the image is downloaded, users, SSH server and QEMU build deps should + be set up: + + * Root password set to BaseVM.ROOT_PASS + * User BaseVM.GUEST_USER is created, and password set to BaseVM.GUEST_PASS + * SSH service is enabled and started on boot, + $QEMU_SRC/tests/keys/id_rsa.pub is added to ssh's "authorized_keys" file + of both root and the normal user + * DHCP client service is enabled and started on boot, so that it can + automatically configure the virtio-net-pci NIC and communicate with QEMU + user net (10.0.2.2) + * Necessary packages are installed to untar the source tarball and build + QEMU + + - Write a proper BUILD_SCRIPT template, which should be a shell script that + untars a raw virtio-blk block device, which is the tarball data blob of the + QEMU source tree, then configure/build it. Running "make check" is also + recommended. From patchwork Tue Sep 19 07:27:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 815302 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xxF1C4tfvz9sBZ for ; Tue, 19 Sep 2017 17:31:27 +1000 (AEST) Received: from localhost ([::1]:40451 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD09-00048s-NZ for incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 03:31:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCy4-0002sX-4Q for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCy3-0000AX-0E for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39674) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCy2-0000A8-Qt for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:14 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E4F5B4FD; Tue, 19 Sep 2017 07:29:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E4F5B4FD Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id A57CC5D6A4; Tue, 19 Sep 2017 07:29:07 +0000 (UTC) From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:19 +0800 Message-Id: <20170919072719.11815-14-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 19 Sep 2017 07:29:14 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 13/13] docker: Use archive-source.py X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Fam Zheng Reviewed-by: Alex Bennée --- tests/docker/Makefile.include | 15 ++------------- tests/docker/run | 8 +------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index aaab1a4208..7a027d5bd6 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -17,24 +17,13 @@ DOCKER_TOOLS := travis TESTS ?= % IMAGES ?= % -# Make archive from git repo $1 to tar.gz $2 -make-archive-maybe = $(if $(wildcard $1/*), \ - $(call quiet-command, \ - (cd $1; if git diff-index --quiet HEAD -- &>/dev/null; then \ - git archive -1 HEAD --format=tar.gz; \ - else \ - git archive -1 $$(git stash create) --format=tar.gz; \ - fi) > $2, \ - "ARCHIVE","$(notdir $2)")) - CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$) DOCKER_SRC_COPY := docker-src.$(CUR_TIME) $(DOCKER_SRC_COPY): @mkdir $@ - $(call make-archive-maybe, $(SRC_PATH), $@/qemu.tgz) - $(call make-archive-maybe, $(SRC_PATH)/dtc, $@/dtc.tgz) - $(call make-archive-maybe, $(SRC_PATH)/pixman, $@/pixman.tgz) + $(call quiet-command, $(SRC_PATH)/scripts/archive-source.sh $@/qemu.tar, \ + "GEN", "$@/qemu.tar") $(call quiet-command, cp $(SRC_PATH)/tests/docker/run $@/run, \ "COPY","RUNNER") diff --git a/tests/docker/run b/tests/docker/run index c1e4513bce..9eb9165f76 100755 --- a/tests/docker/run +++ b/tests/docker/run @@ -32,13 +32,7 @@ export TEST_DIR=/tmp/qemu-test mkdir -p $TEST_DIR/{src,build,install} # Extract the source tarballs -tar -C $TEST_DIR/src -xzf $BASE/qemu.tgz -for p in dtc pixman; do - if test -f $BASE/$p.tgz; then - tar -C $TEST_DIR/src/$p -xzf $BASE/$p.tgz - export FEATURES="$FEATURES $p" - fi -done +tar -C $TEST_DIR/src -xf $BASE/qemu.tar if test -n "$SHOW_ENV"; then if test -f /packages.txt; then