[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: "make clean" after "git pull" runs configure before cleaning.
From: |
Rob Landley |
Subject: |
Re: "make clean" after "git pull" runs configure before cleaning. |
Date: |
Fri, 15 Nov 2024 15:15:20 -0600 |
User-agent: |
Mozilla Thunderbird |
On 11/14/24 17:33, Paolo Bonzini wrote:
On 11/15/24 00:10, Rob Landley wrote:
Seems a _bit_ awkward to do that (and potentially fail on a random new
dependency) just to delete it all again?
That's just how Make works.
Linux and busybox and so on use make, and I've never seen "make clean"
trigger a "make defconfig" there.
(Or do you mean "Make" is different from "gmake" the way "kbuild" is
different from "make" and you distinguish your build system from the
make command by capitalizing it? Alas the last time I understood
everything qemu was doing was probably 2008, pace of change got too fast
sometime after dyngen was replaced by tcg...)
If it finds that Makefile is old, it first
regenerates Makefile and only then looks at the target.
I'm pretty sure the make command doesn't internally know how to run the
configure script, the Makefile would have to include plumbing to make
that decision, and it at least LOOKS like it's trying not to in the top
level Makefile line 336:
# Don't try to regenerate Makefile or configure
# We don't generate any of them
Makefile: ;
configure: ;
I note that if you run "make clean" twice in a row, it doesn't re-run
configure in between. It's only when a stale target exists, which seems
to involve dependencies making a decision. (The file NOT existing
doesn't trigger action, but the file being "old" does.)
See "How
Makefiles Are Remade" in GNU Make's manual:
I've read it, albeit not recently. (I have a probably post-1.0 todo item
to write a gmake compatible make for toybox, long story.)
"After reading in all
makefiles 'make' will consider each as a goal target, in the order in
which they were processed, and attempt to update it. [...] After all
makefiles have been checked, if any have actually been changed, 'make'
starts with a clean slate and reads all the makefiles over again".
So it's an artifact of the way you're using make, and hard to fix then?
*shrug* I'd use 'git clean -fdx' instead but I'm not sure how that
interacts with multiple submodules.
And I dunno what it's saying about the meson version
QEMU bundles a copy of Meson because it needs a very new one.
Ok.
Paolo
Rob