ccontrol bust in Debian Unstable
Tony Breeds
tony at bakeyournoodle.com
Wed Sep 13 14:02:50 EST 2006
On Tue, Sep 12, 2006 at 02:44:53PM -0500, Michael Neuling wrote:
> Hey,
>
> It seems ccontrol in Debian unstable is bust when compiling the Linux
> kernel with the 'O=' option.
>
> Compiling 2.6.17 for PowerPC on PowerPC with:
>
> mkdir test
> make O=test pseries_defconfig
> make O=test vmlinux
>
> Eventually you get.
>
> make[2]: Entering directory `/home/mikey/kernel/linux-2.6.17/test'
> /home/mikey/kernel/linux-2.6.17/scripts/Makefile.build:13: scripts/Kbuild.include: No such file or directory
> /home/mikey/kernel/linux-2.6.17/scripts/Makefile.build:19: scripts/Makefile.lib: No such file or directory
> make[2]: *** No rule to make target `scripts/Makefile.lib'. Stop.
> make[2]: Leaving directory `/home/mikey/kernel/linux-2.6.17/test'
> make[1]: *** [.tmp_vmlinux1] Error 2
> make[1]: Leaving directory `/home/mikey/kernel/linux-2.6.17/test'
> make: *** [vmlinux] Error 2
>
> The current tar ball or mercurial tree doesn't do this.
>
> Anyone want to take a look at this?
I can trigger it with the current mercurial tip on x86, with a current
git tree.
make O=/scratch/git clean
make O=/scratch/git allnoconfig
make O=/scratch/git
...
/home/tony/projects/kernel/linux-2.6/scripts/Makefile.build:14: scripts/Kbuild.include: No such file or directory
/home/tony/projects/kernel/linux-2.6/scripts/Makefile.build:20: scripts/Makefile.lib: No such file or directory
The line number are diffeent as I added:
fubar := $(shell printenv > /tmp/env) to scripts/Makefile.build
It fails with ccontrol but works otherwise. Looking at an strace of
the working make I see:
---
22219 getcwd("/scratch/git", 4096) = 13
22219 stat64("/home/tony/projects/kernel/linux-2.6", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
22219 stat64("/usr/include", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
22219 stat64("/usr/gnu/include", 0xafd09d9c) = -1 ENOENT (No such file or directory)
22219 stat64("/usr/local/include", {st_mode=S_IFDIR|S_ISGID|0775, st_size=4096, ...}) = 0
22219 stat64("/usr/include", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
...
22219 open("scripts/Kbuild.include", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
22219 open("/home/tony/projects/kernel/linux-2.6/scripts/Kbuild.include", O_RDONLY|O_LARGEFILE) = 4
---
Comparing that to the ccontrol case I see:
---
14668 getcwd("/scratch/git", 4096) = 13
14668 stat64("/usr/include", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
14668 stat64("/usr/gnu/include", 0xafc36cdc) = -1 ENOENT (No such file or directory)
14668 stat64("/usr/local/include", {st_mode=S_IFDIR|S_ISGID|0775, st_size=4096, ...}) = 0
14668 stat64("/usr/include", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
...
14668 open("scripts/Kbuild.include", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
14668 open("/usr/include/scripts/Kbuild.include", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
14668 open("/usr/local/include/scripts/Kbuild.include", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
14668 open("/usr/include/scripts/Kbuild.include", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
---
The Makefile include path is passed to make via MFLAGS/MAKEFLAGS, somehow it's getting
clobbered or ignored when make is exec'd from ccontrol.
How this is happening I have no idea, hope this helps someone track down the problem.
Yours Tony
linux.conf.au http://linux.conf.au/ || http://lca2007.linux.org.au/
Jan 15-20 2007 The Australian Linux Technical Conference!
More information about the ccontrol
mailing list