cvs commit: ports/Mk bsd.port.mk
Alexander at Leidinger.net
Mon Aug 6 02:41:20 PDT 2007
Quoting Kris Kennaway <kris at obsecurity.org> (from Mon, 6 Aug 2007
> On Mon, Aug 06, 2007 at 07:43:18AM +0200, Alexander Leidinger wrote:
>> >>Not sure this can work reliably enough to be usefule at present, at
>> >> least for
>> >>the specific scenario of avoiding unnecessary recompilations. I think
>> >>are just too many ports with implicit dependencies, especially in the
>> >>KDE/GNOME domain.
>> That's a bug in those ports IMHO. And that's the reason why this
>> feature is not enabled by default.
>> >Yes. I'm not even convinced this feature is a good idea.
>> "Not a good idea" as in "is not usable yet" or as in "it should never
>> be the goal to be usable"? If it is the former, I agree (see above).
>> If it is the later please elaborate (having correct dependency
>> information should always be a good idea, I think the benefits are
>> obvious, aren't they?).
> Both: we're not there yet, and I don't see why this implementation is
> the best way to get there :) Did I miss your discussion of the
No, I thought it is obvious that a correct dependency information is a
- When you do sweeping changes or changes with a large impact (number
of ports), it is beneficial to have the real list of dependencies to
be able to know the correct dependency list. You don't want to waste
your time with ports which are listed as a implicit dependency but
are not really referenced in source/object files (the feature in
question is supposed to allow this). You also want to know about all
ports which depend directly upon it (this is where we are not ready
yet as not all ports list all explicit dependencies, an exp-build run
would tell about the critical ones, user reports after switching the
default would tell about edge-cases, some missing explicit
dependencies may perhaps not get reported at all if there's a strong
implicit relationship via an explicit dependency).
- Users which don't want packages but have to rebuild a lot of ports
(update of middleware ports) would not need as long to rebuild
the ports, as only the explicit dependencies need to be rebuild.
Imagine an update of libx11 which should be accompanied with an
update of everything which depends upon it. You don't really need
to rebuild all GNOME/KDE ports. In the current scheme one would
request a "portupgrade -rf libx11" or something to this effect and
it would rebuild a lot of ports which don't include any X11 includes
or link to X11 libs directly (you don't need to rebuild your
python or perl application which uses GNOME, you just need to update
gtk and some other middleware/critical ports).
- It may also motivate some people to work on some middleware ports
when they see that the explicit dependency list to a particular
port is relatively small (a huge number of ports which depend upon
a specific port may afraid people which would be willing to maintain
the port if there is a manageable amount of ports which depend upon
I was tempted to say it also decreases the amount of time for
incremental package builds, but as the package dependencies change
(meta data for the portversion or portrevision) all packages which
have a changed port in their implicit dependency list will change and
have to be rebuild. So it doesn't cut down the official builds, but at
least the development und "user-update" time.
Those are the most prominent benefits, maybe there are some more in
the meta-info department (maybe portsmon can use some of this info,
Regarding the negative aspects I can only come up with the opinion
that it makes it harder / is more work to create a port (it came up
some months/years before when explicit dependencies where discussed).
I question this opinion, as most of the time the dependencies are
listed somewhere for this software (readme/homepage/...). I also think
a good maintainer lists the explicit dependencies anyway (to not get
annoyed by pointyhat mails; and while you are at it, it is easier to
list all documented dependencies than to hunt down implicit
dependencies). Exceptions to this are very large "ports" like
GNOME/KDE (I take my hat off to the corresponding maintainers, you are
doing a great work in my opinion) where the dependency tree is huge
and the goal was to get it up and running completely (as of the
current way of registering implicit dependencies this is perfectly ok,
as it is not needed to do a cleanup of the dependency tree). But they
trade in work for the explicit dependency tree for testing work before
the next release of the mega-port to get a (more or less) smooth
update-experience for users. With an explicit dependency tree you can
let some automation tools like portupgrade/portmaster/exp-build/... do
the tedious work -> faster testing -> less total development time ->
faster turn-around time for updates.
Have I missed something? Kris, what technical reasons are against
explicit dependencies, in your opinion?
Love is sentimental measles.
http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
More information about the cvs-all