On Tue, 30 Sep 2003, David S. Miller wrote:
> I think they are the same. It's module building depending upon the
> kernel image being up to date.
> modules: vmlinux image
> ... blah blah blah
> or however you want to express it in the makefiles.
I strongly disagree with this. What the makefiles currently do is correct,
i.e. if you "make modules" you'll only get updated modules, you didn't ask
for an updated vmlinux, and so you don't get it. The module you get is
built correctly, i.e. you'd get the same result if you had rebuilt vmlinux
before, since the building of the module does not depend on a "correct"
vmlinux at all.
If in just about any project you type "make some_object.o", you don't
expect make to recompile and rebuild the rest of the project, either, you
ask it to 'make' something, and will build exactly that something and the
prerequisites necessary to get it right.
A sidenote is that if you are using modversions, building the modules
correctly needs versioning information from vmlinux, so in that case we
need vmlinux to be up-to-date. And that's why in this case vmlinux will be
rebuilt first (if something changed) - otherwise the modules you were
asking for wouldn't be correct. But the fact the you get an updated
vmlinux is just a side-effect, you didn't ask for it, and thus you can't
rely on it.
Think about the meaning of "make".
With respect to the actual discussion, my opinion is that it's desirable
to have the core kernel not change depending on whether or not something
is compiled modular, but I believe there are cases which justify an
exception, and IPv6 seems to be one of them. Modversions will catch this
and prevent the user from inserting the module and accidentally crash the
system, so I think it's all fine.