Re: kbuild: global makefile and spaces in path

Michal Marek
2016-02-08T20:03:03Z

Dne 5.2.2016 v 22:30 Robert Jarzmik napsal(a):
> Robert Jarzmik <robert.jarzmik@free.fr> writes:
>
>> Michal Marek <mmarek@suse.com> writes:
>>
>>> On 2015-12-21 21:49, Robert Jarzmik wrote:
>>>> Hi Michal,
>>>>
>>>> I compiled my kernel in a directory /home/robert jarzmik/kernel, and that's the
>>>> first time I encountered a space in the path containing my kernel in years.
>>>>
>>>> I was wondering if there is a known constraint that the linux kernel source
>>>> should be contained within a path without any space ?
>>> Whitespace and colons are problematic.
>> Ok.
>>
>>>> If no such constraint is known, maybe you could consider the patch in [1].
>>> I expect it is going to break in lot more places, especially if you do
>>> an O= build. I think it's better to just check for this and error out early.
>> Ok, I'll try to do that. Let's see if the patch at the end of this mail is what
>> you're expecting.
>>
>> Cheers.
>>
>> --
>> Robert
>>
>> ---8<---
>> From 68bcedba135cc50254a234a949ed5cd3b4e92b7a Mon Sep 17 00:00:00 2001
>> From: Robert Jarzmik <robert.jarzmik@free.fr>
>> Date: Thu, 7 Jan 2016 22:39:51 +0100
>> Subject: [PATCH] kbuild: forbid kernel directory to contain spaces
>>
>> When the kernel path contains a space somewhere in the path name, the
>> modules_install target doesn't work anymore, as the path names are not
>> enclosed in double quotes. It is also supposed that and O= build will
>> suffer from the same weakness as modules_install.
>>
>> Instead of checking and improving kbuild to resist to directories
>> including spaces, error out early to prevent any build if the kernel's
>> main directory contains a space.
>>
>> Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
>> ---
>> Makefile | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/Makefile b/Makefile
>> index 45ec34644b4f..72e9b7371b0d 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -128,6 +128,10 @@ _all:
>> # Cancel implicit rules on top Makefile
>> $(CURDIR)/Makefile Makefile: ;
>>
>> +ifneq ($(words $(CURDIR)),1)
>> + $(error main directory cannot contain spaces)
>> +endif
>> +
>> ifneq ($(KBUILD_OUTPUT),)
>> # Invoke a second make in the output directory, passing relevant variables
>> # check that the output directory actually exists
>
> Hi Michal,
>
> Have you had the time to look at the patch above ?

Hi Robert,

sorry for the delay. We should also check for colons in path, because
they break the build in a similar way.

Michal