Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 627758 - USE={egl,gles{,1,2,3}} flags are a total mess
Summary: USE={egl,gles{,1,2,3}} flags are a total mess
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal with 2 votes (vote)
Assignee: Gentoo X packagers
URL: https://github.com/gentoo/gentoo/pull...
Whiteboard:
Keywords: PullRequest
Depends on: 716248 728306
Blocks:
  Show dependency tree
 
Reported: 2017-08-13 09:31 UTC by Michał Górny
Modified: 2021-12-05 22:37 UTC (History)
7 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2017-08-13 09:31:01 UTC
Forked from bug #627714. Long story short, we have a lot of flags related to EGL and GLES which are all local and used inconsistently.

Most notably:

1. some packages use USE=gles for any GLES version, others use e.g. gles+gles2,

2. for some packages those flags just enable additional EGL/GLES support, for some others they kill OpenGL.
Comment 1 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2017-08-13 09:32:18 UTC
$ quse -D egl
 local:egl:dev-libs/DirectFB: build with EGL support
 local:egl:dev-libs/efl: Enable EGL rendering
 local:egl:dev-qt/qtgui: Enable EGL integration
 local:egl:dev-qt/qtopengl: Use EGL instead of GLX to manage OpenGL contexts
 local:egl:dev-qt/qtwayland: Use EGL instead of GLX to manage OpenGL contexts
 local:egl:dev-util/apitrace: Enable EGL support
 local:egl:games-emulation/dolphin: Enable EGL support
 local:egl:media-libs/clutter: Enable EGL backend.
 local:egl:media-libs/gst-plugins-bad: Enable EGL support
 local:egl:media-libs/libyami: Enable EGL support.
 local:egl:media-libs/mesa: Enable EGL support.
 local:egl:media-libs/waffle: Enable EGL support
 local:egl:media-plugins/gst-plugins-vaapi: Enable EGL support
 local:egl:media-tv/mythtv: Support EGL video output.
 local:egl:media-video/mpv: Enable support for various EGL-based video outputs / backends
 local:egl:net-libs/webkit-gtk: Enable EGL support
 local:egl:www-plugins/gnash: Enable EGL support for the OpenVG, OpenGL and X11 renderers
 local:egl:x11-apps/mesa-progs: Build EGL utilities
 local:egl:x11-libs/libva: Enables EGL support.


$ quse -D gles
 local:gles:dev-libs/efl: Enable the OpenGL ES GL implementation
 local:gles:media-libs/libsdl2: include OpenGL ES support
 local:gles:media-tv/kodi: Enable support for GLES
 local:gles:www-plugins/lightspark: Replace default OpenGL renderer with GLESv2


$ quse -D gles1
 local:gles1:media-libs/mesa: Enable GLESv1 support.


$ quse -D gles2
 local:gles2:dev-games/ogre: build OpenGL ES 2.x RenderSystem
 local:gles2:dev-libs/DirectFB: build gles2 gfxdriver
 local:gles2:dev-libs/weston: Use GLESv2 cairo instead of full GL
 local:gles2:dev-python/PyQt5: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:dev-qt/qt3d: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:dev-qt/qtdatavis3d: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:dev-qt/qtdeclarative: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:dev-qt/qtgui: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:dev-qt/qtmultimedia: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:dev-qt/qtopengl: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:dev-qt/qtprintsupport: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:dev-qt/qtwidgets: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:games-emulation/mupen64plus-core: Use GLES2 instead of OpenGL
 local:gles2:games-emulation/mupen64plus-video-glide64mk2: Use GLES2 instead of OpenGL
 local:gles2:games-emulation/mupen64plus-video-rice: Use GLES2 instead of OpenGL
 local:gles2:games-strategy/liquidwar6: Enable OpenGL ES 2.0 support
 local:gles2:kde-apps/kdenlive: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:kde-frameworks/plasma: Use GLES 2.0 or later instead of full OpenGL
 local:gles2:kde-plasma/kinfocenter: Show OpenGL ES information in kinfocenter
 local:gles2:kde-plasma/kwin: Use OpenGL ES 2 instead of full GL
 local:gles2:media-libs/cogl: Enable OpenGL ES 2.0 support
 local:gles2:media-libs/gst-plugins-bad: Enable GLES2 support
 local:gles2:media-libs/mesa: Enable GLESv2 support.
 local:gles2:net-libs/webkit-gtk: Enable GLESv2 support
 local:gles2:www-plugins/freshplayerplugin: Use system GLESv2 libraries instead of ANGLE for shader translation
 local:gles2:x11-apps/mesa-progs: Build OpenGL ES 2 utilities
 local:gles2:x11-libs/cairo: Build the OpenGL ES 2 backend
 local:gles2:x11-wm/mutter: Enable OpenGL ES 2.0 support


