media-video/aegisub: add 3.4.2

Signed-off-by: Nick Sarnie <sarnex@gentoo.org>
This commit is contained in:
Nick Sarnie
2025-01-22 19:23:14 +09:00
parent 2f500dc9e1
commit 85524f4d04
4 changed files with 537 additions and 0 deletions

View File

@@ -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

View File

@@ -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
}

View File

@@ -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;

View File

@@ -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