2004-01-06 23:41:56

by Arkadiusz Miskiewicz

[permalink] [raw]
Subject: kernel buildsystem broken on RO medium

How to build external kernel modules using kernel buildsystem from RO medium?


make[1]: Entering directory `/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd'

Calling toplevel makefile of kernel source tree, which I believe is in
KDIR=/lib/modules/2.6.1/build
NOTE: please ignore warnings regarding overriding of SUBDIRS

/usr/bin/make -C /lib/modules/2.6.1/build
SUBDIRS=/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd modules
make[2]: Entering directory `/usr/src/linux-2.6.1'
HOSTCC scripts/modpost.o
cc1: Permission denied: opening dependency file scripts/.modpost.o.d
make[3]: *** [scripts/modpost.o] Error 1
make[2]: *** [scripts] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.1'
make[1]: *** [kbuild] Error 2
make[1]: Leaving directory `/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd'


Are there any patches that fix this part of build system (if I remember
correctly someone created such patch but I didn't find it)?

--
Arkadiusz Mi?kiewicz CS at FoE, Wroclaw University of Technology
arekm.pld-linux.org AM2-6BONE, 1024/3DB19BBD, arekm(at)ircnet, PLD/Linux


2004-01-07 06:04:05

by Sam Ravnborg

[permalink] [raw]
Subject: Re: kernel buildsystem broken on RO medium

On Wed, Jan 07, 2004 at 12:41:41AM +0100, Arkadiusz Miskiewicz wrote:
> How to build external kernel modules using kernel buildsystem from RO medium?
>
>
> make[1]: Entering directory `/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd'
>
> Calling toplevel makefile of kernel source tree, which I believe is in
> KDIR=/lib/modules/2.6.1/build
> NOTE: please ignore warnings regarding overriding of SUBDIRS
>
> /usr/bin/make -C /lib/modules/2.6.1/build
> SUBDIRS=/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd modules

Use the O= option to specify a separate output directory,
where you have RW permissions.

Sam

2004-01-07 08:51:50

by Arkadiusz Miskiewicz

[permalink] [raw]
Subject: Re: kernel buildsystem broken on RO medium

On Wednesday 07 of January 2004 07:16, Sam Ravnborg wrote:
> On Wed, Jan 07, 2004 at 12:41:41AM +0100, Arkadiusz Miskiewicz wrote:
> > How to build external kernel modules using kernel buildsystem from RO
> > medium?
> >
> >
> > make[1]: Entering directory
> > `/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd'
> >
> > Calling toplevel makefile of kernel source tree, which I believe is
> > in KDIR=/lib/modules/2.6.1/build
> > NOTE: please ignore warnings regarding overriding of SUBDIRS
> >
> > /usr/bin/make -C /lib/modules/2.6.1/build
> > SUBDIRS=/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd modules
>
> Use the O= option to specify a separate output directory,
> where you have RW permissions.
I forgot to write that O= option doesn't work too good:
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ make -C /lib/modules/2.6.1/build SUBDIRS=`pwd` modules O=`pwd`/tmp
make: Entering directory `/usr/src/linux-2.6.1'
/usr/src/linux-2.6.1/Makefile:391: .config: No such file or directory

The present kernel configuration has modules disabled.
Type 'make config' and enable loadable module support.
Then build a kernel with module support enabled.

make[1]: *** [modules] Error 1
make: *** [modules] Error 2
make: Leaving directory `/usr/src/linux-2.6.1'
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ ls -l /usr/src/linux-2.6.1/.config
-rw-r--r-- 1 root root 47918 Jan 5 18:31 /usr/src/linux-2.6.1/.config
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ cp /usr/src/linux-2.6.1/.config ./tmp/
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ make -C /lib/modules/2.6.1/build SUBDIRS=`pwd` modules O=`pwd`/tmp
make: Entering directory `/usr/src/linux-2.6.1'
Using /usr/src/linux-2.6.1 as source for kernel
/usr/src/linux-2.6.1 is not clean, please run 'make mrproper'
in the '/usr/src/linux-2.6.1' directory.
make[1]: *** [prepare1] Error 1
make: *** [modules] Error 2
make: Leaving directory `/usr/src/linux-2.6.1'

and /usr/src/linux-2.6.1 is read-only.

But let's try:
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ sudo make -C /usr/src/linux-2.6.1/ mrproper
Could not retrieve tty information.
make: Entering directory `/usr/src/linux-2.6.1'
RM $(CLEAN_FILES)
Making mrproper in the srctree
RM $(MRPROPER_DIRS) + $(MRPROPER_FILES)
make: Leaving directory `/usr/src/linux-2.6.1'
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ make -C /lib/modules/2.6.1/build SUBDIRS=`pwd` modules O=`pwd`/tmp

Wow now works but tell me, how to do make mrproper if /usr/src/linux-2.6.1 is really read-only?
I'm asking because I want to build rpms with kernel modules from non-root and root can have
non-mrproper state in /usr/src/linux-2.6.1.

> Sam

--
Arkadiusz Mi?kiewicz CS at FoE, Wroclaw University of Technology
arekm.pld-linux.org AM2-6BONE, 1024/3DB19BBD, arekm(at)ircnet, PLD/Linux

2004-01-07 20:31:14

by Sam Ravnborg

[permalink] [raw]
Subject: Re: kernel buildsystem broken on RO medium

> Wow now works but tell me, how to do make mrproper if /usr/src/linux-2.6.1 is really read-only?
> I'm asking because I want to build rpms with kernel modules from non-root and root can have
> non-mrproper state in /usr/src/linux-2.6.1.

There is no way to do this, other than take a copy of the SRC.
It was not possible to let kbuild support building a kernel when the kernel
tree contained generated files.
I do not remember the details, but the main issue was with generated .c
files. If a generated .c file were present in the kernel src, it would
not be generated aging in the separate output directory.
Usually this is not too much of a big deal, but it could result in potential
erros later on.
There were also problems with _shipped support and generated .h files,
but I do not recall the details.

In the 2.7 timeframe I plan to be a bit more restrictive on use of -I
directive to gcc, hereby hopefully enabling more consistent behaviour
all over the kernel.

Sam