Messages in this thread | | | Date | Fri, 24 Oct 2008 17:13:40 +0400 | From | Alexey Dobriyan <> | Subject | Re: Linux 2.6.28-rc1 |
| |
On Fri, Oct 24, 2008 at 01:52:45PM +0100, Alistair John Strachan wrote: > On Friday 24 October 2008 12:45:04 Rafael J. Wysocki wrote: > > On Friday, 24 of October 2008, Alistair John Strachan wrote: > > > On Friday 24 October 2008 05:10:29 Linus Torvalds wrote: > > > > It's been two weeks, so it's time to close the merge window. A > > > > 2.6.28-rc1 is out there, and it's hopefully all good. > > > > > > It seems if you have a broken asm/ symlink in include/ (which happened as > > > a result of the x86 header moves, for me) the kernel won't try to update > > > it appropriately, and this breaks "make prepare". > > > > > > $ make ARCH=x86_64 prepare > > > CHK include/linux/version.h > > > CHK include/linux/utsrelease.h > > > GEN include/asm/asm-offsets.h > > > /bin/sh: include/asm/asm-offsets.h: No such file or directory > > > make[1]: *** [include/asm/asm-offsets.h] Error 1 > > > make: *** [prepare0] Error 2 > > > > > > rm -f include/asm fixes it > > > > > > This was just from taking a 2.6.27 tree, git clean -d -f, git pull, make > > > oldconfig. Might be a nice thing to fix? > > > > Hm, I didn't have any problems with compiling .28-rc1 on x86_64. > > > > [Confused.] > > This should reproduce it (whether or not it's a use-case we care about is > another matter). First, make sure your include/asm symlink has been removed, > then execute the following sequence: > > git reset --hard v2.6.27 ; git clean -d -f > git status ("Nothing to commit") > > cp /path/to/config .config > make oldconfig prepare > git clean -d -f ; git reset --hard > git status ("Nothing to commit") > > Observe at this point that include/asm is valid and points to include/asm-x86, > despite the clean and reset (I guess this file is being ignored). Now: > > git reset --hard v2.6.28-rc1 (Or whatever other method you might choose) > git clean -d -f (Removes include/asm-x86) > > Observe at this point that include/asm is now invalid, and still points to the > removed include/asm-x86 directory. > > cp /path/to/config .config > make oldconfig prepare > > Should fail at this point: > > scripts/kconfig/conf -o arch/x86/Kconfig > # > # configuration written to .config > # > scripts/kconfig/conf -s arch/x86/Kconfig > CHK include/linux/version.h > UPD include/linux/version.h > CHK include/linux/utsrelease.h > UPD include/linux/utsrelease.h > CC kernel/bounds.s > GEN include/linux/bounds.h > CC arch/x86/kernel/asm-offsets.s > GEN include/asm/asm-offsets.h > /bin/sh: include/asm/asm-offsets.h: No such file or directory > make[2]: *** [include/asm/asm-offsets.h] Error 1 > make[1]: *** [prepare0] Error 2 > make: *** [prepare] Error 2 > > Can you confirm? > > I checked out Makefile and I believe it occurs because the current checks only > make sure a symlink exists, and if it does exist that its target matches up > with the selected architecture. It doesn't actually check the destination of > the symlink is valid. > > I'd suggest that it should do that too, and if the destination doesn't exist, > re-write the symlink when it does "mkdir include/asm-x86" further down, but > I'm not a kbuild expert.
Use this script for super-clean project-agnostic clean:
$ cat ~/bin/git-mrproper #!/bin/sh git-ls-files -o --directory -z | xargs -0 rm -rf
I'd say nothing should be done here, include/asm symlink autochange because of different ARCH was unsupported due to it being "big" event, and headers move is equally "big" event.
| |