2008-02-10 18:51:39

by Jan Engelhardt

[permalink] [raw]
Subject: Faster way to run through building single modules

Hi,


I was wondering whether there is a shortcut in kbuild I can take if I
just want to rebuild one module. Currently, I have:

make net/bridge/netfilter/ebtables.ko

the modpost stage ("MODPOST 2018 modules") does quite a lot of disk I/O,
most of which I probably do not need anyway. Can this task be sped up?


2008-02-10 19:28:22

by Sam Ravnborg

[permalink] [raw]
Subject: Re: Faster way to run through building single modules

On Sun, Feb 10, 2008 at 07:51:29PM +0100, Jan Engelhardt wrote:
> Hi,
>
>
> I was wondering whether there is a shortcut in kbuild I can take if I
> just want to rebuild one module. Currently, I have:
>
> make net/bridge/netfilter/ebtables.ko

Fool kbuild to think this is an external module using:
make M=`pwd` net/bridge/netfilter/ebtables.ko

That should do the trick.

Sam

2008-02-10 19:38:31

by Jan Engelhardt

[permalink] [raw]
Subject: Re: Faster way to run through building single modules


On Feb 10 2008 20:28, Sam Ravnborg wrote:
>On Sun, Feb 10, 2008 at 07:51:29PM +0100, Jan Engelhardt wrote:
>>
>> I was wondering whether there is a shortcut in kbuild I can take if I
>> just want to rebuild one module. Currently, I have:
>>
>> make net/bridge/netfilter/ebtables.ko
>
>Fool kbuild to think this is an external module using:
>make M=`pwd` net/bridge/netfilter/ebtables.ko
>
>That should do the trick.

How would I combine that with O=? Not quite doing the right thing yet.

linux$ touch net/bridge/netfilter/ebtables.c
linux$ make O=/home/jengelh/Coding/linux-obj M=$PWD
net/bridge/netfilter/ebtables.ko

make[2]: Nothing to be done for `net/bridge/netfilter/ebtables.o'.
MODPOST 0 modules
CC arch/x86/kernel/asm-offsets.s
GEN /home/jengelh/Coding/linux_nosov/include/asm-x86/asm-offsets.h
Building modules, stage 2.
MODPOST 0 modules


And:

$ touch net/bridge/netfilter/ebtables.c
$ make O=... M=$PWD net/bridge/netfilter/ebtables.o
CC [M] /home/jengelh/Coding/linux_nosov/net/bridge/netfilter/ebtables.o
$ make O=... M=$PWD net/bridge/netfilter/ebtables.ko
make[2]: Nothing to be done for `net/bridge/netfilter/ebtables.o'.
MODPOST 0 modules

2008-02-10 19:55:46

by Sam Ravnborg

[permalink] [raw]
Subject: Re: Faster way to run through building single modules

On Sun, Feb 10, 2008 at 08:38:19PM +0100, Jan Engelhardt wrote:
>
> On Feb 10 2008 20:28, Sam Ravnborg wrote:
> >On Sun, Feb 10, 2008 at 07:51:29PM +0100, Jan Engelhardt wrote:
> >>
> >> I was wondering whether there is a shortcut in kbuild I can take if I
> >> just want to rebuild one module. Currently, I have:
> >>
> >> make net/bridge/netfilter/ebtables.ko
> >
> >Fool kbuild to think this is an external module using:
> >make M=`pwd` net/bridge/netfilter/ebtables.ko
> >
> >That should do the trick.
>
> How would I combine that with O=? Not quite doing the right thing yet.

O=tells where to find the kernel output files.
We do not have a possibility to do so for external
modules - so they will alwys build in same dir as the source.

Bad luck :-(

Sam

2008-03-11 19:39:43

by Jan Engelhardt

[permalink] [raw]
Subject: Re: Faster way to run through building single modules


On Feb 10 2008, Sam Ravnborg and Jan Engelhardt wrote:

>>>> I was wondering whether there is a shortcut in kbuild I can take if I
>>>> just want to rebuild one module. Currently, I have:
>>>>
>>>> make net/bridge/netfilter/ebtables.ko
>>>
>>>Fool kbuild to think this is an external module using:
>>>make M=`pwd` net/bridge/netfilter/ebtables.ko
>>>
>>>That should do the trick.
>>
>>How would I combine that with O=? Not quite doing the right thing yet.
>>
>>linux$ touch net/bridge/netfilter/ebtables.c
>>linux$ make O=/home/jengelh/Coding/linux-obj M=$PWD
>> net/bridge/netfilter/ebtables.ko
>
>O=tells where to find the kernel output files.
>We do not have a possibility to do so for external
>modules - so they will alwys build in same dir as the source.
>
>Bad luck :-(

I just noticed that with v2.6.25-rc3-302-g03923eb, running
make builds the final .ko really quick. Maybe there has been
some magic added that skips a lot of directories, but the
process certainly takes less than 120 seconds, so I am happy.

Previously, it seemed to have visited lots of directories
(even though we know make is not called recursively in 2.6)
before it printed "Building modules stage 2" for the first time.

Nice :)