2008-03-29 18:19:33

by Stefan Hellermann

[permalink] [raw]
Subject: make O=dir fails with current git

Hi,

I'm using "make O=machinename" for building different kernels from one tree. About 15 days
ago it was okay, with current git it fails:
$ make O=client1
scripts/kconfig/conf -s arch/x86/Kconfig
Using /srv/devel/kernel as source for kernel
/srv/devel/kernel is not clean, please run 'make mrproper'
in the '/srv/devel/kernel' directory.
make[1]: *** [prepare3] Error 1
make: *** [sub-make] Error 2

running "make mrproper" (without O=dir) doesn't help.
I've not changed anything, I only made a "git-pull".
Now I'm at home, tried "mkdir test; make O=test defconfig all" with current git-head, it
doesn't work too.

Stefan


2008-03-31 18:00:10

by Sam Ravnborg

[permalink] [raw]
Subject: Re: make O=dir fails with current git

On Sat, Mar 29, 2008 at 07:19:21PM +0100, Stefan Hellermann wrote:
> Hi,
>
> I'm using "make O=machinename" for building different kernels from one tree. About 15 days
> ago it was okay, with current git it fails:
> $ make O=client1
> scripts/kconfig/conf -s arch/x86/Kconfig
> Using /srv/devel/kernel as source for kernel
> /srv/devel/kernel is not clean, please run 'make mrproper'
> in the '/srv/devel/kernel' directory.
> make[1]: *** [prepare3] Error 1
> make: *** [sub-make] Error 2
>
> running "make mrproper" (without O=dir) doesn't help.
> I've not changed anything, I only made a "git-pull".
> Now I'm at home, tried "mkdir test; make O=test defconfig all" with current git-head, it
> doesn't work too.

I tried to reproduce this here without luck.
The tests performed by kbuild to dertermine if the
source directory is clean are very basic.
If the file .config exist or the directory
include/config exists then the source tree is considered clean.
Otherwise you get the above message.

Can you please try to run: make mrproper
and then manually check if the .config file
or the include/config directory exists.

If they exists after make mrproper then
check your permissions.

In any case let me know the result.

Sam

2008-03-31 18:35:42

by Randy Dunlap

[permalink] [raw]
Subject: Re: make O=dir fails with current git

On Mon, 31 Mar 2008 20:00:22 +0200 Sam Ravnborg wrote:

> On Sat, Mar 29, 2008 at 07:19:21PM +0100, Stefan Hellermann wrote:
> > Hi,
> >
> > I'm using "make O=machinename" for building different kernels from one tree. About 15 days
> > ago it was okay, with current git it fails:
> > $ make O=client1
> > scripts/kconfig/conf -s arch/x86/Kconfig
> > Using /srv/devel/kernel as source for kernel
> > /srv/devel/kernel is not clean, please run 'make mrproper'
> > in the '/srv/devel/kernel' directory.
> > make[1]: *** [prepare3] Error 1
> > make: *** [sub-make] Error 2
> >
> > running "make mrproper" (without O=dir) doesn't help.
> > I've not changed anything, I only made a "git-pull".
> > Now I'm at home, tried "mkdir test; make O=test defconfig all" with current git-head, it
> > doesn't work too.
>
> I tried to reproduce this here without luck.
> The tests performed by kbuild to dertermine if the
> source directory is clean are very basic.
> If the file .config exist or the directory
> include/config exists then the source tree is considered clean.
> Otherwise you get the above message.
>
> Can you please try to run: make mrproper
> and then manually check if the .config file
> or the include/config directory exists.
>
> If they exists after make mrproper then
> check your permissions.
>
> In any case let me know the result.

I have no trouble reproducing it.

mkdir X64
make O=X64 ARCH=x86_64 defconfig all

and it prints:
make[2]: Nothing to be done for `/tester/linsrc/linux-2.6.25-rc7-git6/Makefile'.
make[1]: Nothing to be done for `all'.

before it does the defconfig part.

