I think the ! dependency is currently a placeholder? Presently it doesnt enforce any sort of policy. Some examples are: virtual/mta and virtual/lpr
Geert, wanna give this one a shot as well?
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?
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 ;)
added to cvs