diff options
author | 2025-01-22 19:23:14 +0900 | |
---|---|---|
committer | 2025-01-22 19:25:36 +0900 | |
commit | 85524f4d04edb670e7c0402863e72bf9fdb4a21b (patch) | |
tree | 3c1388bd2e91ad5db57f377f410b4aa267e9b500 /media-video/aegisub | |
parent | sys-kernel/kci-dev: new package, add 0.1.2 (diff) | |
download | gentoo-85524f4d04edb670e7c0402863e72bf9fdb4a21b.tar.gz gentoo-85524f4d04edb670e7c0402863e72bf9fdb4a21b.tar.bz2 gentoo-85524f4d04edb670e7c0402863e72bf9fdb4a21b.zip |
media-video/aegisub: add 3.4.2
Signed-off-by: Nick Sarnie <sarnex@gentoo.org>
Diffstat (limited to 'media-video/aegisub')
-rw-r--r-- | media-video/aegisub/Manifest | 1 | ||||
-rw-r--r-- | media-video/aegisub/aegisub-3.4.2.ebuild | 145 | ||||
-rw-r--r-- | media-video/aegisub/files/3.4.2/Fix-build-without-pch.patch | 386 | ||||
-rw-r--r-- | media-video/aegisub/files/3.4.2/git_version.h | 5 |
4 files changed, 537 insertions, 0 deletions
diff --git a/media-video/aegisub/Manifest b/media-video/aegisub/Manifest index c65ffd2a41b8..6cf6375b6a12 100644 --- a/media-video/aegisub/Manifest +++ b/media-video/aegisub/Manifest @@ -1,2 +1,3 @@ DIST aegisub-3.3.3.tar.gz 6580314 BLAKE2B b6a6b6d9a805fb1aec943f00452e5f074c050d7d8970e0fa57da54a7a3c12b86241eafafd957577625bcce395c9f909fe60a22c9d76fcf8f018a4ea03921dacf SHA512 19e44667ad8742560559387c15f6c00339194cd26e1140624c63f34c6b4da6bb0b80be0f636a2d1cd0b15f1598e0580218d648e0622635b12eeaad3a40df9abc DIST aegisub-3.4.0.tar.gz 6294724 BLAKE2B 6ab466a33082107f509675eb062a679c68da5b3ec9d97847d0c50ad43d717ff50efcb4fb59a2e8c23f57e893de846b651b7a80a117f047734e6d54ccf6522ef3 SHA512 364f56aece74b14f37d796e364ffcc5b9d8ab5816f8e118b7f44d2d4e3bdf8afa0731c36995269dd953d2f532e7a905729bcbfa907c672a8eb91b68565c1ade0 +DIST aegisub-3.4.2.tar.gz 6602618 BLAKE2B 38b2d2d0bb5dd4d3a7fe9e16bfe47f36120bc54d6b60dfa796906ce5699f584c350faf2e0de55879c32aa13ea87ae96d5365071082920d777d8ae4a4aea04361 SHA512 225f97a59feda2ddd7a65e967c19eb074c2f961cbdfbd5e743e4b622f8fb54ec85b679e5b9f30333965e98a19bf6b56cd54cc10417f67771c9661999483dacca diff --git a/media-video/aegisub/aegisub-3.4.2.ebuild b/media-video/aegisub/aegisub-3.4.2.ebuild new file mode 100644 index 000000000000..84c85dd0f0f5 --- /dev/null +++ b/media-video/aegisub/aegisub-3.4.2.ebuild @@ -0,0 +1,145 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +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" +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="dev-util/intltool + 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}] + ') + ) +" + +REQUIRED_USE="${LUA_REQUIRED_USE} + || ( alsa openal portaudio pulseaudio )" + +BUILD_DIR="${WORKDIR}/${P}-build" + +PATCHES=( +"${FILESDIR}/3.4.2/Fix-build-without-pch.patch" +) + +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() { + 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-build-without-pch.patch b/media-video/aegisub/files/3.4.2/Fix-build-without-pch.patch new file mode 100644 index 000000000000..08506c667cef --- /dev/null +++ b/media-video/aegisub/files/3.4.2/Fix-build-without-pch.patch @@ -0,0 +1,386 @@ +From 0f268eda235d41f33c778f595d5e6781ba8f38e2 Mon Sep 17 00:00:00 2001 +From: arch1t3cht <arch1t3cht@gmail.com> +Date: Tue, 21 Jan 2025 21:29:34 +0100 +Subject: [PATCH] Allow building without PCHs on Linux +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It seems that Aegisub used to be able to be built without precompiled +headers, but this broke with the meson port since there the PCHs are +needed to include acconf.h. (On the old build system(s), the feature +flags were passed directly as defines to the compiler on Visual Studio, +and acconf.h was forcibly included via -include acconf.h with autoconf.) + +Some distributions (gentoo in particular) disable PCHs by default for +meson due to various bugs, and PCHs can also be quite a headache with +language servers (I ended up running an sed one-liner after every +configure to replace -include-pch in my compile_commands.json with the +respective -include). + +Since meson doesn't seem to be able to forcibly include headers for +every source file, just pass the config as a set of preprocessor +defines when b_pch is disabled. If it's enabled, stick to acconf.h to +not bloat the compiler command lines too much. + +For now this only works on Linux, Windows will need extra work due to +windows.h being annoying, but there isn't as much of a need to build +without PCHs there anyway. + +The added includes were mostly taken from TypesettingTools/Aegisub#241 +and TypesettingTools/Aegisub#223. + +Co-authored-by: Ștefan Talpalaru <stefantalpalaru@yahoo.com> +Co-authored-by: Nick Sarnie <sarnex@gentoo.org> +--- + +diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml +index fbef59e0e..31bae4f84 100644 +--- a/.github/workflows/ci.yml ++++ b/.github/workflows/ci.yml +@@ -43,25 +43,25 @@ jobs: + name: Ubuntu 22 Debug, + os: ubuntu-22.04, + buildtype: debugoptimized, +- args: '' ++ args: -Db_pch=false + } + - { + name: Ubuntu 22 Release, + os: ubuntu-22.04, + buildtype: release, +- args: '' ++ args: -Db_pch=false + } + - { + name: Ubuntu 24 Debug, + os: ubuntu-24.04, + buildtype: debugoptimized, +- args: '' ++ args: -Db_pch=false + } + - { + name: Ubuntu 24 Release, + os: ubuntu-24.04, + buildtype: release, +- args: '' ++ args: -Db_pch=false + } + - { + name: macOS Debug, +diff --git a/libaegisub/ass/uuencode.cpp b/libaegisub/ass/uuencode.cpp +index 893268d07..b2e0df60f 100644 +--- a/libaegisub/ass/uuencode.cpp ++++ b/libaegisub/ass/uuencode.cpp +@@ -17,6 +17,7 @@ + #include <libaegisub/ass/uuencode.h> + + #include <algorithm> ++#include <cstring> + + // Despite being called uuencoding by ass_specs.doc, the format is actually + // somewhat different from real uuencoding. Each 3-byte chunk is split into 4 +diff --git a/libaegisub/audio/provider_dummy.cpp b/libaegisub/audio/provider_dummy.cpp +index 01a6ae5b4..41b9c9cb2 100644 +--- a/libaegisub/audio/provider_dummy.cpp ++++ b/libaegisub/audio/provider_dummy.cpp +@@ -18,6 +18,7 @@ + + #include "libaegisub/fs.h" + ++#include <cstring> + #include <random> + + /* +diff --git a/libaegisub/common/cajun/reader.cpp b/libaegisub/common/cajun/reader.cpp +index 6f32d2ff4..5068dfe90 100644 +--- a/libaegisub/common/cajun/reader.cpp ++++ b/libaegisub/common/cajun/reader.cpp +@@ -8,6 +8,7 @@ Author: Terry Caton + + #include "libaegisub/cajun/reader.h" + ++#include <algorithm> + #include <boost/interprocess/streams/bufferstream.hpp> + #include <cassert> + +diff --git a/libaegisub/common/calltip_provider.cpp b/libaegisub/common/calltip_provider.cpp +index de693e637..d0188cbbb 100644 +--- a/libaegisub/common/calltip_provider.cpp ++++ b/libaegisub/common/calltip_provider.cpp +@@ -19,6 +19,7 @@ + #include "libaegisub/ass/dialogue_parser.h" + + #include <algorithm> ++#include <cstring> + + namespace { + struct proto_lit { +diff --git a/libaegisub/common/mru.cpp b/libaegisub/common/mru.cpp +index be12812b6..ef41535c1 100644 +--- a/libaegisub/common/mru.cpp ++++ b/libaegisub/common/mru.cpp +@@ -22,6 +22,8 @@ + #include "libaegisub/option.h" + #include "libaegisub/option_value.h" + ++#include <algorithm> ++ + namespace { + std::string_view mru_names[] = { + "Audio", +diff --git a/libaegisub/common/option.cpp b/libaegisub/common/option.cpp +index 0a1f8c8b3..9b33a3807 100644 +--- a/libaegisub/common/option.cpp ++++ b/libaegisub/common/option.cpp +@@ -25,6 +25,7 @@ + #include "libaegisub/log.h" + #include "libaegisub/option_value.h" + ++#include <algorithm> + #include <boost/interprocess/streams/bufferstream.hpp> + #include <cassert> + #include <memory> +diff --git a/libaegisub/common/thesaurus.cpp b/libaegisub/common/thesaurus.cpp +index 25011b4e6..e5c141e34 100644 +--- a/libaegisub/common/thesaurus.cpp ++++ b/libaegisub/common/thesaurus.cpp +@@ -19,6 +19,7 @@ + #include "libaegisub/line_iterator.h" + #include "libaegisub/split.h" + ++#include <algorithm> + #include <boost/interprocess/streams/bufferstream.hpp> + + namespace agi { +diff --git a/libaegisub/include/libaegisub/lua/ffi.h b/libaegisub/include/libaegisub/lua/ffi.h +index 17cf0088d..29902f77a 100644 +--- a/libaegisub/include/libaegisub/lua/ffi.h ++++ b/libaegisub/include/libaegisub/lua/ffi.h +@@ -17,6 +17,7 @@ + #include <libaegisub/type_name.h> + + #include <cstdlib> ++#include <cstring> + #include <lua.hpp> + + namespace agi::lua { +diff --git a/libaegisub/lua/modules/unicode.cpp b/libaegisub/lua/modules/unicode.cpp +index 9ee64b114..d6d84a97b 100644 +--- a/libaegisub/lua/modules/unicode.cpp ++++ b/libaegisub/lua/modules/unicode.cpp +@@ -18,6 +18,8 @@ + + #include <unicode/unistr.h> + ++#include <cstring> ++ + namespace { + char *wrap(void (*fn)(icu::UnicodeString&), const char *str, char **err) { + auto ustr = icu::UnicodeString::fromUTF8(str); +diff --git a/libaegisub/meson.build b/libaegisub/meson.build +index 7689d31ae..7755b0d39 100644 +--- a/libaegisub/meson.build ++++ b/libaegisub/meson.build +@@ -86,7 +86,9 @@ libaegisub_c_pch = ['include/lagi_pre_c.h'] + + libaegisub_inc = include_directories('include') + +-libaegisub = static_library('aegisub', libaegisub_src, acconf, ++libaegisub = static_library('aegisub', libaegisub_src, aegisub_order_dep, ++ c_args: aegisub_defines, ++ cpp_args: aegisub_defines, + include_directories: [libaegisub_inc, deps_inc], + cpp_pch: libaegisub_cpp_pch, + c_pch: libaegisub_c_pch, +diff --git a/meson.build b/meson.build +index f0e56521c..82c92c724 100644 +--- a/meson.build ++++ b/meson.build +@@ -377,7 +377,23 @@ if not get_option('csri').disabled() and host_machine.system() == 'windows' + deps += csri_sp.get_variable('csri_dep') + endif + +-acconf = configure_file(output: 'acconf.h', configuration: conf) ++aegisub_order_dep = [] ++aegisub_defines = [] ++ ++if get_option('b_pch') ++ # Write the feature flags into a configure_file to not bloat the compiler args too much ++ aegisub_order_dep += configure_file(output: 'acconf.h', configuration: conf) ++else ++ # Manually pass the feature flags as compiler args ++ foreach key : conf.keys() ++ aegisub_defines += '-D@0@=@1@'.format(key, conf.get(key)) ++ endforeach ++ ++ if host_machine.system() == 'windows' ++ # This is also part of all the PCHs ++ aegisub_defines += '-DWIN32_LEAN_AND_MEAN' ++ endif ++endif + + subdir('automation') + subdir('libaegisub') +@@ -389,7 +405,9 @@ subdir('tests') + aegisub_cpp_pch = ['src/include/agi_pre.h'] + aegisub_c_pch = ['src/include/agi_pre_c.h'] + +-aegisub = executable('aegisub', aegisub_src, version_h, acconf, resrc, ++aegisub = executable('aegisub', aegisub_src, version_h, resrc, aegisub_order_dep, ++ c_args: aegisub_defines, ++ cpp_args: aegisub_defines, + link_with: [libresrc, libaegisub], + include_directories: [libaegisub_inc, libresrc_inc, version_inc, deps_inc, include_directories('src')], + cpp_pch: aegisub_cpp_pch, +diff --git a/src/ass_parser.h b/src/ass_parser.h +index 9cf6f5017..c621059b6 100644 +--- a/src/ass_parser.h ++++ b/src/ass_parser.h +@@ -13,6 +13,7 @@ + // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + #include <memory> ++#include <string> + + class AssAttachment; + class AssFile; +diff --git a/src/ass_style.cpp b/src/ass_style.cpp +index 33c93b8f3..559cb337c 100644 +--- a/src/ass_style.cpp ++++ b/src/ass_style.cpp +@@ -40,6 +40,7 @@ + #include <libaegisub/format.h> + #include <libaegisub/split.h> + ++#include <algorithm> + #include <boost/lexical_cast.hpp> + #include <wx/intl.h> + +diff --git a/src/audio_timing_dialogue.cpp b/src/audio_timing_dialogue.cpp +index fd15582b1..38b1617c0 100644 +--- a/src/audio_timing_dialogue.cpp ++++ b/src/audio_timing_dialogue.cpp +@@ -39,9 +39,12 @@ + #include "selection_controller.h" + #include "utils.h" + ++#include <list> ++ + #include <libaegisub/ass/time.h> + + #include <boost/range/algorithm.hpp> ++ + #include <wx/pen.h> + + namespace { +diff --git a/src/base_grid.h b/src/base_grid.h +index 2f28a21dc..017d8b35c 100644 +--- a/src/base_grid.h ++++ b/src/base_grid.h +@@ -32,6 +32,8 @@ + #include <memory> + #include <string> + #include <vector> ++#include <wx/brush.h> ++#include <wx/scrolbar.h> + #include <wx/window.h> + + namespace agi { +diff --git a/src/command/command.h b/src/command/command.h +index c90b230a0..b9582630b 100644 +--- a/src/command/command.h ++++ b/src/command/command.h +@@ -17,6 +17,7 @@ + /// @ingroup command + + #include <map> ++#include <memory> + #include <string> + #include <vector> + +diff --git a/src/dialog_colorpicker.cpp b/src/dialog_colorpicker.cpp +index 3430c48bd..4ba6f7f8c 100644 +--- a/src/dialog_colorpicker.cpp ++++ b/src/dialog_colorpicker.cpp +@@ -38,6 +38,7 @@ + + #include <libaegisub/scoped_ptr.h> + ++#include <algorithm> + #include <memory> + #include <vector> + +diff --git a/src/frame_main.cpp b/src/frame_main.cpp +index 58a8a3d0f..d20bc44fb 100644 +--- a/src/frame_main.cpp ++++ b/src/frame_main.cpp +@@ -67,6 +67,7 @@ + #include <wx/sizer.h> + #include <wx/statline.h> + #include <wx/sysopt.h> ++#include <wx/toolbar.h> + + enum { + ID_APP_TIMER_STATUSCLEAR = 12002 +diff --git a/src/main.h b/src/main.h +index de65b65da..35b7be1c9 100644 +--- a/src/main.h ++++ b/src/main.h +@@ -31,6 +31,8 @@ + + #include "aegisublocale.h" + ++#include <vector> ++ + #ifndef wxUSE_EXCEPTIONS + #error wxWidgets is compiled without exceptions support. Aegisub requires exceptions support in wxWidgets to run safely. + #endif +diff --git a/src/preferences.cpp b/src/preferences.cpp +index 1b0033b05..ccc52a905 100644 +--- a/src/preferences.cpp ++++ b/src/preferences.cpp +@@ -47,6 +47,7 @@ + + #include <wx/checkbox.h> + #include <wx/combobox.h> ++#include <wx/dc.h> + #include <wx/event.h> + #include <wx/listctrl.h> + #include <wx/msgdlg.h> +diff --git a/src/spline_curve.cpp b/src/spline_curve.cpp +index b1a799a0f..8020e5bd3 100644 +--- a/src/spline_curve.cpp ++++ b/src/spline_curve.cpp +@@ -35,6 +35,7 @@ + #include "spline_curve.h" + #include "utils.h" + ++#include <algorithm> + #include <limits> + + SplineCurve::SplineCurve(Vector2D p1) : p1(p1), type(POINT) { } +diff --git a/src/utils.cpp b/src/utils.cpp +index 0a307f10c..5929d6171 100644 +--- a/src/utils.cpp ++++ b/src/utils.cpp +@@ -41,6 +41,7 @@ + #ifdef __UNIX__ + #include <unistd.h> + #endif ++#include <algorithm> + #include <map> + #include <unicode/locid.h> + #include <unicode/unistr.h> +diff --git a/src/video_frame.h b/src/video_frame.h +index 2a47ed69c..c57c92dc2 100644 +--- a/src/video_frame.h ++++ b/src/video_frame.h +@@ -14,6 +14,7 @@ + // + // Aegisub Project http://www.aegisub.org/ + ++#include <stddef.h> + #include <vector> + + class wxImage; diff --git a/media-video/aegisub/files/3.4.2/git_version.h b/media-video/aegisub/files/3.4.2/git_version.h new file mode 100644 index 000000000000..f03726ff0de6 --- /dev/null +++ b/media-video/aegisub/files/3.4.2/git_version.h @@ -0,0 +1,5 @@ +#define BUILD_GIT_VERSION_NUMBER 342 +#define BUILD_GIT_VERSION_STRING "3.4.2" +#define TAGGED_RELEASE 0 +#define INSTALLER_VERSION "0.0.0" +#define RESOURCE_BASE_VERSION 0, 0, 0 |