There is no $topdir/.config or $topdir/include/config.
Those do exist in the O=X64 directory, however.

---
~Randy

2008-03-31 18:38:30

by Stefan Hellermann

[permalink] [raw]
Subject: Re: make O=dir fails with current git

Sam Ravnborg schrieb:
> On Sat, Mar 29, 2008 at 07:19:21PM +0100, Stefan Hellermann wrote:
>> Hi,
>>
>> I'm using "make O=machinename" for building different kernels from one tree. About 15 days
>> ago it was okay, with current git it fails:
>> $ make O=client1
>> scripts/kconfig/conf -s arch/x86/Kconfig
>> Using /srv/devel/kernel as source for kernel
>> /srv/devel/kernel is not clean, please run 'make mrproper'
>> in the '/srv/devel/kernel' directory.
>> make[1]: *** [prepare3] Error 1
>> make: *** [sub-make] Error 2
>>
>> running "make mrproper" (without O=dir) doesn't help.
>> I've not changed anything, I only made a "git-pull".
>> Now I'm at home, tried "mkdir test; make O=test defconfig all" with current git-head, it
>> doesn't work too.
>
> I tried to reproduce this here without luck.
> The tests performed by kbuild to dertermine if the
> source directory is clean are very basic.
> If the file .config exist or the directory
> include/config exists then the source tree is considered clean.
> Otherwise you get the above message.

Hi, damn, it's that easy!
It was the .config file, I added (as root) a symlink to dir/.config to let some other
application check if some Kernel-options are set, then the permissions of this symlink
prevented make mrproper from removing it.

For what purpose is this check? I can't point the other application to kerneldir/dir
because it also greps in kerneldir/Makefile for the kernel-version.

Thanks
Stefan

>
> Can you please try to run: make mrproper
> and then manually check if the .config file
> or the include/config directory exists.
>
> If they exists after make mrproper then
> check your permissions.
>
> In any case let me know the result.
>
> Sam

2008-03-31 18:42:34

by Sam Ravnborg

[permalink] [raw]
Subject: Re: make O=dir fails with current git

On Mon, Mar 31, 2008 at 08:26:49PM +0200, Stefan Hellermann wrote:
> Sam Ravnborg schrieb:
> > On Sat, Mar 29, 2008 at 07:19:21PM +0100, Stefan Hellermann wrote:
> >> Hi,
> >>
> >> I'm using "make O=machinename" for building different kernels from one tree. About 15 days
> >> ago it was okay, with current git it fails:
> >> $ make O=client1
> >> scripts/kconfig/conf -s arch/x86/Kconfig
> >> Using /srv/devel/kernel as source for kernel
> >> /srv/devel/kernel is not clean, please run 'make mrproper'
> >> in the '/srv/devel/kernel' directory.
> >> make[1]: *** [prepare3] Error 1
> >> make: *** [sub-make] Error 2
> >>
> >> running "make mrproper" (without O=dir) doesn't help.
> >> I've not changed anything, I only made a "git-pull".
> >> Now I'm at home, tried "mkdir test; make O=test defconfig all" with current git-head, it
> >> doesn't work too.
> >
> > I tried to reproduce this here without luck.
> > The tests performed by kbuild to dertermine if the
> > source directory is clean are very basic.
> > If the file .config exist or the directory
> > include/config exists then the source tree is considered clean.
> > Otherwise you get the above message.
>
> Hi, damn, it's that easy!
> It was the .config file, I added (as root) a symlink to dir/.config to let some other
> application check if some Kernel-options are set, then the permissions of this symlink
> prevented make mrproper from removing it.
>
> For what purpose is this check?
The O= build will use the wrong files if the source tree is not clean.
There are several special cases which goes wrong under the wrong circumstances
and therefore this consistency check.

> I can't point the other application to kerneldir/dir
> because it also greps in kerneldir/Makefile for the kernel-version.
They could use:
make kernelversion

and this could be used in the output directory too.

Sam