[PATCH v4 03/29] tests/vm: avoid re-building the VM images all the time

Alex Bennée posted 29 patches 8 months, 1 week ago
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, Alexandre Iooss <erdnaxe@crans.org>, Mahmoud Mandour <ma.mandourr@gmail.com>, Pierrick Bouvier <pierrick.bouvier@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Yanan Wang <wangyanan55@huawei.com>, Laurent Vivier <laurent@vivier.eu>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, Michael Rolnik <mrolnik@gmail.com>, Brian Cain <bcain@quicinc.com>, Song Gao <gaosong@loongson.cn>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Nicholas Piggin <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, "Cédric Le Goater" <clg@kaod.org>, Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Bin Meng <bin.meng@windriver.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, David Hildenbrand <david@redhat.com>, Ilya Leoshkevich <iii@linux.ibm.com>, Thomas Huth <thuth@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>, Warner Losh <imp@bsdimp.com>, Kyle Evans <kevans@freebsd.org>
[PATCH v4 03/29] tests/vm: avoid re-building the VM images all the time
Posted by Alex Bennée 8 months, 1 week ago
The main problem is that "check-venv" is a .PHONY target will always
evaluate and trigger a full re-build of the VM images. While its
tempting to drop it from the dependencies that does introduce a
breakage on freshly configured builds.

Fortunately we do have the otherwise redundant --force flag for the
script which up until now was always on. If we make the usage of
--force conditional on dependencies other than check-venv triggering
the update we can avoid the costly rebuild and still run cleanly on a
fresh checkout.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2118
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 tests/vm/Makefile.include | 2 +-
 tests/vm/basevm.py        | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include
index bf12e0fa3c5..ac56824a87d 100644
--- a/tests/vm/Makefile.include
+++ b/tests/vm/Makefile.include
@@ -102,7 +102,7 @@ $(IMAGES_DIR)/%.img:	$(SRC_PATH)/tests/vm/% \
 		$(if $(LOG_CONSOLE),--log-console) \
 		--source-path $(SRC_PATH) \
 		--image "$@" \
-		--force \
+		$(if $(filter-out check-venv, $?), --force) \
 		--build-image $@, \
 		"  VM-IMAGE $*")
 
diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py
index c0d62c08031..f8fd751eb14 100644
--- a/tests/vm/basevm.py
+++ b/tests/vm/basevm.py
@@ -646,9 +646,9 @@ def main(vmcls, config=None):
         vm = vmcls(args, config=config)
         if args.build_image:
             if os.path.exists(args.image) and not args.force:
-                sys.stderr.writelines(["Image file exists: %s\n" % args.image,
+                sys.stderr.writelines(["Image file exists, skipping build: %s\n" % args.image,
                                       "Use --force option to overwrite\n"])
-                return 1
+                return 0
             return vm.build_image(args.image)
         if args.build_qemu:
             vm.add_source_dir(args.build_qemu)
-- 
2.39.2


Re: [PATCH v4 03/29] tests/vm: avoid re-building the VM images all the time
Posted by Thomas Huth 8 months, 1 week ago
On 27/02/2024 15.43, Alex Bennée wrote:
> The main problem is that "check-venv" is a .PHONY target will always
> evaluate and trigger a full re-build of the VM images. While its
> tempting to drop it from the dependencies that does introduce a
> breakage on freshly configured builds.
> 
> Fortunately we do have the otherwise redundant --force flag for the
> script which up until now was always on. If we make the usage of
> --force conditional on dependencies other than check-venv triggering
> the update we can avoid the costly rebuild and still run cleanly on a
> fresh checkout.
> 
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2118
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>   tests/vm/Makefile.include | 2 +-
>   tests/vm/basevm.py        | 4 ++--
>   2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include
> index bf12e0fa3c5..ac56824a87d 100644
> --- a/tests/vm/Makefile.include
> +++ b/tests/vm/Makefile.include
> @@ -102,7 +102,7 @@ $(IMAGES_DIR)/%.img:	$(SRC_PATH)/tests/vm/% \
>   		$(if $(LOG_CONSOLE),--log-console) \
>   		--source-path $(SRC_PATH) \
>   		--image "$@" \
> -		--force \
> +		$(if $(filter-out check-venv, $?), --force) \
>   		--build-image $@, \
>   		"  VM-IMAGE $*")
>   
> diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py
> index c0d62c08031..f8fd751eb14 100644
> --- a/tests/vm/basevm.py
> +++ b/tests/vm/basevm.py
> @@ -646,9 +646,9 @@ def main(vmcls, config=None):
>           vm = vmcls(args, config=config)
>           if args.build_image:
>               if os.path.exists(args.image) and not args.force:
> -                sys.stderr.writelines(["Image file exists: %s\n" % args.image,
> +                sys.stderr.writelines(["Image file exists, skipping build: %s\n" % args.image,
>                                         "Use --force option to overwrite\n"])
> -                return 1
> +                return 0
>               return vm.build_image(args.image)
>           if args.build_qemu:
>               vm.add_source_dir(args.build_qemu)

Reviewed-by: Thomas Huth <thuth@redhat.com>