On Mon, 09/18 10:43, Alex Bennée wrote: > > Fam Zheng <f...@redhat.com> writes: > > > Signed-off-by: Fam Zheng <f...@redhat.com> > > --- > > tests/vm/README | 85 > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 85 insertions(+) > > create mode 100644 tests/vm/README > > > > diff --git a/tests/vm/README b/tests/vm/README > > new file mode 100644 > > index 0000000000..fa30a79ea7 > > --- /dev/null > > +++ b/tests/vm/README > > @@ -0,0 +1,85 @@ > > +=== 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. > > + > > +== 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 > > This doesn't work: > > 10:41:38 [alex@zen:~/l/q/q/t/vm] review/fam-vmbuild-v8(+2/-2) ± ./netbsd > --debug --image netbsd.img --build-qemu /home/alex/lsrc/qemu/qemu.git/ > DEBUG:root:Creating archive ./vm-test-9yVAeh.tmp/data-9b5f9.tar for src_dir > dir: /home/alex/lsrc/qemu/qemu.git/ > ./scripts/archive-source.sh: 27: ./scripts/archive-source.sh: cannot create > ./vm-test-9yVAeh.tmp/data-9b5f9.tar.list: Directory nonexistent > Failed to prepare guest environment > Traceback (most recent call last): > File "/home/alex/lsrc/qemu/qemu.git/tests/vm/basevm.py", line 234, in main > vm.add_source_dir(args.build_qemu) > File "/home/alex/lsrc/qemu/qemu.git/tests/vm/basevm.py", line 140, in > add_source_dir > stdout=self._stdout, stderr=self._stderr) > File "/usr/lib/python2.7/subprocess.py", line 541, in check_call > raise CalledProcessError(retcode, cmd) > CalledProcessError: Command '['./scripts/archive-source.sh', > './vm-test-9yVAeh.tmp/data-9b5f9.tar']' returned non-zero exit status 2 > > Either adjust the call to be from QEMU_SRC or make the call to > archive-source smarter.
Yup, I failed to verify manual invocations since the revision which introduced archive-source.sh.. I would use absolute path for tmpdir everywhere, by squashing in this: diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index 77d07b161d..cbaa061c72 100755 --- a/tests/vm/basevm.py +++ b/tests/vm/basevm.py @@ -43,7 +43,9 @@ class BaseVM(object): name = "#base" def __init__(self, debug=False, vcpus=None): self._guest = None - self._tmpdir = tempfile.mkdtemp(prefix="vm-test-", suffix=".tmp", dir=".") + 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") Fam