On 2014-07-09 11:25, Masahiro Yamada wrote: > Hi Michal, > > > On Wed, 09 Jul 2014 10:59:59 +0200 > Michal Marek <mmarek@xxxxxxx> wrote: > >> On 2014-07-09 08:27, Masahiro Yamada wrote: >>> Since commit 9da0763bd, the variable 'srctree' is set as follows: >>> >>> [1] Building in the source tree >>> => srctree is set to '.' >>> [2] Building in a subdir right under the source tree >>> => srctree is set to '..' >>> [3] Other cases >>> => srctree is set to the absolute path to the source tree >>> >>> Pros are more readable compiler messages, WARN_ON() etc. >>> for case [1] and [2]. (but not [3]) >>> >>> Cons are we have to do build-test for 3 cases when adding >>> some changes to the build infrastructure. >>> >>> We want to treat case [2] and [3] in the same way like prior to >>> commit 9da0763bd, keeping the compact log messages. >>> >>> The idea here is to create a symbolic link 'srctree' pointing >>> to $(KBUILD_SRC) at the very early stage of the build process. >> >> If the symlink points to an absolute path, then you can't move the >> source and build tree around anymore. > > > In which cases do we need to do this? Sorry for the late response. You might want to nfs-export the build and source tree and mount it on a different machine. Up to 3.16, one had to make sure that the paths match on both machines. 3.16 removes this limitation. > Anyway, even if we move the source and build tree around, > it is much faster to rebuild it. > > The point here is that the absolute paths do not appear > in .*.cmd files. If you either do not use O= or use O=<subdir>, then there won't be any absolute paths either. It could be extended to handle O=subdir1/subdir1/... if needed. > For example, > > $ make O=foo/bar defconfig all > [ full build ] > $ cd .. > $ mkdir baz > $ move linux baz > $ cd baz/linux > $ make O=foo/bar > [ much faster re-build ] I now noticed that the patch unconditionally recreates the symlink on every make O= invocation. While this nicely fixes the problem with moved build directory, it also means that a 'make O=... modules_install' ran as root will try to recreate the symlink. This will fail on nfs. So I'd rather keep the current logic with $(SRCTREE) containing either an absolute or relative path. Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html