Problems with ".if HAVE_GNOME" tests because of installation order

Alexander Nedotsukov bland at FreeBSD.org
Wed Jan 28 01:07:16 PST 2004


Alexander Leidinger wrote:

>On Tue, 27 Jan 2004 00:14:35 +0900
>Alexander Nedotsukov <bland at FreeBSD.org> wrote:
>
>  
>
>>Alexander,
>>
>>This is not gnome ports specific problem. Any port wich tries to guess
>>    
>>
>
>But Gnome is a prominent example and shares a lot more developer
>resources than a maintainer of one of those non-gnome ports may be able
>to get help from.
>
>  
>
>>it configuration in way ".if exists() xx_DEPENDS+=" have such flaw.
>>Situation can be resolved sometimes by adding WITHOUT_xx option if
>>    
>>
>
>It helps if you don't want such behavior, but in cases where you don't
>want the WITHOUT_x one, this isn't helpful.
>
>  
>
>>they supported by port (unfortunately this is not sysutils/cdrdao
>>case). The better way seems to use info stored in /var/db/pkg rather
>>than do recursive make wailk through ports tree but this I guess need
>>more than my pure speculation on subject :-)
>>    
>>
>
>I think a port should only depend on it's explicit dependencies, not on
>the implicit ones. This implies, that a port should register every
>dependency explicitly and shouldn't rely on implicit dependency
>registrations.
>  
>
You reading my mind :-)

>Did I overlooked a situation where this causes problems?
>  
>
This implicit dependencies comes from current ports build system.
I raised this question once before and bellow a recap of that.

Let's start from disadvantages:
    1. Explicit dependencies make maintainer life more difficult.
We will be required pay more attention to such dependencies. It's a bit 
easy to do in
case of GNU autoconfed stuff by carefull reading configure.{in,ac} 
files. But  there is
no 100% guaranee that those files complete. For other ports complete 
Makefiles
inspection will be required.
    2. Makefiles expected to bloat.
It's easy to explain in a sample. A lot of ports not do not include glib 
beacuse they
already include something wich depends on it. But nearly all of them 
make explicit use
of some g_* (ie. g_malloc/free).
    3. Switching over to new method will be extremly big and painful 
process.
In theory such change will affect most of ports. I can't imagine how 
such big task can
be done smooth in real life.

Advantages:
    1. Get rid of false dependencies in /var/db/pkg.
This was duscussed under the subject.
    2. Speed up of ports build framework.
I can count here on index and dependencies generation since they will 
not require
recurrent walk through all Makefiles involved.
    3. Shlib version bump processing simplified.
At the moment it's impossible to say what exactly need to be rebuild 
after port shlib
version bumped. Common practice to call for portupgrade -rf  in this 
case wich is far
from optimal in cost of human and cpu time.
    4. More clear pkg_info output.
+CONTENTS and +REQUIRED_BY will shrink/cleanup. And -r -R options
will show only explicit dependencies wich imho much more welcome to
see by user.
Old behaviour and/or more informative dependency tree view may be 
implemented.

My feeling about all above is 50/50. It's difficult to say that this 
idea is bad or
good. Perhaps more people involved in discussion give us better result?

All the best,
Alexander.

>Bye,
>Alexander.
>
>  
>



More information about the freebsd-gnome mailing list