$ quse -D gles3
 local:gles3:dev-games/ogre: Enable OpenGL ES 3.x Features
Comment 2 Ulenrich 2017-08-13 13:15:59 UTC
@Michał Górny  An endorsement of your effort:
The last ten years using Gentoo I wasted days to get around this mess by just trying various USE combinations. A year ago with Kde-5 coming I was not able any more. Maybe Kde-5 does not run any more on a nine years old MacMini (Nvidia graphics). Or I did not find the solution for a smooth USE configuration, because it just was too much of a mess.

With having a straight system of USE variables I surely would have found out in a day. I needed a week to unsurely come to the conclusion KDE-5 does not work.
Comment 3 Andreas Sturmlechner gentoo-dev 2017-09-02 17:30:07 UTC
Clearly, we can do better. Out of those flags, if the descriptions can be trusted, egl seems to be the least problematic.

> local:egl:dev-qt/qtopengl: Use EGL instead of GLX to manage OpenGL contexts
Only slot 4 is concerned, do we care at this point? If yes, USE=glx and REQUIRED_USE=^^(egl glx) could be done.

> local:egl:dev-qt/qtwayland: Use EGL instead of GLX to manage OpenGL contexts
Adding USE=glx and REQUIRED_USE=^^(egl glx) seems to overly complicate things, considering all the egl flag does is forcing its state on qtgui[egl=]. Is there any evidence that qtwayland[-egl] is even useful to anyone? I thought Wayland would mean EGL all the way, at least kde-frameworks/kwayland does.

So, simply dropping USE=egl from qtwayland/qtgui and building it unconditionally would remove the forced use-alignment between the two, drop two REQUIRED_USE conditions from qtgui and drop two lines from plasma profile package.use. egl is enabled by default in mesa and does not require additional dependencies, kwin already requires both egl and wayland enabled as well.

(In reply to Ulenrich from comment #2)
> @Michał Górny  An endorsement of your effort:
> I needed a week to unsurely come to the conclusion KDE-5 does not work.
Which is sad, because a look at plasma profile would have settled that.
Comment 4 Larry the Git Cow gentoo-dev 2017-11-30 22:14:09 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7d28249d0801718e46852e9e4c284d5f3529eb2c

commit 7d28249d0801718e46852e9e4c284d5f3529eb2c
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2017-11-29 15:49:35 +0000
Commit:     Andreas Sturmlechner <asturm@gentoo.org>
CommitDate: 2017-11-30 22:12:41 +0000

    profiles: desktop: Mask USE=gles2 in relevant packages
    
    Users too often burn themselves when enabling this flag globally.
    
    See also: Bugs #554478, #584010, #585334, #588914, #629632, #635502
    
    Bug: https://bugs.gentoo.org/627758

 profiles/targets/desktop/package.use.mask | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)}
Comment 5 kisak42 2017-12-01 22:17:04 UTC
Hi folks, friendly heads up that I've regularly been X forwarding a QT5 based application and when qtgui:5/qtopengl:5 is not built with the gles2 useflag, the application segfaults remotely, while being fine locally.

My point is that there currently still is value in having the gles2 useflag for qt5, even if it is masked away.
Comment 6 Larry the Git Cow gentoo-dev 2020-04-03 20:06:59 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9b84da571ced826d492b1c59dfca3e2fddd8c1e9

