Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 86

Summary: the ! dependency
Product: Portage Development Reporter: Donny Davies (RETIRED) <woodchip>
Component: UnclassifiedAssignee: Geert Bevin <gbevin>
Status: RESOLVED FIXED    
Severity: normal    
Priority: High    
Version: unspecified   
Hardware: x86   
OS: All   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 278, 282    

Description Donny Davies (RETIRED) gentoo-dev 2002-01-08 14:14:27 UTC
I think the ! dependency is currently a placeholder?  Presently it doesnt 
enforce any sort of policy.

Some examples are: virtual/mta and virtual/lpr
Comment 1 Daniel Robbins (RETIRED) gentoo-dev 2002-01-18 23:14:59 UTC
Geert, wanna give this one a shot as well?
Comment 2 Geert Bevin 2002-01-19 03:07:13 UTC
Ok, what is the definition of the !
and what is it supposed to enforce?
Negative dependency? I don't quite understand that in the context. Care to
explain briefly?
Comment 3 Donny Davies (RETIRED) gentoo-dev 2002-01-28 17:57:09 UTC
The ! dependency _could_ be very useful.  (the "not" dependency)

cups and lprng (this is just 1 example, there are others like virtual/mta) 
share several common files.  like /usr/bin/lpr.  there are many more.

so its either:
1) we butcher packages sharing common files.  for example mandrake installs 
some cups binaries as like /usr/bin/cups-lpr.  ridiculous imo.
2) we come up with some big old nasty conflicts system, where you have to list 
in the ebuild, every single other ebuild that conflicts with it.  this is a 
terrible idea imo.  what if 40 packages share the same files?
3) we implement a ! dependency.

Since the ! dependency is already IN portage, it was obviously thought to be a 
good idea.  But presently it doesnt actually DO anything.  Its just a 
placeholder. I suspect Daniel couldnt decide how to actually implement it.

The ! dependency is the way to go imo.  It makes things LIGHT YEARS easier for 
ebuild authors.  All you have to do is specifiy a ! dependency, and expect 
portage to take care of the rest.  

I suggest that if a ! dependency is satisfied, the executing ebuild should be 
aborted.  If somebody really wants to install two things that conflict, let 
them do it, someway, perhaps though ebuild (1).

If we force ebuild authors to make a list of every single package with which a 
given package conflicts, well, then thats just silly :)  Something more elegant 
is needed.  The ! depdency is fairly elegant, because its SIMPLE.

Whoever decides what to do with this, just keep it simple.  Otherwise things 
could get really ugly ;)
 
Comment 4 Geert Bevin 2002-02-04 08:44:00 UTC
added to cvs