Wei Liu, on mer. 17 mai 2017 15:26:08 +0100, wrote: > Build can fail if stubdom build is run before tools build because: > > 1. tools/include build uses relative path and depends on XEN_OS > 2. stubdom needs tools/include to be built, at which time XEN_OS is > mini-os and corresponding symlinks are created > 3. libraries inside tools needs tools/include to be built, at which > time XEN_OS is the host os name, but symlinks won't be created > because they are already there > 4. libraries get the wrong headers and fail to build > > Since both tools and stubdom build need the public headers, we build > tools/include before stubdom and tools. Remove runes in stubdom and > tools to avoid building tools/include more than once. > > Provide a new dist target for tools/include. Hook up the install, > clean, dist and distclean targets for tools/include. > > The new arrangement ensures tools build gets the correct headers > because XEN_OS is set to host os when building tools/include. As for > stubdom, it explicitly links to the mini-os directory without relying > on XEN_OS so it should fine. > > Reported-by: Steven Haigh <net...@crc.id.au> > Signed-off-by: Wei Liu <wei.l...@citrix.com>
Acked-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> > --- > Cc: Steven Haigh <net...@crc.id.au> > Cc: Ian Jackson <ian.jack...@eu.citrix.com> > Cc: Samuel Thibault <samuel.thiba...@ens-lyon.org> > Cc: Julien Grall <julien.gr...@arm.com> > --- > Makefile | 14 +++++++++++--- > stubdom/Makefile | 1 - > tools/Makefile | 3 +-- > tools/include/Makefile | 2 ++ > 4 files changed, 14 insertions(+), 6 deletions(-) > > diff --git a/Makefile b/Makefile > index 084588e11e..3e1e065537 100644 > --- a/Makefile > +++ b/Makefile > @@ -38,9 +38,14 @@ mini-os-dir-force-update: mini-os-dir > export XEN_TARGET_ARCH > export DESTDIR > > +.PHONY: build-tools-public-headers > +build-tools-public-headers: > + $(MAKE) -C tools/include > + > # build and install everything into the standard system directories > .PHONY: install > install: $(TARGS_INSTALL) > + $(MAKE) -C tools/include install > > .PHONY: build > build: $(TARGS_BUILD) > @@ -50,11 +55,11 @@ build-xen: > $(MAKE) -C xen build > > .PHONY: build-tools > -build-tools: > +build-tools: build-tools-public-headers > $(MAKE) -C tools build > > .PHONY: build-stubdom > -build-stubdom: mini-os-dir > +build-stubdom: mini-os-dir build-tools-public-headers > $(MAKE) -C stubdom build > ifeq (x86_64,$(XEN_TARGET_ARCH)) > XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom pv-grub > @@ -75,6 +80,7 @@ test: > .PHONY: dist > dist: DESTDIR=$(DISTDIR)/install > dist: $(TARGS_DIST) dist-misc > + make -C tools/include dist > > dist-misc: > $(INSTALL_DIR) $(DISTDIR)/ > @@ -101,7 +107,7 @@ install-tools: > $(MAKE) -C tools install > > .PHONY: install-stubdom > -install-stubdom: mini-os-dir > +install-stubdom: mini-os-dir build-tools-public-headers > $(MAKE) -C stubdom install > ifeq (x86_64,$(XEN_TARGET_ARCH)) > XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom install-grub > @@ -168,6 +174,7 @@ src-tarball: subtree-force-update-all > > .PHONY: clean > clean: $(TARGS_CLEAN) > + $(MAKE) -C tools/include clean > > .PHONY: clean-xen > clean-xen: > @@ -191,6 +198,7 @@ clean-docs: > # clean, but blow away tarballs > .PHONY: distclean > distclean: $(TARGS_DISTCLEAN) > + $(MAKE) -C tools/include distclean > rm -f config/Toplevel.mk > rm -rf dist > rm -rf config.log config.status config.cache autom4te.cache > diff --git a/stubdom/Makefile b/stubdom/Makefile > index aef705dd1e..db01827070 100644 > --- a/stubdom/Makefile > +++ b/stubdom/Makefile > @@ -355,7 +355,6 @@ LINK_DIRS := libxc-$(XEN_TARGET_ARCH) xenstore $(foreach > dir,$(LINK_LIBS_DIRS),l > LINK_STAMPS := $(foreach dir,$(LINK_DIRS),$(dir)/stamp) > > mk-headers-$(XEN_TARGET_ARCH): $(IOEMU_LINKFARM_TARGET) $(LINK_STAMPS) > - $(MAKE) -C $(XEN_ROOT)/tools/include > mkdir -p include/xen && \ > ln -sf $(wildcard $(XEN_ROOT)/xen/include/public/*.h) include/xen > && \ > ln -sf $(addprefix $(XEN_ROOT)/xen/include/public/,arch-x86 hvm io > xsm) include/xen && \ > diff --git a/tools/Makefile b/tools/Makefile > index 1396d95b50..496428e3a9 100644 > --- a/tools/Makefile > +++ b/tools/Makefile > @@ -5,7 +5,6 @@ export PKG_CONFIG_DIR = $(CURDIR)/pkg-config > include $(XEN_ROOT)/tools/Rules.mk > > SUBDIRS-y := > -SUBDIRS-y += include > SUBDIRS-y += libs > SUBDIRS-y += libxc > SUBDIRS-y += flask > @@ -50,7 +49,7 @@ SUBDIRS-$(OCAML_TOOLS) += ocaml > endif > > ifeq ($(CONFIG_RUMP),y) > -SUBDIRS-y := include libxc xenstore > +SUBDIRS-y := libxc xenstore > endif > > # For the sake of linking, set the sys-root > diff --git a/tools/include/Makefile b/tools/include/Makefile > index f1af91c129..98b479f6a3 100644 > --- a/tools/include/Makefile > +++ b/tools/include/Makefile > @@ -63,6 +63,8 @@ clean: > rm -rf xen xen-xsm acpi > $(MAKE) -C xen-foreign clean > > +.PHONY: dist > +dist: install > > .PHONY: distclean > distclean: clean > -- > 2.11.0 > -- Samuel * y se leve dans 2h10 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel