From dc497635d93f6672f82727ad97a55205177be2aa Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 15 Apr 2019 17:13:09 +0100 Subject: [PATCH] build system: make install-stubdom depend on install-tools again In d290e325179ccee966cd679d0fed48be6f4cc1b7 "build system: don't let install-stubdom depend on install-tools" the dependency of install-stubdom on install-tools was removed. However, this was not correct. stubdom/Makefile contains this: $(XEN_ROOT)/tools/qemu-xen-traditional-dir: $(MAKE) DESTDIR= -C $(XEN_ROOT)/tools qemu-xen-traditional-dir-find As I have written before: With recursive make, it is necessary for the overall structure of the makefiles to sequence things so that each directory is entered exactly once, before its dependent directories are entered. (It is possible to violate this rule without creating races but it is tricky and inadvisable.) Since d290e325179c, it can happen that the command for the qemu-xen-traditional-dir-find rule is run twice simultaneously - once as a result of $(MAKE) -C tools install, and once as a result of $(MAKE) -C stubdom install. If you get unlucky, this causes lossage. (This just happened to me in an osstest flight.) In principle we could alternatively fix this by lifting the commands in the qemu-xen-traditional-dir-find target (and perhaps other things too) into the toplevel Makefile, as was done for mini-os. But that seems overkill given how bad the stubdom build system is, and the fact that we think at some point this qemu-trad will go away entirely. Adding the tools dependency back to the stubdom build is by and large good enough. (Someone who really wants to build stubdom without tools is welcome to do this separation if they really want to.) CC: Juergen Gross Signed-off-by: Ian Jackson Acked-by: Wei Liu --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d959cd5b47..829ac63741 100644 --- a/Makefile +++ b/Makefile @@ -127,7 +127,7 @@ install-tools: install-tools-public-headers $(MAKE) -C tools install .PHONY: install-stubdom -install-stubdom: mini-os-dir install-tools-public-headers +install-stubdom: mini-os-dir install-tools $(MAKE) -C stubdom install ifeq (x86_64,$(XEN_TARGET_ARCH)) XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom install-grub -- 2.39.5