mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
media-video/aegisub: Fix startup on Wayland
Closes: https://bugs.gentoo.org/946851 Signed-off-by: Nick Sarnie <sarnex@gentoo.org>
This commit is contained in:
147
media-video/aegisub/aegisub-3.4.2-r2.ebuild
Normal file
147
media-video/aegisub/aegisub-3.4.2-r2.ebuild
Normal file
@@ -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
|
||||
}
|
||||
34
media-video/aegisub/files/3.4.2/Fix-wayland.patch
Normal file
34
media-video/aegisub/files/3.4.2/Fix-wayland.patch
Normal file
@@ -0,0 +1,34 @@
|
||||
From 17ea2947a24ed87df5a6842deb561b01c9643601 Mon Sep 17 00:00:00 2001
|
||||
From: EL_File4138 <elfile4138@elfile4138.moe>
|
||||
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 {
|
||||
Reference in New Issue
Block a user