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

Reply via email to