FS#60589 - [mesa] + libva/libvdpau(/vlc) more sensical optdeps

Attached to Project: Arch Linux
Opened by Tom Yan (tom.ty89) - Thursday, 25 October 2018, 22:05 GMT
Last edited by Buggy McBugFace (bugbot) - Saturday, 25 November 2023, 20:26 GMT
Task Type General Gripe
Category Packages: Extra
Status Closed
Assigned To Jan Alexander Steffens (heftig)
Laurent Carlier (lordheavy)
Felix Yan (felixonmars)
Maxime Gauduin (Alucryd)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 2
Private No


1. libva-mesa-driver should be an optdep of libva like libva-intel-driver
2. mesa-vdpau should be an optdep of libvdpau
3. both libva-mesa-driver and mesa-vdpau can be dropped from mesa's optdeps
4. libva-vdpau-driver should probably be dropped from libva's optdeps; we may even want to throw it out of our repo, together with libvdpau-va-gl
5. intel-media-driver should probably be added as an optdep of libva
6. No idea why vlc optdeps on libva-intel-driver and libva-vdpau-driver

Additional info:
* package version(s)
* config and/or log files etc.

Steps to reproduce:
This task depends upon

Closed by  Buggy McBugFace (bugbot)
Saturday, 25 November 2023, 20:26 GMT
Reason for closing:  Moved
Additional comments about closing:  https://gitlab.archlinux.org/archlinux/p ackaging/packages/mesa/issues/4
Comment by Emil (xexaxo) - Monday, 21 December 2020, 19:42 GMT
Fwiw your suggestion is something I've been trying to convince maintainers. One step at a time ;-)

None of the following is too radical or strange - opengl/es (thanks Laurent) and opencl - have been doing it for a while.

Individual steps prefix shows current status:
- Missing: Create a virtual driver package, one for each API: vaapi, vdpau
- Missing: For each API/frontend, add the respective optdepend of the virtual foo_driver
- Almost: Update API/frontend users to _not_ (opt)depend on the driver, but the API/frontend library
- Almost: No drivers depend() on the frontend. They all makedepend() on it.
- Optional: add a meta package for intel and amd akin to the nvidia one. It pulls all the respective vendor vaapi, vdpau, opengl/es, opencl drivers.
- Unrelated: libva-vdpau-driver and libvdpau-va-gl are unmaintained but working drivers. There is no reason to remove them for the time being
Comment by Maxime Gauduin (Alucryd) - Tuesday, 06 September 2022, 14:19 GMT
Added libva-mesa-drivers and removed libva-vdpau-driver to and from libva optdeps locally, intel-media-driver is already included. Will be shipped with the next libva release.
Comment by Sam Kirby (sam-kirby) - Tuesday, 06 September 2022, 16:01 GMT
Is libva-mesa-drivers an error (the current package is called libva-mesa-driver - no "s") or is there a new virtual package not yet available on the repos?
Comment by Maxime Gauduin (Alucryd) - Tuesday, 06 September 2022, 16:03 GMT
That's an error, fixing it now.
Comment by Laurent Carlier (lordheavy) - Sunday, 18 December 2022, 13:17 GMT
Please check mesa 22.3.1-2 in testing, i've added libva-driver and vdpau-driver 'provides' in their respective packages.
Comment by Emil (xexaxo) - Wednesday, 21 December 2022, 18:19 GMT
Thanks for the update Laurent. For the sake of clarity, here is an update of the outstanding (sub)tasks.
If you agree, making it a proper TODO under https://archlinux.org/todo/ is an option.

Happy to provide help - provide patches or otherwise.

vaapi, drivers - libva-vdpau-driver, libva-intel-driver, intel-media-driver, libva-mesa-driver
- all drivers but mesa - demote libva to makedepends, provides=(libva-driver)
Side note: the intel-media-driver is special on a number of levels, it seems to link against libva.so so we'll need to keep the "depends=libva" for the time being.
- libva - remove all drivers from optdepends, use optdepends=(libva-driver) instead
- vlc, kodi, ovenmediaengine, obs-studio, others(?) - remove all drivers from make/"hard"/opt depends, use depends=libva instead

vdpau, drivers - nvidia-utils, libvdpau-va-gl, mesa-vdpau
- all drivers but mesa - demote libvdpau to makedepends, provides=(vdpau-driver)
- libvdpau - add optdepends=(vdpau-driver)
Comment by Emil (xexaxo) - Wednesday, 21 June 2023, 14:55 GMT
Humble poke? As mentioned before I'm happy to help in any shape and form.
Comment by Marcos Mello (marcosfrm) - Tuesday, 27 June 2023, 18:25 GMT Comment by Emil (xexaxo) - Tuesday, 27 June 2023, 22:18 GMT
Sounds like we're conflating multiple unrelated things. I think each one should be its own bug:
- the unofficial nvidia driver from elFarto should probably be picked to community - vote on the AUR?
- aside: should probably finish my upstream MR for ^^
- libva-vdpau-driver being old/whatever - open separate bug?
- proper dependency handling - this bug
Comment by Buggy McBugFace (bugbot) - Tuesday, 08 August 2023, 19:11 GMT
This is an automated comment as this bug is open for more then 2 years. Please reply if you still experience this bug otherwise this issue will be closed after 1 month.
Comment by Jan Alexander Steffens (heftig) - Tuesday, 29 August 2023, 07:10 GMT
This should be mostly implemented now. Is anything missing?
Comment by Emil (xexaxo) - Tuesday, 12 September 2023, 10:00 GMT
Having a closer look a lot is fixed although some bits remain. There are four types of glitches:
- [1] optdepend on some drivers, instead of the virtual driver
- [2] makedepend on some drivers, instead of the virtual driver or frontend alone
- [3] drivers do not provide the virtual driver
- [4] drivers hard-depend on frontend when they should not

frontend libva, virtual driver libva-driver
- 1 - libva, obs-studio, vlc, ovenmediaengine
- 2 - kodi
- 3 - libva-intel-driver, intel-media-driver, libva-vdpau-driver
- 4 - libva-intel-driver

frontend lib32-libva, virtual driver lib32-libva-driver
- 1 - lib32-libva
- 3 - lib32-libva-intel-driver, lib32-libva-vdpau-driver
- 4 - lib32-libva-intel-driver, lib32-libva-vdpau-driver

frontend libvdpau, virtual driver vdpau-driver
- 1 - libvdpau
- 2 - kodi
- 3 - libvdpau-va-gl, nvidia-utils
- 4 - libvdpau-va-gl (should be testdeps only)

frontend lib32-libvdpau, virtual driver lib32-vdpau-driver
- 1 - lib32-libvdpau
- 3 - lib32-nvidia-utils