I'm replying to this one, but I've read the whole thread...
On 3/16/06, Paul de Vrieze <[EMAIL PROTECTED]> wrote: > On Wednesday 15 March 2006 16:13, Gustavo Sverzut Barbieri wrote: > > Hello, > > > > There is any provision for binary dependency on Gentoo/Portage? The > > way it works now is quite messy with things like revdep-rebuild. > > > > I have an idea to "solve" this problem: after software is build, you > > check which files it links (ldd binaries libraries) and check the used > > against installed packages. If a library is not provided by an > > installed package we could have a policy to inform user or just abort > > installation. > > > > Also, if we implement these dependencies in rpm-generator, we could > > just generate RPM packages and install it in the RPM-DB and let it > > handle these kind of things. > > > > With these in place emerge would handle the build stage (where it > > excels), but rpm would handle the binary installation and dependencies > > (where it excels). > > Solving this is not trivial. Basically suppose application X depends on > sys-libs/db-4.* > > This can be resolved by differently slotted libraries. We need to record > which one was actually used (not easy by itself, but more an issue of the > ebuild itself, if more than 1 candidate is available). But suppose that > we know that the application was compiled to use db-4.3.29. We must then > know that it is ok to replace the db-4.3.29 package with 4.3.30, but that > it isn't ok to replace it by 4.3.28 or 4.4.20. > > To make this things worse, the above example assumes that within a slot, > the libraries are binary compatible. There are examples of libraries that > are not. And what about a library whose interface is dependent on a third > library: B uses A, C uses B, but B exports A. So B is dependent on A, and > the binary package of C must record that B was compiled with A. > > In short, welcome to binary package hell. This is the reason that binary > distributions must use versions. Even debian. It is just very very hard > to fix these kinds of indirect dependencies. I do think you're overcomplicating things where you shouldn't. Declaring stuff manually will always break, and to ensure a safe system, it's better to use compiler information. So I wouldn't mind fixing it to one package instead of a slot. I mean, if user compiled software X-1.0 and it depends on library Y-2.0, provided at the moment of X-1.0 compilation by package Z-3.0, then make X-1.0 depend on Z-3.0. If you were to remove Z-3.0 or upgrade it or even add other option by means of USE, have X-1.0 to be recompiled too... you could be even more correct to make it check CFLAGS too. Of course this correctness could piss users, then you could have a --nodeps or something like that to avoid this and use the old behaviour. -- Gustavo Sverzut Barbieri -------------------------------------- Jabber: [EMAIL PROTECTED] MSN: [EMAIL PROTECTED] ICQ#: 17249123 Skype: gsbarbieri Mobile: +55 (81) 9927 0010 Phone: +1 (347) 624 6296; [EMAIL PROTECTED] GPG: 0xB640E1A2 @ wwwkeys.pgp.net -- gentoo-portage-dev@gentoo.org mailing list