From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: xen-unstable: build fails Date: Thu, 17 Mar 2011 09:59:54 +0100 Message-ID: <4D81CD8A.9050601@ts.fujitsu.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On 03/17/11 09:11, Keir Fraser wrote: > On 17/03/2011 05:52, "Juergen Gross" wrote: > >> The reason is clear: XEN_ROOT is set to a *relative* path. And when make is >> including a Makefile, it switches the working directory to the directory of >> the included Makefile. Including another Makefile via XEN_ROOT then is the >> problem... > > Well it's not clear to me. In my tests, including another Makefile does not > change the working directory, only recursive make with -C specified does > that. That seems logical -- pulling in standard rules containing wildcard > globs would otherwise have unpredictable results, if the wildcards were > evaluated in the directory of the included Makefile. > > In your case, if Config.mk was getting run with incorrect relative XEN_ROOT, > how would the earlier include lines in that file work? You are getting an > error on '-include $(XEN_ROOT)/.config', but there are earlier (and > unconditional!) include lines in Config.mk that also reference XEN_ROOT. I > suppose they must be working. > > So I think something is weird in your environment, or your make is broken. > However in this one specific failure case I can avoid redefining XEN_ROOT > outside xen/Makefile, since all hypervisor builds start at that Makefile. So > you can see whether c/s 23048 in xen-unstable staging fixes your build. I > applied it as it happens to be a teeny tiny cleanup as well. We are both right :-) I created /.config with: $(warning /.config: $(MAKEFILE_LIST)) and got the following with "make tools": make -C tools install make[1]: Entering directory `/root/xen-unstable.hg/tools' make[2]: Entering directory `/root/xen-unstable.hg/tools' make -C check install make[3]: Entering directory `/root/xen-unstable.hg/tools/check' ../../.config:1: /.config: Makefile ../../tools/Rules.mk ../../Config.mk ../../config/Linux.mk ../../config/StdGNU.mk ../../config/x86_64.mk /usr/include/../../.config So the problem is not changing the working directory, but implicit directory search. $(XEN_ROOT)/.config expands as ../../.config and this file was not found, so make searches in /usr/include, as the file path is relative. And /usr/include/../../.config results as /.config :-( The problem is still the relative XEN_ROOT specification. Or the missing .config under XEN_ROOT, so creating this file solves my problem. :-) Juergen -- Juergen Gross Principal Developer Operating Systems TSP ES&S SWE OS6 Telephone: +49 (0) 89 3222 2967 Fujitsu Technology Solutions e-mail: juergen.gross@ts.fujitsu.com Domagkstr. 28 Internet: ts.fujitsu.com D-80807 Muenchen Company details: ts.fujitsu.com/imprint.html