From: Ion Badulescu <ionut@cs.columbia.edu>
To: Keith Owens <kaos@ocs.com.au>
Cc: linux-kernel@vger.kernel.org
Subject: Re: kbuild 2.5 is ready for inclusion in the 2.5 kernel
Date: Tue, 7 May 2002 19:48:48 -0400 [thread overview]
Message-ID: <200205072348.g47NmmU19152@buggy.badula.org> (raw)
In-Reply-To: <cs.lists.linux-kernel/18740.1020729269@ocs3.intra.ocs.com.au>
On Tue, 07 May 2002 09:54:29 +1000, Keith Owens <kaos@ocs.com.au> wrote:
> The documentation is correct, but incomplete. It is correct for an end
> user kernel build, i.e. for people who do not change the code or apply
> patches, they just configure the kernel and build it. It is incomplete
> for developers and for anybody who gets a patch and applies it.
So update the documentation if it's incomplete. Seriously.
This is more of the "world will come to an end if we don't adopt kbuild25
as-is" rhetoric...
> Add or delete #include in a source, add or delete a source,
Of course it's not nearly as bad as you make it appear. You're still
touching source code which will cause a recompile of that source code.
You have to make one of the changes above, compile, then change an
included header file _only_, then compile again, and only then the
missing dependency will create a problem.
> add or delete a config option and you must run make dep to
> ensure that the changes rebuild what is required.
"add or delete" as in "create/remove a CONFIG_FOO definition and make use
of it in the source code", or "select/unselect CONFIG_FOO in .config"?
If the former, again you need to make use of that definition somewhere
so you're changing source which will get recompiled. Only after making
a second round of changes you start running into missing dependencies.
As for removing CONFIG_FOO, you'll get missing dependencies if
include/config/foo.h disappears after make *config.
If the latter, I'm at a loss as to how the current system fails to
handle this correctly.
> Modversions are even
> worse, after any change that might affect an exported symbol or
> structure, you must make mrproper (not dep) to calculate and apply the
> new hashes to the entire kernel.
1. kbuild25 doesn't even support modversions yet
2. you are (almost) contradicting yourself. You've stated earlier that
modversions are irrelevant for a development kernel; in that case, they
are equally irrelevant for any kernel compiled by a developer.
3. you have control over modutils so you could easily make the
modversions mismatch case clearer by printing some helpful advise.
Something like "you have a modversions conflict between module XXX
and the kernel, you should recompile both by running this and that
command (make mrproper, whatever)".
> The default for kernel build must be a safe and accurate build.
Perhaps, but this is overkill. It's irrelevant for non-developers,
it's almost irrelevant for wannabe patch testers who can't read the
documentation, and it's getting in developers' way by slowing them
down unnecessarily:
$ time make -f Makefile-2.5 drivers/net/starfire.o
Using ARCH='i386' AS='as' LD='ld' CC='/usr/bin/kgcc' CPP='/usr/bin/kgcc -E' AR='ar' HOSTAS='as' HOSTLD='gcc' HOSTCC='gcc' HOSTAR='ar'
Generating global Makefile
phase 1 (find all inputs)
phase 2 (convert all Makefile.in files)
phase 3 (evaluate selections)
phase 4 (integrity checks, write global makefile)
Starting phase 5 (build) for drivers/net/starfire.o
Phase 5 complete for drivers/net/starfire.o
real 0m32.941s
user 0m30.940s
sys 0m1.640s
It takes 32 seconds to do nothing -- and this is a P4/1400...
$ time make -f Makefile-2.5 NO_MAKEFILE_GEN=1 drivers/net/starfire.o
Starting phase 5 (build) for drivers/net/starfire.o
Updating global makefile with last set of commands
Phase 5 complete for drivers/net/starfire.o
real 0m21.505s
user 0m17.800s
sys 0m0.280s
First run with NO_MAKEFILE_GEN=1 takes 21 seconds to do nothing... and
still insists on updating the global makefile.
$ time make -f Makefile-2.5 NO_MAKEFILE_GEN=1 drivers/net/starfire.o
Starting phase 5 (build) for drivers/net/starfire.o
Phase 5 complete for drivers/net/starfire.o
real 0m0.674s
user 0m0.390s
sys 0m0.280s
Second run is more acceptable.
I like the non-recursive make, and I like the ability to easily compile
only the target I need/want. So I won't even try to compare the times
with those for a 2.4-style build, it's like comparing apples and oranges.
However, 30+ seconds is *slow* no matter how you look at it.
If something like the current kbuild25 gets into the kernel, I'll end up
doing the same thing I'm currently for 2.4: running gcc by hand, with all
the required arguments. Surely it's no worse than 2.4, but it will have
had the opportunity to get better, and missed it...
At the very least, give me the option of create a
I_DONT_WANT_NO_STINKING_MAKEFILES_TO_BE_REGENERATED
file which does the equivalent of NO_MAKEFILE_GEN=1, preferrably without
the slowdown associated with the first run.
Also try to remember that solving 100% of the reported problems, at any
cost, is not necessarily a desirable goal. Many people here would be
happy to get only the more annoying ones fixed, and have reasonable
workarounds for the rest.
Don't get me wrong, there are many nice things in kbuild25 which I'd like
to see in the official tree. Makefile regeneration is not one of them,
though. Make a system that even a fool can use and only a fool will want
to use it...
Just MHO, of course.
---------------
Other minor things, not related to the discussion above:
- it would be nice if CFLAGS were also printed.
- I think looking for kgcc before gcc is a bad idea. If you really
want something like that, make it look for kgcc-2.5 instead.
Thanks,
Ion
--
It is better to keep your mouth shut and be thought a fool,
than to open it and remove all doubt.
next parent reply other threads:[~2002-05-07 23:48 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cs.lists.linux-kernel/18740.1020729269@ocs3.intra.ocs.com.au>
2002-05-07 23:48 ` Ion Badulescu [this message]
2002-05-08 0:10 ` Keith Owens
2002-05-08 0:37 ` Alan Cox
2002-05-08 0:34 ` Keith Owens
2002-05-05 16:42 Dan Kegel
2002-05-05 23:44 ` Keith Owens
2002-05-06 0:02 ` Dan Kegel
2002-05-06 0:40 ` Keith Owens
2002-05-06 15:38 ` Alan Cox
2002-05-06 15:33 ` Tomas Szepe
-- strict thread matches above, loose matches on Subject: below --
2002-05-01 14:23 Keith Owens
2002-05-02 15:17 ` Denis Vlasenko
2002-05-02 10:38 ` tomas szepe
2002-05-02 12:21 ` Keith Owens
2002-05-02 12:49 ` Martin Dalecki
2002-05-02 14:26 ` Alan Cox
2002-05-02 13:32 ` Martin Dalecki
2002-05-02 14:54 ` Kai Germaschewski
2002-05-02 15:17 ` Alan Cox
2002-05-05 9:43 ` Mike Fedyk
2002-05-05 10:16 ` Keith Owens
2002-05-02 15:21 ` Arjan van de Ven
2002-05-02 15:59 ` Richard Gooch
2002-05-02 15:36 ` Martin Dalecki
2002-05-02 17:15 ` Alan Cox
2002-05-02 16:30 ` Martin Dalecki
2002-05-02 18:20 ` Alan Cox
2002-05-02 17:25 ` Arjan van de Ven
2002-05-02 16:53 ` Martin Dalecki
2002-05-02 17:48 ` David S. Miller
2002-05-02 17:42 ` Martin Dalecki
2002-05-02 19:11 ` Alan Cox
2002-05-02 18:22 ` Martin Dalecki
2002-05-02 18:49 ` David S. Miller
2002-05-02 18:33 ` Alan Cox
2002-05-02 14:24 ` Kai Germaschewski
2002-05-02 15:18 ` David Woodhouse
2002-05-02 15:40 ` Kai Germaschewski
2002-05-02 23:40 ` Keith Owens
2002-05-02 23:25 ` Martin Dalecki
2002-05-03 14:48 ` Kai Germaschewski
2002-05-03 15:45 ` Keith Owens
2002-05-02 15:19 ` Alan Cox
2002-05-02 22:57 ` Pavel Machek
2002-05-03 8:33 ` Vikram
2002-05-03 12:07 ` Keith Owens
2002-05-18 1:14 ` Andrea Arcangeli
2002-05-18 1:33 ` Dave Jones
2002-05-18 3:06 ` Oliver Xymoron
2002-05-18 2:12 ` Gerhard Mack
2002-05-18 2:13 ` Keith Owens
2002-05-18 2:30 ` Andrea Arcangeli
2002-05-20 2:38 ` Miles Bader
2002-05-02 21:34 ` tomas szepe
2002-05-02 21:42 ` Dave Jones
2002-05-03 1:19 ` John Covici
2002-05-03 1:33 ` Keith Owens
2002-05-03 1:39 ` tomas szepe
2002-05-03 2:31 ` Alexander Viro
2002-05-03 3:21 ` Davide Libenzi
2002-05-02 21:42 ` Alexander Viro
2002-05-02 23:25 ` tomas szepe
2002-05-03 21:05 ` Mark H. Wood
2002-05-04 13:58 ` Kurt Wall
2002-05-06 1:54 ` Mike Fedyk
2002-05-02 22:54 ` Pavel Machek
2002-05-03 9:00 ` Keith Owens
2002-05-03 4:17 ` Randy.Dunlap
2002-05-03 5:02 ` Keith Owens
2002-05-03 6:32 ` Randy.Dunlap
2002-05-03 10:06 ` Gerd Knorr
2002-05-03 10:42 ` Keith Owens
2002-05-03 12:05 ` Gerd Knorr
2002-05-03 13:31 ` Keith Owens
2002-05-04 6:44 ` Paul Mackerras
2002-05-04 8:03 ` Paul Mackerras
2002-05-06 0:42 ` Mike Fedyk
2002-05-06 4:07 ` Paul Mackerras
2002-05-04 9:03 ` Keith Owens
2002-05-04 9:38 ` Russell King
2002-05-04 10:33 ` Paul Mackerras
2002-05-04 11:49 ` Keith Owens
2002-05-06 8:40 ` Gerd Knorr
2002-05-07 4:14 ` Keith Owens
2002-05-04 15:30 ` Richard Gooch
2002-05-05 17:23 ` Urban Widmark
2002-05-05 23:36 ` Keith Owens
2002-05-06 11:33 ` Urban Widmark
2002-05-06 23:54 ` Keith Owens
2002-05-06 10:54 ` Alex Riesen
2002-05-08 2:54 ` Keith Owens
2002-05-08 17:25 ` Alex Riesen
2002-05-09 0:10 ` Keith Owens
2002-05-09 0:55 ` Daniel Jacobowitz
2002-05-09 1:44 ` Keith Owens
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200205072348.g47NmmU19152@buggy.badula.org \
--to=ionut@cs.columbia.edu \
--cc=kaos@ocs.com.au \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®