From 1fef823107b59e072d6d6f03b8ff261bc7830aff Mon Sep 17 00:00:00 2001 From: Julien Roy Date: Sat, 2 Mar 2024 15:16:10 -0500 Subject: gui-wm/hyprland: Add patch to fix compilation using gui-wm/hyprland[legacy-renderer] Closes: https://bugs.gentoo.org/925912 Closes: https://github.com/gentoo/gentoo/pull/35604 Signed-off-by: Julien Roy Signed-off-by: Yixun Lan --- gui-wm/hyprland/files/legacy-renderer-fix.patch | 33 ++++++ gui-wm/hyprland/hyprland-0.35.0-r1.ebuild | 137 ----------------------- gui-wm/hyprland/hyprland-0.35.0-r2.ebuild | 141 +++++++++++++++++++++++ gui-wm/hyprland/hyprland-0.36.0-r1.ebuild | 142 ++++++++++++++++++++++++ gui-wm/hyprland/hyprland-0.36.0.ebuild | 138 ----------------------- 5 files changed, 316 insertions(+), 275 deletions(-) create mode 100644 gui-wm/hyprland/files/legacy-renderer-fix.patch delete mode 100644 gui-wm/hyprland/hyprland-0.35.0-r1.ebuild create mode 100644 gui-wm/hyprland/hyprland-0.35.0-r2.ebuild create mode 100644 gui-wm/hyprland/hyprland-0.36.0-r1.ebuild delete mode 100644 gui-wm/hyprland/hyprland-0.36.0.ebuild (limited to 'gui-wm') diff --git a/gui-wm/hyprland/files/legacy-renderer-fix.patch b/gui-wm/hyprland/files/legacy-renderer-fix.patch new file mode 100644 index 000000000000..a1ecbbd7ec5a --- /dev/null +++ b/gui-wm/hyprland/files/legacy-renderer-fix.patch @@ -0,0 +1,33 @@ +# https://github.com/hyprwm/Hyprland/pull/4928 +# https://bugs.gentoo.org/925912 +diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp +index 64f582f2..a6f2dc03 100644 +--- a/src/render/OpenGL.cpp ++++ b/src/render/OpenGL.cpp +@@ -353,7 +353,11 @@ void CHyprOpenGLImpl::end() { + // check for gl errors + const GLenum ERR = glGetError(); + ++#ifdef GLES2 ++ if (ERR == GL_CONTEXT_LOST_KHR) /* We don't have infra to recover from this */ ++#else + if (ERR == GL_CONTEXT_LOST) /* We don't have infra to recover from this */ ++#endif + RASSERT(false, "glGetError at Opengl::end() returned GL_CONTEXT_LOST. Cannot continue until proper GPU reset handling is implemented."); + } + +@@ -2057,7 +2061,13 @@ void CHyprOpenGLImpl::createBGTextureForMonitor(CMonitor* pMonitor) { + tex.m_vSize = IMAGESIZE * scale; + + // copy the data to an OpenGL texture we have +- const GLint glIFormat = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? GL_RGB32F : GL_RGBA; ++ const GLint glIFormat = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? ++#ifdef GLES2 ++ GL_RGB32F_EXT : ++#else ++ GL_RGB32F : ++#endif ++ GL_RGBA; + const GLint glFormat = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? GL_RGB : GL_RGBA; + const GLint glType = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? GL_FLOAT : GL_UNSIGNED_BYTE; + diff --git a/gui-wm/hyprland/hyprland-0.35.0-r1.ebuild b/gui-wm/hyprland/hyprland-0.35.0-r1.ebuild deleted file mode 100644 index bd70e22a7247..000000000000 --- a/gui-wm/hyprland/hyprland-0.35.0-r1.ebuild +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit meson toolchain-funcs - -DESCRIPTION="A dynamic tiling Wayland compositor that doesn't sacrifice on its looks" -HOMEPAGE="https://github.com/hyprwm/Hyprland" - -if [[ "${PV}" = *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/hyprwm/${PN^}.git" -else - SRC_URI="https://github.com/hyprwm/${PN^}/releases/download/v${PV}/source-v${PV}.tar.gz -> ${P}.gh.tar.gz" - S="${WORKDIR}/${PN}-source" - - KEYWORDS="~amd64 ~riscv" -fi - -LICENSE="BSD" -SLOT="0" -IUSE="X legacy-renderer systemd" - -# hyprpm (hyprland plugin manager) requires the dependencies at runtime -# so that it can clone, compile and install plugins. -HYPRPM_RDEPEND=" - app-alternatives/ninja - dev-build/cmake - dev-build/meson - dev-vcs/git - virtual/pkgconfig -" -# bundled wlroots has the following dependency string according to included headers. -# wlroots[drm,gles2-renderer,libinput,x11-backend?,X?] -# enable x11-backend with X and vice versa -WLROOTS_RDEPEND=" - >=dev-libs/libinput-1.14.0:= - dev-libs/libliftoff - >=dev-libs/wayland-1.22 - media-libs/libdisplay-info - media-libs/libglvnd - media-libs/mesa[egl(+),gles2] - sys-apps/hwdata:= - sys-auth/seatd:= - >=x11-libs/libdrm-2.4.120 - x11-libs/libxkbcommon - >=x11-libs/pixman-0.42.0 - virtual/libudev:= - X? ( - x11-base/xwayland - x11-libs/libxcb:0= - x11-libs/xcb-util-renderutil - x11-libs/xcb-util-wm - ) -" -WLROOTS_DEPEND=" - >=dev-libs/wayland-protocols-1.32 -" -WLROOTS_BDEPEND=" - dev-util/glslang - dev-util/wayland-scanner -" -RDEPEND=" - ${HYPRPM_RDEPEND} - ${WLROOTS_RDEPEND} - dev-cpp/tomlplusplus - dev-libs/glib:2 - dev-libs/libinput - dev-libs/wayland - media-libs/libglvnd - x11-libs/cairo - x11-libs/libdrm - x11-libs/libxkbcommon - x11-libs/pango - x11-libs/pixman - X? ( - x11-libs/libxcb:0= - ) -" -DEPEND=" - ${RDEPEND} - ${WLROOTS_DEPEND} - dev-libs/hyprland-protocols - dev-libs/wayland-protocols -" -BDEPEND=" - ${WLROOTS_BDEPEND} - || ( >=sys-devel/gcc-13:* >=sys-devel/clang-16:* ) - app-misc/jq - dev-build/cmake - dev-util/wayland-scanner - virtual/pkgconfig -" - -pkg_setup() { - [[ ${MERGE_TYPE} == binary ]] && return - - if tc-is-gcc && ver_test $(gcc-version) -lt 13 ; then - eerror "Hyprland requires >=sys-devel/gcc-13 to build" - eerror "Please upgrade GCC: emerge -v1 sys-devel/gcc" - die "GCC version is too old to compile Hyprland!" - elif tc-is-clang && ver_test $(clang-version) -lt 16 ; then - eerror "Hyprland requires >=sys-devel/clang-16 to build" - eerror "Please upgrade Clang: emerge -v1 sys-devel/clang" - die "Clang version is too old to compile Hyprland!" - fi -} - -src_configure() { - local emesonargs=( - $(meson_feature legacy-renderer legacy_renderer) - $(meson_feature systemd) - $(meson_feature X xwayland) - $(meson_feature X wlroots:xwayland) - -Dwlroots:backends=drm,libinput$(usev X ',x11') - -Dwlroots:xcb-errors=disabled - ) - - meson_src_configure -} - -src_install() { - # First install everything except wlroots to avoid conflicts. - meson_src_install --skip-subprojects wlroots - # Then install development files (mainly wlroots) for bug #916760. - meson_src_install --tags devel - - # Wlroots headers are required by hyprland-plugins and the pkgconfig file expects - # them to be in /usr/include/hyprland/wlroots, despite this they aren't installed there. - # Ideally you could override includedir per subproject and the install tags would - # be granular enough to only install headers. But its not requiring this. - mkdir "${ED}"/usr/include/hyprland/wlroots || die - mv "${ED}"/usr/include/wlr "${ED}"/usr/include/hyprland/wlroots || die - # devel tag includes wlroots .pc and .a files still - rm -rf "${ED}"/usr/$(get_libdir)/ || die -} diff --git a/gui-wm/hyprland/hyprland-0.35.0-r2.ebuild b/gui-wm/hyprland/hyprland-0.35.0-r2.ebuild new file mode 100644 index 000000000000..81c8b1bbcb99 --- /dev/null +++ b/gui-wm/hyprland/hyprland-0.35.0-r2.ebuild @@ -0,0 +1,141 @@ +# Copyright 2023-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit meson toolchain-funcs + +DESCRIPTION="A dynamic tiling Wayland compositor that doesn't sacrifice on its looks" +HOMEPAGE="https://github.com/hyprwm/Hyprland" + +if [[ "${PV}" = *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/hyprwm/${PN^}.git" +else + SRC_URI="https://github.com/hyprwm/${PN^}/releases/download/v${PV}/source-v${PV}.tar.gz -> ${P}.gh.tar.gz" + S="${WORKDIR}/${PN}-source" + + KEYWORDS="~amd64 ~riscv" +fi + +LICENSE="BSD" +SLOT="0" +IUSE="X legacy-renderer systemd" + +# hyprpm (hyprland plugin manager) requires the dependencies at runtime +# so that it can clone, compile and install plugins. +HYPRPM_RDEPEND=" + app-alternatives/ninja + dev-build/cmake + dev-build/meson + dev-vcs/git + virtual/pkgconfig +" +# bundled wlroots has the following dependency string according to included headers. +# wlroots[drm,gles2-renderer,libinput,x11-backend?,X?] +# enable x11-backend with X and vice versa +WLROOTS_RDEPEND=" + >=dev-libs/libinput-1.14.0:= + dev-libs/libliftoff + >=dev-libs/wayland-1.22 + media-libs/libdisplay-info + media-libs/libglvnd + media-libs/mesa[egl(+),gles2] + sys-apps/hwdata:= + sys-auth/seatd:= + >=x11-libs/libdrm-2.4.120 + x11-libs/libxkbcommon + >=x11-libs/pixman-0.42.0 + virtual/libudev:= + X? ( + x11-base/xwayland + x11-libs/libxcb:0= + x11-libs/xcb-util-renderutil + x11-libs/xcb-util-wm + ) +" +WLROOTS_DEPEND=" + >=dev-libs/wayland-protocols-1.32 +" +WLROOTS_BDEPEND=" + dev-util/glslang + dev-util/wayland-scanner +" +RDEPEND=" + ${HYPRPM_RDEPEND} + ${WLROOTS_RDEPEND} + dev-cpp/tomlplusplus + dev-libs/glib:2 + dev-libs/libinput + dev-libs/wayland + media-libs/libglvnd + x11-libs/cairo + x11-libs/libdrm + x11-libs/libxkbcommon + x11-libs/pango + x11-libs/pixman + X? ( + x11-libs/libxcb:0= + ) +" +DEPEND=" + ${RDEPEND} + ${WLROOTS_DEPEND} + dev-libs/hyprland-protocols + dev-libs/wayland-protocols +" +BDEPEND=" + ${WLROOTS_BDEPEND} + || ( >=sys-devel/gcc-13:* >=sys-devel/clang-16:* ) + app-misc/jq + dev-build/cmake + dev-util/wayland-scanner + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}/legacy-renderer-fix.patch" +) + +pkg_setup() { + [[ ${MERGE_TYPE} == binary ]] && return + + if tc-is-gcc && ver_test $(gcc-version) -lt 13 ; then + eerror "Hyprland requires >=sys-devel/gcc-13 to build" + eerror "Please upgrade GCC: emerge -v1 sys-devel/gcc" + die "GCC version is too old to compile Hyprland!" + elif tc-is-clang && ver_test $(clang-version) -lt 16 ; then + eerror "Hyprland requires >=sys-devel/clang-16 to build" + eerror "Please upgrade Clang: emerge -v1 sys-devel/clang" + die "Clang version is too old to compile Hyprland!" + fi +} + +src_configure() { + local emesonargs=( + $(meson_feature legacy-renderer legacy_renderer) + $(meson_feature systemd) + $(meson_feature X xwayland) + $(meson_feature X wlroots:xwayland) + -Dwlroots:backends=drm,libinput$(usev X ',x11') + -Dwlroots:xcb-errors=disabled + ) + + meson_src_configure +} + +src_install() { + # First install everything except wlroots to avoid conflicts. + meson_src_install --skip-subprojects wlroots + # Then install development files (mainly wlroots) for bug #916760. + meson_src_install --tags devel + + # Wlroots headers are required by hyprland-plugins and the pkgconfig file expects + # them to be in /usr/include/hyprland/wlroots, despite this they aren't installed there. + # Ideally you could override includedir per subproject and the install tags would + # be granular enough to only install headers. But its not requiring this. + mkdir "${ED}"/usr/include/hyprland/wlroots || die + mv "${ED}"/usr/include/wlr "${ED}"/usr/include/hyprland/wlroots || die + # devel tag includes wlroots .pc and .a files still + rm -rf "${ED}"/usr/$(get_libdir)/ || die +} diff --git a/gui-wm/hyprland/hyprland-0.36.0-r1.ebuild b/gui-wm/hyprland/hyprland-0.36.0-r1.ebuild new file mode 100644 index 000000000000..972fe7b33988 --- /dev/null +++ b/gui-wm/hyprland/hyprland-0.36.0-r1.ebuild @@ -0,0 +1,142 @@ +# Copyright 2023-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit meson toolchain-funcs + +DESCRIPTION="A dynamic tiling Wayland compositor that doesn't sacrifice on its looks" +HOMEPAGE="https://github.com/hyprwm/Hyprland" + +if [[ "${PV}" = *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/hyprwm/${PN^}.git" +else + SRC_URI="https://github.com/hyprwm/${PN^}/releases/download/v${PV}/source-v${PV}.tar.gz -> ${P}.gh.tar.gz" + S="${WORKDIR}/${PN}-source" + + KEYWORDS="~amd64 ~riscv" +fi + +LICENSE="BSD" +SLOT="0" +IUSE="X legacy-renderer systemd" + +# hyprpm (hyprland plugin manager) requires the dependencies at runtime +# so that it can clone, compile and install plugins. +HYPRPM_RDEPEND=" + app-alternatives/ninja + dev-build/cmake + dev-build/meson + dev-vcs/git + virtual/pkgconfig +" +# bundled wlroots has the following dependency string according to included headers. +# wlroots[drm,gles2-renderer,libinput,x11-backend?,X?] +# enable x11-backend with X and vice versa +WLROOTS_RDEPEND=" + >=dev-libs/libinput-1.14.0:= + dev-libs/libliftoff + >=dev-libs/wayland-1.22 + media-libs/libdisplay-info + media-libs/libglvnd + media-libs/mesa[egl(+),gles2] + sys-apps/hwdata:= + sys-auth/seatd:= + >=x11-libs/libdrm-2.4.118 + x11-libs/libxkbcommon + >=x11-libs/pixman-0.42.0 + virtual/libudev:= + X? ( + x11-base/xwayland + x11-libs/libxcb:0= + x11-libs/xcb-util-renderutil + x11-libs/xcb-util-wm + ) +" +WLROOTS_DEPEND=" + >=dev-libs/wayland-protocols-1.33 +" +WLROOTS_BDEPEND=" + dev-util/glslang + dev-util/wayland-scanner +" +RDEPEND=" + ${HYPRPM_RDEPEND} + ${WLROOTS_RDEPEND} + dev-cpp/tomlplusplus + dev-libs/glib:2 + dev-libs/libinput + dev-libs/wayland + media-libs/libglvnd + x11-libs/cairo + x11-libs/libdrm + x11-libs/libxkbcommon + x11-libs/pango + x11-libs/pixman + X? ( + x11-libs/libxcb:0= + ) +" +DEPEND=" + ${RDEPEND} + ${WLROOTS_DEPEND} + dev-libs/hyprland-protocols + dev-libs/hyprlang + >=dev-libs/wayland-protocols-1.25 +" +BDEPEND=" + ${WLROOTS_BDEPEND} + || ( >=sys-devel/gcc-13:* >=sys-devel/clang-16:* ) + app-misc/jq + dev-build/cmake + dev-util/wayland-scanner + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}/legacy-renderer-fix.patch" +) + +pkg_setup() { + [[ ${MERGE_TYPE} == binary ]] && return + + if tc-is-gcc && ver_test $(gcc-version) -lt 13 ; then + eerror "Hyprland requires >=sys-devel/gcc-13 to build" + eerror "Please upgrade GCC: emerge -v1 sys-devel/gcc" + die "GCC version is too old to compile Hyprland!" + elif tc-is-clang && ver_test $(clang-version) -lt 16 ; then + eerror "Hyprland requires >=sys-devel/clang-16 to build" + eerror "Please upgrade Clang: emerge -v1 sys-devel/clang" + die "Clang version is too old to compile Hyprland!" + fi +} + +src_configure() { + local emesonargs=( + $(meson_feature legacy-renderer legacy_renderer) + $(meson_feature systemd) + $(meson_feature X xwayland) + $(meson_feature X wlroots:xwayland) + -Dwlroots:backends=drm,libinput$(usev X ',x11') + -Dwlroots:xcb-errors=disabled + ) + + meson_src_configure +} + +src_install() { + # First install everything except wlroots to avoid conflicts. + meson_src_install --skip-subprojects wlroots + # Then install development files (mainly wlroots) for bug #916760. + meson_src_install --tags devel + + # Wlroots headers are required by hyprland-plugins and the pkgconfig file expects + # them to be in /usr/include/hyprland/wlroots, despite this they aren't installed there. + # Ideally you could override includedir per subproject and the install tags would + # be granular enough to only install headers. But its not requiring this. + mkdir "${ED}"/usr/include/hyprland/wlroots || die + mv "${ED}"/usr/include/wlr "${ED}"/usr/include/hyprland/wlroots || die + # devel tag includes wlroots .pc and .a files still + rm -rf "${ED}"/usr/$(get_libdir)/ || die +} diff --git a/gui-wm/hyprland/hyprland-0.36.0.ebuild b/gui-wm/hyprland/hyprland-0.36.0.ebuild deleted file mode 100644 index cecf622b3be8..000000000000 --- a/gui-wm/hyprland/hyprland-0.36.0.ebuild +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright 2023-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit meson toolchain-funcs - -DESCRIPTION="A dynamic tiling Wayland compositor that doesn't sacrifice on its looks" -HOMEPAGE="https://github.com/hyprwm/Hyprland" - -if [[ "${PV}" = *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/hyprwm/${PN^}.git" -else - SRC_URI="https://github.com/hyprwm/${PN^}/releases/download/v${PV}/source-v${PV}.tar.gz -> ${P}.gh.tar.gz" - S="${WORKDIR}/${PN}-source" - - KEYWORDS="~amd64 ~riscv" -fi - -LICENSE="BSD" -SLOT="0" -IUSE="X legacy-renderer systemd" - -# hyprpm (hyprland plugin manager) requires the dependencies at runtime -# so that it can clone, compile and install plugins. -HYPRPM_RDEPEND=" - app-alternatives/ninja - dev-build/cmake - dev-build/meson - dev-vcs/git - virtual/pkgconfig -" -# bundled wlroots has the following dependency string according to included headers. -# wlroots[drm,gles2-renderer,libinput,x11-backend?,X?] -# enable x11-backend with X and vice versa -WLROOTS_RDEPEND=" - >=dev-libs/libinput-1.14.0:= - dev-libs/libliftoff - >=dev-libs/wayland-1.22 - media-libs/libdisplay-info - media-libs/libglvnd - media-libs/mesa[egl(+),gles2] - sys-apps/hwdata:= - sys-auth/seatd:= - >=x11-libs/libdrm-2.4.118 - x11-libs/libxkbcommon - >=x11-libs/pixman-0.42.0 - virtual/libudev:= - X? ( - x11-base/xwayland - x11-libs/libxcb:0= - x11-libs/xcb-util-renderutil - x11-libs/xcb-util-wm - ) -" -WLROOTS_DEPEND=" - >=dev-libs/wayland-protocols-1.33 -" -WLROOTS_BDEPEND=" - dev-util/glslang - dev-util/wayland-scanner -" -RDEPEND=" - ${HYPRPM_RDEPEND} - ${WLROOTS_RDEPEND} - dev-cpp/tomlplusplus - dev-libs/glib:2 - dev-libs/libinput - dev-libs/wayland - media-libs/libglvnd - x11-libs/cairo - x11-libs/libdrm - x11-libs/libxkbcommon - x11-libs/pango - x11-libs/pixman - X? ( - x11-libs/libxcb:0= - ) -" -DEPEND=" - ${RDEPEND} - ${WLROOTS_DEPEND} - dev-libs/hyprland-protocols - dev-libs/hyprlang - >=dev-libs/wayland-protocols-1.25 -" -BDEPEND=" - ${WLROOTS_BDEPEND} - || ( >=sys-devel/gcc-13:* >=sys-devel/clang-16:* ) - app-misc/jq - dev-build/cmake - dev-util/wayland-scanner - virtual/pkgconfig -" - -pkg_setup() { - [[ ${MERGE_TYPE} == binary ]] && return - - if tc-is-gcc && ver_test $(gcc-version) -lt 13 ; then - eerror "Hyprland requires >=sys-devel/gcc-13 to build" - eerror "Please upgrade GCC: emerge -v1 sys-devel/gcc" - die "GCC version is too old to compile Hyprland!" - elif tc-is-clang && ver_test $(clang-version) -lt 16 ; then - eerror "Hyprland requires >=sys-devel/clang-16 to build" - eerror "Please upgrade Clang: emerge -v1 sys-devel/clang" - die "Clang version is too old to compile Hyprland!" - fi -} - -src_configure() { - local emesonargs=( - $(meson_feature legacy-renderer legacy_renderer) - $(meson_feature systemd) - $(meson_feature X xwayland) - $(meson_feature X wlroots:xwayland) - -Dwlroots:backends=drm,libinput$(usev X ',x11') - -Dwlroots:xcb-errors=disabled - ) - - meson_src_configure -} - -src_install() { - # First install everything except wlroots to avoid conflicts. - meson_src_install --skip-subprojects wlroots - # Then install development files (mainly wlroots) for bug #916760. - meson_src_install --tags devel - - # Wlroots headers are required by hyprland-plugins and the pkgconfig file expects - # them to be in /usr/include/hyprland/wlroots, despite this they aren't installed there. - # Ideally you could override includedir per subproject and the install tags would - # be granular enough to only install headers. But its not requiring this. - mkdir "${ED}"/usr/include/hyprland/wlroots || die - mv "${ED}"/usr/include/wlr "${ED}"/usr/include/hyprland/wlroots || die - # devel tag includes wlroots .pc and .a files still - rm -rf "${ED}"/usr/$(get_libdir)/ || die -} -- cgit v1.2.3-65-gdbad