commit: e6c7b247d3e10ba265b31161205625f779a41e57 Author: Nick Sarnie <sarnex <AT> gentoo <DOT> org> AuthorDate: Thu Oct 30 15:54:38 2025 +0000 Commit: Nick Sarnie <sarnex <AT> gentoo <DOT> org> CommitDate: Thu Oct 30 15:56:30 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e6c7b247
media-video/aegisub: Fix startup on Wayland Closes: https://bugs.gentoo.org/946851 Signed-off-by: Nick Sarnie <sarnex <AT> gentoo.org> media-video/aegisub/aegisub-3.4.2-r2.ebuild | 147 ++++++++++++++++++++++ media-video/aegisub/files/3.4.2/Fix-wayland.patch | 34 +++++ 2 files changed, 181 insertions(+) diff --git a/media-video/aegisub/aegisub-3.4.2-r2.ebuild b/media-video/aegisub/aegisub-3.4.2-r2.ebuild new file mode 100644 index 000000000000..45a28a452650 --- /dev/null +++ b/media-video/aegisub/aegisub-3.4.2-r2.ebuild @@ -0,0 +1,147 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( luajit ) +LUA_REQ_USE="lua52compat" + +WX_GTK_VER=3.2-gtk3 +PLOCALES="ar be bg ca cs da de el es eu fa fi fr_FR gl hu id it ja ko nl pl pt_BR pt_PT ru sr_RS sr_RS@latin tr uk_UA vi zh_CN zh_TW" + +inherit meson flag-o-matic lua-single plocale wxwidgets xdg-utils vcs-snapshot toolchain-funcs + +DESCRIPTION="Advanced subtitle editor" +HOMEPAGE="http://www.aegisub.org/ https://github.com/TypesettingTools/Aegisub" + +if [[ ${PV} == *9999 ]]; then + EGIT_REPO_URI="https://github.com/TypesettingTools/${PN^}.git" + # Submodules are used to pull bundled libraries. + EGIT_SUBMODULES=() + inherit git-r3 +else + SRC_URI="https://github.com/TypesettingTools/Aegisub/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~x86" +fi +LICENSE="BSD MIT" +SLOT="0" +IUSE="+alsa debug +fftw openal portaudio pulseaudio spell test +uchardet" +REQUIRED_USE=" + ${LUA_REQUIRED_USE} + || ( alsa openal portaudio pulseaudio )" +RESTRICT="test" + +# aegisub bundles luabins (https://github.com/agladysh/luabins). +# Unfortunately, luabins upstream is practically dead since 2010. +# Thus unbundling luabins isn't worth the effort. +RDEPEND="${LUA_DEPS} + x11-libs/wxGTK:${WX_GTK_VER}=[X,opengl,debug?] + dev-libs/boost:=[icu,nls] + dev-libs/icu:= + media-libs/ffmpegsource:= + media-libs/fontconfig + media-libs/freetype + media-libs/libass:=[fontconfig] + sys-libs/zlib + virtual/libiconv + virtual/opengl + alsa? ( media-libs/alsa-lib ) + fftw? ( >=sci-libs/fftw-3.3:= ) + openal? ( media-libs/openal ) + portaudio? ( =media-libs/portaudio-19* ) + pulseaudio? ( media-libs/libpulse ) + spell? ( app-text/hunspell:= ) + uchardet? ( app-i18n/uchardet ) +" +DEPEND="${RDEPEND}" +# luarocks is only used as a command-line tool so there is no need to enforce +# LUA_SINGLE_USEDEP on it. On the other hand, this means we must use version +# bounds in order to make sure we use a version migrated to Lua eclasses. +BDEPEND=" + sys-devel/gettext + virtual/pkgconfig + test? ( + ${RDEPEND} + >=dev-cpp/gtest-1.8.1 + >=dev-lua/luarocks-3.4.0-r100 + $(lua_gen_cond_dep ' + dev-lua/busted[${LUA_USEDEP}] + ') + ) +" + +PATCHES=( + "${FILESDIR}"/3.4.2/Fix-build-without-pch.patch + "${FILESDIR}"/3.4.2/Fix-wayland.patch +) + +BUILD_DIR="${WORKDIR}/${P}-build" + +aegisub_check_compiler() { + if [[ ${MERGE_TYPE} != "binary" ]] && ! test-flag-CXX -std=c++20; then + die "Your compiler lacks C++20 support." + fi +} + +pkg_pretend() { + aegisub_check_compiler +} + +pkg_setup() { + aegisub_check_compiler + lua-single_pkg_setup +} + +src_prepare() { + default_src_prepare + + # Remove tests that require unavailable uuid Lua module. + rm automation/tests/modules/lfs.moon || die + + remove_locale() { + sed -i -e "s/^${1}\(@latin\)\?//g" po/LINGUAS || die + rm "po/${1}.po" || die + } + + plocale_find_changes 'po' '' '.po' + plocale_for_each_disabled_locale remove_locale + sed -i "s|#ifdef WITH_UPDATE_CHECKER| #if WITH_UPDATE_CHECKER == 1|g" "${S}"/src/dialog_version_check.cpp \ + "${S}"/src/command/app.cpp "${S}"/src/main.cpp || die + use test || sed -i "s|subdir('tests')||g" "${S}"/meson.build || die + + mkdir "${BUILD_DIR}" || die + cp "${FILESDIR}/${PV}"/git_version.h "${BUILD_DIR}"/git_version.h || die +} + +src_configure() { + tc-export PKG_CONFIG + use debug && EMESON_BUILDTYPE=debug + setup-wxwidgets + local emesonargs=( + -Denable_update_checker=false + -Dffms2=enabled + -Dsystem_luajit=true + $(meson_feature alsa) + $(meson_feature fftw fftw3) + $(meson_feature openal) + $(meson_feature portaudio) + $(meson_feature pulseaudio libpulse) + $(meson_feature spell hunspell) + $(meson_feature uchardet) + ) + meson_src_configure +} + +src_test() { + meson_src_test test-libaegisub +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} diff --git a/media-video/aegisub/files/3.4.2/Fix-wayland.patch b/media-video/aegisub/files/3.4.2/Fix-wayland.patch new file mode 100644 index 000000000000..b2eb86b12772 --- /dev/null +++ b/media-video/aegisub/files/3.4.2/Fix-wayland.patch @@ -0,0 +1,34 @@ +From 17ea2947a24ed87df5a6842deb561b01c9643601 Mon Sep 17 00:00:00 2001 +From: EL_File4138 <[email protected]> +Date: Mon, 12 May 2025 00:48:35 +0200 +Subject: [PATCH] fix: Fallback to X11 if lacks EGL support + +This should fix #233. It's recurring and is hard to fix in the downstream package. +Fixing is trivial. +--- + src/main.cpp | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/main.cpp b/src/main.cpp +index 65dbb4529c..c5d7e50ab1 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -95,6 +95,18 @@ void AegisubApp::OnAssertFailure(const wxChar *file, int line, const wxChar *fun + AegisubApp::AegisubApp() { + // http://trac.wxwidgets.org/ticket/14302 + wxSetEnv("UBUNTU_MENUPROXY", "0"); ++ ++ // Fallback to X11 if wxGTK implementation is build without Wayland EGL support ++ // Fix https://github.com/TypesettingTools/Aegisub/issues/233 ++ #if defined(__WXGTK__) && !wxUSE_GLCANVAS_EGL ++ wxString xdg_session_type = wxGetenv("XDG_SESSION_TYPE"); ++ wxString wayland_display = wxGetenv("WAYLAND_DISPLAY"); ++ ++ if (xdg_session_type == "wayland" || wayland_display.Contains("wayland")) { ++ wxSetEnv("GDK_BACKEND", "x11"); ++ } ++ #endif ++ + } + + namespace {
