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