[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: incremental make install
From: |
Warren Young |
Subject: |
Re: incremental make install |
Date: |
Thu, 22 Jan 2009 09:34:52 -0700 |
User-agent: |
Thunderbird 2.0.0.19 (Windows/20081209) |
Bob Rossi wrote:
I was wondering if there is an incremental make install command?
(my make install doesn't appear to be incremental, should it be?)
No, a Makefile's install target normally just contains a series of
commands for installing everything, without checking if it exists first.
If the install target depends on anything, it's usually basic
top-level targets like 'all'. There's no technology limit that prevents
us from making it incremental. All you'd have to do is write a rule for
every file that gets installed, and make the install target depend on
all of them. Tedious to do by hand, but automake is good at doing such
things for you.
I suspect the reason no one's done this is a combination of inertia,
friction, and lack of enough force to push us in that direction.
Inertia is that everyone's historically done it that way.
Friction is that even if automake adds this today, it's going to take
years to percolate through the community, decreasing the feature's
short-term value.
Lack of force is that there are good reasons not to do it:
- Install doesn't take very long, in any autoconfiscated package I've
seen. A tiny fraction of the build time, most of the time, so the
effort to make things incremental goes into the build parts. Just
because you *can* do something doesn't mean it makes sense to spend the
time to do it.
- Sometimes you re-run an install to fix something you broke. It might
be possible that an incremental re-install wouldn't fix it, where a
traditional one would. Yes, you can come up with all kinds of
technology to ensure that the two are equivalent, but you can't
seriously believe this will all happen on day 1. Until then, we end up
with a Windows-like mess: people saying you have to uninstall and then
reinstall to fix a broken install.
You might get the impression from the above that I'm against doing this.
I'm more just listing the reasons it hasn't been done yet, and reasons
that keep people from doing it now. If none of this matters to you, get
coding and provide a patch that does this.