On Sat, Aug 22, 2020 at 07:04:33AM -0400, Walter Dnes wrote:
>   But libglvnd is still pulled in as a hard dependency...
> 
> [i3][root][~] emerge -pv --depclean media-libs/libglvnd
> 
> Calculating dependencies... done!
>   media-libs/libglvnd-1.3.2 pulled in by:
>     media-libs/mesa-20.0.8 requires 
> >=media-libs/libglvnd-1.2.0-r1[X,abi_x86_64(-)]
>     x11-base/xorg-server-1.20.8-r1 requires media-libs/libglvnd[X]
> 
>   If it's really a hard dependency, then why pretend in the ebuilds that
> it's optional?

You can't "pretend something in the ebuilds"; they are the literal  instructions
for the package manager. Consider the following line:

> media-libs/mesa-20.0.8 requires 
> >=media-libs/libglvnd-1.2.0-r1[X,abi_x86_64(-)]

Having a look at the ebuild for Mesa 20.0.8, we see the following in the RDEPEND
string:

        libglvnd? (
                >=media-libs/libglvnd-1.2.0-r1[X?,${MULTILIB_USEDEP}]
                !app-eselect/eselect-opengl
        )
        !libglvnd? (
                >=app-eselect/eselect-opengl-1.3.0
        )

"If `libglvnd` is set, require media-libs/libglvnd; if `X` is enabled for  Mesa,
require `X` on libglvnd; append the flags  set  in  MULTILIB_USEDEP;  and  block
eselect-opengl. Otherwise, mandate eselect-opengl.".

Thus, to install Mesa without libglvnd, you  just  need  eselect-opengl  version
1.3.0 or greater. Now consider the second package:

> x11-base/xorg-server-1.20.8-r1 requires media-libs/libglvnd[X]

Looking in the CDEPEND string of the relevant ebuild:
        
        libglvnd? (
                media-libs/libglvnd[X]
                !app-eselect/eselect-opengl
                !!x11-drivers/nvidia-drivers[-libglvnd(-)]
        )
        !libglvnd? ( >=app-eselect/eselect-opengl-1.3.0 )

Basically the same situation, except we  have  a  hard  blocker  on  the  NVidia
drivers without the `libglvnd` flag set (for  obvious  reasons).   (Since  2017,
Portage cannot automatically resolve hard blocks [1].)

        == But wait, there's more. ==

So yes, currently, you _could_ run X and Mesa without  libglvnd.   However,  you
probably shouldn't, because of the following entry in package.mask  made  a  few
weeks ago [2, 3]:

        # Matt Turner <matts...@gentoo.org> (2020-08-11)
        # Replaced by media-libs/libglvnd.
        # Masked for removal in 30 days. Bug #728286
        app-eselect/eselect-opengl

libglvnd has  now  obsoleted  eselect-opengl,  so  you  really  should  consider
switching as soon as possible, before eselect gets completely  purged  from  the
tree.  There is some argument about this (see the comments on [3]),  but  it  is
probably a step in the  right  direction  to  create  a  unified  interface  for
graphics drivers and hardware vendors [4].  The eselect  "solution"  for  OpenGL
implementations has always been quite messy and caused a lot of issues, so I  do
welcome this change [5].

        Hope this helps,
        Ashley.

[1] https://bugs.gentoo.org/250286
[2] https://gitweb.gentoo.org/repo/gentoo.git/tree/profiles/package.mask#n349
[3] https://bugs.gentoo.org/728286
[4] https://github.com/NVIDIA/libglvnd/blob/master/README.md
[5] https://bugs.gentoo.org/buglist.cgi?quicksearch=app-eselect%2Feselect-opengl

-- 

Ashley Dixon
suugaku.co.uk

2A9A 4117
DA96 D18A
8A7B B0D2
A30E BF25
F290 A8AA

Attachment: signature.asc
Description: PGP signature

Reply via email to