commit 9b84da571ced826d492b1c59dfca3e2fddd8c1e9
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2020-04-01 19:33:46 +0000
Commit:     Andreas Sturmlechner <asturm@gentoo.org>
CommitDate: 2020-04-03 20:06:33 +0000

    profiles: desktop: Drop USE=gles2 entries from package.use.mask
    
    USE=gles2 was renamed to gles2-only so the necessity for this mask is gone.
    
    This effectively reverts commit 7d28249d0801718e46852e9e4c284d5f3529eb2c.
    
    Bug: https://bugs.gentoo.org/627758
    Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>

 profiles/targets/desktop/package.use.mask | 20 --------------------
 1 file changed, 20 deletions(-)
Comment 7 jospezial 2020-04-04 10:55:44 UTC
Calculating dependencies... done!
 * Package:    kde-frameworks/plasma-9999
 * Repository: kde
 * Maintainer: kde@gentoo.org
 * USE:        X abi_x86_64 amd64 elibc_glibc kernel_linux userland_GNU
 * FEATURES:   ccache network-sandbox preserve-libs sandbox userpriv usersandbox
>>> Unpacking source...
 * Repository id: plasma-framework.git
 * To override fetched repository properties, use:
 *   EGIT_OVERRIDE_REPO_PLASMA_FRAMEWORK
 *   EGIT_OVERRIDE_BRANCH_PLASMA_FRAMEWORK
 *   EGIT_OVERRIDE_COMMIT_PLASMA_FRAMEWORK
 *   EGIT_OVERRIDE_COMMIT_DATE_PLASMA_FRAMEWORK
 * 
 * Fetching https://anongit.kde.org/plasma-framework ...
git fetch https://anongit.kde.org/plasma-framework +HEAD:refs/git-r3/HEAD
git symbolic-ref refs/git-r3/kde-frameworks/plasma/5/__main__ refs/git-r3/HEAD
 * Checking out https://anongit.kde.org/plasma-framework to /var/tmp/portage/kde-frameworks/plasma-9999/work/plasma-9999 ...
git checkout --quiet refs/git-r3/HEAD
GIT update -->
   repository:               https://anongit.kde.org/plasma-framework
   at the commit:            26eb57c53e45b741bd1cb42081b5f7e27e8d982c
>>> Source unpacked in /var/tmp/portage/kde-frameworks/plasma-9999/work
>>> Preparing source in /var/tmp/portage/kde-frameworks/plasma-9999/work/plasma-9999 ...
 * Working in BUILD_DIR: "/var/tmp/portage/kde-frameworks/plasma-9999/work/plasma-9999_build"
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/kde-frameworks/plasma-9999/work/plasma-9999 ...
 * ERROR: kde-frameworks/plasma-9999::kde failed (configure phase):
 *   USE Flag 'gles2' not in IUSE for kde-frameworks/plasma-9999
 * 
 * Call stack:
 *          ebuild.sh, line  125:  Called src_configure
 *        environment, line 3001:  Called cmake_use_find_package '!gles2' 'OpenGL'
 *        environment, line 1360:  Called use '!gles2'
 *   phase-helpers.sh, line  247:  Called die
 * The specific snippet of code:
 *                              die "USE Flag '${u}' not in IUSE for ${CATEGORY}/${PF}"
 *
Comment 8 Andreas Sturmlechner gentoo-dev 2020-04-04 10:56:40 UTC
Please don't spam this bug with individual reports.
Comment 9 jospezial 2020-04-04 12:15:41 UTC
(In reply to Andreas Sturmlechner from comment #8)
> Please don't spam this bug with individual reports.

Sorry. I was thinking it would be a good example to look for all appearances of this flag in an ebuild.

And yes,I was to lazy to open a new report for this.
Comment 10 Matt Turner gentoo-dev 2021-12-05 22:37:57 UTC
IUSE=egl was removed from mesa. gles2 -> gles2-only, etc. I don't think there's anything else to do here.