Dnia 2015-01-20, o godz. 09:13:19
Alexis Ballier <[email protected]> napisał(a):

> > For this reason, I would like to employ the solution used by Exherbo.
> > More specifically, use:
> > 
> >   libav? ( media-libs/libav:= )
> >   !libav? ( media-libs/ffmpeg:= )
> > 
> > This has two advantages:
> > 
> > 1. gives users more explicit control over whether they want to use
> > libav or ffmpeg. Since the two have mutual blockers, right now random
> > packages could have tried to force you to switch from one to the
> > other. However, most often Portage would just give you terribly
> > unreadable blockers.
> 
> This sounds good to me; there are a few things to consider though:
> 
> - Whatever default useflag is enabled, people will have "terribly
>   unreadable blockers" if they use the other implementation. It is even
>   worse if you want to follow upstreams in their preferred
>   implementation: some want libav, others ffmpeg...

It's no better than it is now. I don't see any obvious solution, except
maybe for fake flags that would shout loudly at users, like USE=libav
with matching pkg_pretend() telling to change the global flag. As I see
it, this problem has no solution unless we're going to make the two
co-installable.

> - This is hidden by the proposal but it enforces that a package has
>   equal visibility of both implementations (while the || requires only
>   one); libav tends to have a faster code cleaning rate and thus a
>   slower unmasking rate in gentoo. I agree with that requirement but
>   this might end-up being unpractical since this means packages
>   keywording and stabilization will have the slowest pace: mpv has been
>   masked for 4 months and counting for this reason.

It will *at least* make those issues explicit and visible to repoman.
Rather than discovered via users hitting impossible dep trees.

> - What to do with packages like mplayer that haven't been building
>   against libav for a year or so ?

I don't know. pkg_pretend() like suggested above?

> - ffmpeg dep is media-video/ffmpeg:0= (not media-libs but more
>   importantly the :0=)

Those were just proof-of-concept examples, I didn't take care to write
them correctly ;P.

> > 2. Subslots work correctly. Rebuilds are forced when the chosen
> > library is upgraded. Moreover, USE flag change causes a rebuild when
> > user decides to change the ffmpeg provider.
> 
> No offense, but this argument is complete crap. You should rather fix
> portage bugs than propose to introduce tree-wide changes to hide them...
> More precisely: || ( a:= b c:= d ) is perfectly defined (in the "what
> it means" sense, not in PMS sense). When the package is built, if 'a' is
> satisfied then a (and its subslot) is added to the subslot list of the
> package; ditto for c. You end up with a list of subslot deps, that you
> can store in vdb or whatever, and use that to decide when to rebuild
> the package.

Following a specification is not a bug. I could argue here a lot but...
just implement it. And return to us when you do. We had an item for
this for EAPI 6, and it was removed because nobody volunteered to
implement it. In fact, nobody even were able to fully specify what it
should do... but if you want to discuss that, please start a new
thread, possibly at the -pms list.

--
Best regards,
Michał Górny

Reply via email to