* Re: [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target
2017-05-17 14:26 [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target Wei Liu
@ 2017-05-17 15:16 ` Steven Haigh
2017-05-17 15:21 ` Ian Jackson
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Steven Haigh @ 2017-05-17 15:16 UTC (permalink / raw)
To: Wei Liu, Xen-devel; +Cc: Samuel Thibault, Julien Grall, Ian Jackson
[-- Attachment #1.1.1: Type: text/plain, Size: 5445 bytes --]
Can confirm this fixes the problems I was seeing. Tested with multiple
builds on both RHEL6 and RHEL7. No further issues found.
Tested-by: Steven Haigh <netwiz@crc.id.au>
On 18/05/17 00:26, Wei Liu 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 <netwiz@crc.id.au>
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> ---
> Cc: Steven Haigh <netwiz@crc.id.au>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
> Cc: Julien Grall <Julien.Grall@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
>
--
Steven Haigh
Email: netwiz@crc.id.au
Web: https://www.crc.id.au
Phone: (03) 9001 6090 - 0412 935 897
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 127 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target
2017-05-17 14:26 [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target Wei Liu
2017-05-17 15:16 ` Steven Haigh
@ 2017-05-17 15:21 ` Ian Jackson
2017-05-17 18:48 ` Julien Grall
2017-05-17 21:56 ` Samuel Thibault
3 siblings, 0 replies; 5+ messages in thread
From: Ian Jackson @ 2017-05-17 15:21 UTC (permalink / raw)
To: Wei Liu; +Cc: Xen-devel, Julien Grall, Steven Haigh, Samuel Thibault
Wei Liu writes ("[PATCH for-4.9 v2] build: stubdom and tools should depend on public header target"):
> Build can fail if stubdom build is run before tools build because:
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target
2017-05-17 14:26 [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target Wei Liu
2017-05-17 15:16 ` Steven Haigh
2017-05-17 15:21 ` Ian Jackson
@ 2017-05-17 18:48 ` Julien Grall
2017-05-17 21:56 ` Samuel Thibault
3 siblings, 0 replies; 5+ messages in thread
From: Julien Grall @ 2017-05-17 18:48 UTC (permalink / raw)
To: Wei Liu, Xen-devel; +Cc: Ian Jackson, Steven Haigh, Samuel Thibault
Hi Wei,
On 17/05/17 15:26, Wei Liu 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 <netwiz@crc.id.au>
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
This was considered as a blocker for Xen 4.9:
Release-acked: Julien Grall <julien.grall@arm.com>
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target
2017-05-17 14:26 [PATCH for-4.9 v2] build: stubdom and tools should depend on public header target Wei Liu
` (2 preceding siblings ...)
2017-05-17 18:48 ` Julien Grall
@ 2017-05-17 21:56 ` Samuel Thibault
3 siblings, 0 replies; 5+ messages in thread
From: Samuel Thibault @ 2017-05-17 21:56 UTC (permalink / raw)
To: Wei Liu; +Cc: Xen-devel, Julien Grall, Steven Haigh, Ian Jackson
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 <netwiz@crc.id.au>
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
> ---
> Cc: Steven Haigh <netwiz@crc.id.au>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
> Cc: Julien Grall <Julien.Grall@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
^ permalink raw reply [flat|nested] 5+ messages in thread