[libvirt] [PATCH] Makefile: Fix parallel build after Xen-xl parser introduction

Jim Fehlig jfehlig at suse.com
Mon Jan 5 21:48:04 UTC 2015


Michal Privoznik wrote:
> Well, the parallel build doesn't work as there are not dependencies
> set correctly. When running 'make -j' I see this error:
>
> make[2]: Entering directory '/home/zippy/work/libvirt/libvirt.git/src'
>   GEN      util/virkeymaps.h
>   GEN      locking/lock_protocol.h
> make[2]: *** No rule to make target 'xenconfig/xen_xl_disk.h', needed by 'all'.  Stop.
> make[2]: *** Waiting for unfinished jobs....
>   GEN      lxc/lxc_controller_dispatch.h
>
> The fix is to correctly set dependencies by letting make know that .c
> and .h are to be generated from .l. Moreover, the section is moved
> closer to the other section which uses it.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>
> I'm not fully satisfied with this patch yet. I mean, for some
> reason it creates 'src/.h' file, but hey - it makes parallel
> build work again. Any brighter idea appreciated.
>   

Interesting. I don't see the file using your patch. What version of
automake? I'm using the rather old 1.13.

>  src/Makefile.am | 36 +++++++++++++++++++-----------------
>  1 file changed, 19 insertions(+), 17 deletions(-)
>
> diff --git a/src/Makefile.am b/src/Makefile.am
> index c6d736e..7619cf0 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -1000,23 +1000,6 @@ CPU_SOURCES =							\
>  VMX_SOURCES =							\
>  		vmx/vmx.c vmx/vmx.h
>  
> -AM_LFLAGS = -Pxl_disk_ --header-file=../$*.h
> -LEX_OUTPUT_ROOT = lex.xl_disk_
> -BUILT_SOURCES += xenconfig/xen_xl_disk.c xenconfig/xen_xl_disk.h
> -# Generated header file is not implicitly added to dist
> -EXTRA_DIST += xenconfig/xen_xl_disk.h
> -CLEANFILES += xenconfig/xen_xl_disk.h xenconfig/xen_xl_disk.c
> -
> -XENXLDISKPARSER_SOURCES = xenconfig/xen_xl_disk.l
> -
> -XENCONFIG_SOURCES =						\
> -		xenconfig/xenxs_private.h			\
> -		xenconfig/xen_common.c xenconfig/xen_common.h	\
> -		xenconfig/xen_sxpr.c xenconfig/xen_sxpr.h	\
> -		xenconfig/xen_xm.c xenconfig/xen_xm.h		\
> -		xenconfig/xen_xl.c xenconfig/xen_xl.h		\
> -		xenconfig/xen_xl_disk.h
> -
>  pkgdata_DATA =	cpu/cpu_map.xml
>  
>  EXTRA_DIST +=	$(pkgdata_DATA)
> @@ -1078,6 +1061,25 @@ libvirt_xenxldiskparser_la_CFLAGS = \
>  libvirt_xenxldiskparser_la_SOURCES = \
>  	$(XENXLDISKPARSER_SOURCES)
>  
> +AM_LFLAGS = -Pxl_disk_ --header-file=../$*.h
> +XENXLDISKPARSER_GENERATED = xenconfig/xen_xl_disk.c xenconfig/xen_xl_disk.h
> +BUILT_SOURCES += $(XENXLDISKPARSER_GENERATED)
> +EXTRA_DIST += $(XENXLDISKPARSER_GENERATED)
> +MAINTAINERCLEANFILES += $(XENXLDISKPARSER_GENERATED)
> +
> +XENXLDISKPARSER_SOURCES = xenconfig/xen_xl_disk.l
> +
> +$(XENXLDISKPARSER_GENERATED): $(XENXLDISKPARSER_SOURCES)
> +	$(SHELL) $(YLWRAP) $< lex.xl_disk_.c $@ -- $(LEXCOMPILE)
>   

Answering Daniel's question about the expansion of AM_LFLAGS, on my
system the whole ylwrap invocation expands to

/bin/sh ../build-aux/ylwrap xenconfig/xen_xl_disk.l lex.xl_disk_.c
xenconfig/xen_xl_disk.c -- flex -Pxl_disk_
--header-file=../xenconfig/xen_xl_disk.h

Regards,
Jim

> +
> +XENCONFIG_SOURCES =						\
> +		xenconfig/xenxs_private.h			\
> +		xenconfig/xen_common.c xenconfig/xen_common.h	\
> +		xenconfig/xen_sxpr.c xenconfig/xen_sxpr.h	\
> +		xenconfig/xen_xm.c xenconfig/xen_xm.h		\
> +		xenconfig/xen_xl.c xenconfig/xen_xl.h		\
> +		xenconfig/xen_xl_disk_i.h
> +
>  noinst_LTLIBRARIES += libvirt_xenconfig.la
>  libvirt_la_BUILT_LIBADD += libvirt_xenconfig.la
>  libvirt_xenconfig_la_CFLAGS = \
>   




More information about the libvir-list mailing list