aegisub: 3.2.2 -> 3.3.2

This also is a switch to wangqr's fork.
This fork is currently used by OpenSUSE, Fedora, Solus, and Void Linux. <https://repology.org/project/aegisub/versions>

<https://github.com/wangqr/aegisub>
This commit is contained in:
Kylie McClain 2022-05-28 01:14:29 -04:00
parent 83658b28fe
commit d61ce4445c
No known key found for this signature in database
3 changed files with 68 additions and 161 deletions

View File

@ -1,8 +1,8 @@
{ lib
, config
, stdenv
, fetchurl
, fetchpatch
, fetchFromGitHub
, autoreconfHook
, boost
, ffmpeg
, ffms
@ -16,7 +16,9 @@
, libX11
, libass
, libiconv
, libuchardet
, pkg-config
, which
, wxGTK
, zlib
@ -24,7 +26,7 @@
, hunspell ? null
, automationSupport ? true
, lua ? null
, luajit ? null
, openalSupport ? false
, openal ? null
@ -37,64 +39,39 @@
, portaudioSupport ? false
, portaudio ? null
}:
assert spellcheckSupport -> (hunspell != null);
assert automationSupport -> (lua != null);
assert automationSupport -> (luajit != null);
assert openalSupport -> (openal != null);
assert alsaSupport -> (alsa-lib != null);
assert pulseaudioSupport -> (libpulseaudio != null);
assert portaudioSupport -> (portaudio != null);
let
luajit52 = luajit.override { enable52Compat = true; };
inherit (lib) optional;
in
stdenv.mkDerivation rec {
pname = "aegisub";
version = "3.2.2";
version = "3.3.2";
src = fetchurl {
url = "http://ftp.aegisub.org/pub/releases/${pname}-${version}.tar.xz";
hash = "sha256-xV4zlFuC2FE8AupueC8Ncscmrc03B+lbjAAi9hUeaIU=";
src = fetchFromGitHub {
owner = "wangqr";
repo = pname;
rev = "v${version}";
sha256 = "sha256-Er0g8fJyx7zjNVpKw7zUHE40hU10BdYlZohlqJq2LE0=";
};
patches = [
# Compatibility with ICU 59
(fetchpatch {
url = "https://github.com/Aegisub/Aegisub/commit/dd67db47cb2203e7a14058e52549721f6ff16a49.patch";
sha256 = "sha256-R2rN7EiyA5cuBYIAMpa0eKZJ3QZahfnRp8R4HyejGB8=";
})
# Compatbility with Boost 1.69
(fetchpatch {
url = "https://github.com/Aegisub/Aegisub/commit/c3c446a8d6abc5127c9432387f50c5ad50012561.patch";
sha256 = "sha256-7nlfojrb84A0DT82PqzxDaJfjIlg5BvWIBIgoqasHNk=";
})
# Compatbility with make 4.3
(fetchpatch {
url = "https://github.com/Aegisub/Aegisub/commit/6bd3f4c26b8fc1f76a8b797fcee11e7611d59a39.patch";
sha256 = "sha256-rG8RJokd4V4aSYOQw2utWnrWPVrkqSV3TAvnGXNhLOk=";
})
# Compatibility with ffms2
(fetchpatch {
url = "https://github.com/Aegisub/Aegisub/commit/1aa9215e7fc360de05da9b7ec2cd68f1940af8b2.patch";
sha256 = "sha256-JsuI4hQTcT0TEqHHoSsGbuiTg4hMCH3Cxp061oLk8Go=";
})
./update-ffms2.patch
# Compatibility with X11
(fetchpatch {
url = "https://github.com/Aegisub/Aegisub/commit/7a6da26be6a830f4e1255091952cc0a1326a4520.patch";
sha256 = "sha256-/aTcIjFlZY4N9+IyHL4nwR0hUR4HTJM7ibbdKmNxq0w=";
})
];
patches = [ ./no-git.patch ];
nativeBuildInputs = [
autoreconfHook
intltool
luajit52
pkg-config
which
];
buildInputs = [
boost
@ -109,17 +86,24 @@ stdenv.mkDerivation rec {
libX11
libass
libiconv
libuchardet
wxGTK
zlib
]
++ optional alsaSupport alsa-lib
++ optional automationSupport lua
++ optional automationSupport luajit52
++ optional openalSupport openal
++ optional portaudioSupport portaudio
++ optional pulseaudioSupport libpulseaudio
++ optional spellcheckSupport hunspell
;
configureFlags = [
"--with-boost-libdir=${boost.out}/lib"
"--with-system-luajit"
"FORCE_GIT_VERSION=${version}"
];
enableParallelBuilding = true;
hardeningDisable = [
@ -127,22 +111,10 @@ stdenv.mkDerivation rec {
"relro"
];
postPatch = ''
sed -i 's/-Wno-c++11-narrowing/-Wno-narrowing/' configure.ac src/Makefile
'';
# compat with icu61+
# https://github.com/unicode-org/icu/blob/release-64-2/icu4c/readme.html#L554
CXXFLAGS = [ "-DU_USING_ICU_NAMESPACE=1" ];
# this is fixed upstream though not yet in an officially released version,
# should be fine remove on next release (if one ever happens)
NIX_LDFLAGS = "-lpthread";
postInstall = "ln -s $out/bin/aegisub-* $out/bin/aegisub";
meta = with lib; {
homepage = "https://github.com/Aegisub/Aegisub";
homepage = "https://github.com/wangqr/Aegisub";
description = "An advanced subtitle editor";
longDescription = ''
Aegisub is a free, cross-platform open source tool for creating and
@ -157,4 +129,3 @@ stdenv.mkDerivation rec {
platforms = [ "i686-linux" "x86_64-linux" ];
};
}
# TODO [ AndersonTorres ]: update to fork release

View File

@ -0,0 +1,41 @@
Modified from <https://github.com/wangqr/Aegisub/commit/f8dca9f6386299ec2f90158e2d923a8fb30e3466>
to patch cleanly to v3.3.2. Necessary for building without git.
Upstream and will be in next release.
diff --git a/build/version.sh b/build/version.sh
index 8cea0a3f3..d505341e4 100755
--- a/build/version.sh
+++ b/build/version.sh
@@ -10,13 +10,13 @@ if ! test -d "${srcdir}/.git"; then
done < "${version_h_path}"
if test x$BUILD_GIT_VERSION_NUMBER != x -a x$BUILD_GIT_VERSION_STRING != x; then
export VERSION_SOURCE="from cached git_version.h"
- return 0
+ exit 0
else
echo "invalid git_version.h"
exit 2
fi
- else
- echo "git repo not found and no cached git_version.h"
+ elif [ -z "$FORCE_GIT_VERSION" ]; then
+ echo "git repo not found and no cached git_version.h - use FORCE_GIT_VERSION to override"
exit 2
fi
fi
@@ -25,13 +25,13 @@ last_svn_revision=6962
last_svn_hash="16cd907fe7482cb54a7374cd28b8501f138116be"
git_revision=$(expr $last_svn_revision + $(git log --pretty=oneline $last_svn_hash..HEAD 2>/dev/null | wc -l))
-git_version_str=$(git describe --exact-match 2> /dev/null)
+git_version_str=${FORCE_GIT_VERSION:-$(git describe --exact-match 2> /dev/null)}
installer_version='0.0.0'
resource_version='0, 0, 0'
if test x$git_version_str != x; then
git_version_str="${git_version_str##v}"
tagged_release=1
- if [ $(echo $git_version_str | grep '\d\.\d\.\d') ]; then
+ if [ $(echo $git_version_str | grep '[0-9].[0-9].[0-9]') ]; then
installer_version=$git_version_str
resource_version=$(echo $git_version_str | sed 's/\./, /g')
fi

View File

@ -1,105 +0,0 @@
commit 89c4e8d34ab77c3322f097b91fd9de22cbea7a37
Author: Thomas Goyne <plorkyeran@aegisub.org>
Date: Wed Nov 21 16:41:05 2018 -0800
Update ffmpeg and ffms2
diff --git a/src/video_provider_ffmpegsource.cpp b/src/video_provider_ffmpegsource.cpp
index 8bd68fbbf..f4ed6a2f2 100644
--- a/src/video_provider_ffmpegsource.cpp
+++ b/src/video_provider_ffmpegsource.cpp
@@ -44,6 +44,23 @@
#include <libaegisub/make_unique.h>
namespace {
+typedef enum AGI_ColorSpaces {
+ AGI_CS_RGB = 0,
+ AGI_CS_BT709 = 1,
+ AGI_CS_UNSPECIFIED = 2,
+ AGI_CS_FCC = 4,
+ AGI_CS_BT470BG = 5,
+ AGI_CS_SMPTE170M = 6,
+ AGI_CS_SMPTE240M = 7,
+ AGI_CS_YCOCG = 8,
+ AGI_CS_BT2020_NCL = 9,
+ AGI_CS_BT2020_CL = 10,
+ AGI_CS_SMPTE2085 = 11,
+ AGI_CS_CHROMATICITY_DERIVED_NCL = 12,
+ AGI_CS_CHROMATICITY_DERIVED_CL = 13,
+ AGI_CS_ICTCP = 14
+} AGI_ColorSpaces;
+
/// @class FFmpegSourceVideoProvider
/// @brief Implements video loading through the FFMS library.
class FFmpegSourceVideoProvider final : public VideoProvider, FFmpegSourceProvider {
@@ -78,7 +95,7 @@ public:
if (matrix == RealColorSpace)
FFMS_SetInputFormatV(VideoSource, CS, CR, FFMS_GetPixFmt(""), nullptr);
else if (matrix == "TV.601")
- FFMS_SetInputFormatV(VideoSource, FFMS_CS_BT470BG, CR, FFMS_GetPixFmt(""), nullptr);
+ FFMS_SetInputFormatV(VideoSource, AGI_CS_BT470BG, CR, FFMS_GetPixFmt(""), nullptr);
else
return;
ColorSpace = matrix;
@@ -103,16 +120,16 @@ std::string colormatrix_description(int cs, int cr) {
std::string str = cr == FFMS_CR_JPEG ? "PC" : "TV";
switch (cs) {
- case FFMS_CS_RGB:
+ case AGI_CS_RGB:
return "None";
- case FFMS_CS_BT709:
+ case AGI_CS_BT709:
return str + ".709";
- case FFMS_CS_FCC:
+ case AGI_CS_FCC:
return str + ".FCC";
- case FFMS_CS_BT470BG:
- case FFMS_CS_SMPTE170M:
+ case AGI_CS_BT470BG:
+ case AGI_CS_SMPTE170M:
return str + ".601";
- case FFMS_CS_SMPTE240M:
+ case AGI_CS_SMPTE240M:
return str + ".240M";
default:
throw VideoOpenError("Unknown video color space");
@@ -206,8 +223,10 @@ void FFmpegSourceVideoProvider::LoadVideo(agi::fs::path const& filename, std::st
// set thread count
int Threads = OPT_GET("Provider/Video/FFmpegSource/Decoding Threads")->GetInt();
+#if FFMS_VERSION < ((2 << 24) | (30 << 16) | (0 << 8) | 0)
if (FFMS_GetVersion() < ((2 << 24) | (17 << 16) | (2 << 8) | 1) && FFMS_GetSourceType(Index) == FFMS_SOURCE_LAVF)
Threads = 1;
+#endif
// set seekmode
// TODO: give this its own option?
@@ -235,18 +254,22 @@ void FFmpegSourceVideoProvider::LoadVideo(agi::fs::path const& filename, std::st
else
DAR = double(Width) / Height;
- CS = TempFrame->ColorSpace;
+ int VideoCS = CS = TempFrame->ColorSpace;
CR = TempFrame->ColorRange;
- if (CS == FFMS_CS_UNSPECIFIED)
- CS = Width > 1024 || Height >= 600 ? FFMS_CS_BT709 : FFMS_CS_BT470BG;
+ if (CS == AGI_CS_UNSPECIFIED)
+ CS = Width > 1024 || Height >= 600 ? AGI_CS_BT709 : AGI_CS_BT470BG;
RealColorSpace = ColorSpace = colormatrix_description(CS, CR);
#if FFMS_VERSION >= ((2 << 24) | (17 << 16) | (1 << 8) | 0)
- if (CS != FFMS_CS_RGB && CS != FFMS_CS_BT470BG && ColorSpace != colormatrix && (colormatrix == "TV.601" || OPT_GET("Video/Force BT.601")->GetBool())) {
- if (FFMS_SetInputFormatV(VideoSource, FFMS_CS_BT470BG, CR, FFMS_GetPixFmt(""), &ErrInfo))
+ if (CS != AGI_CS_RGB && CS != AGI_CS_BT470BG && ColorSpace != colormatrix && (colormatrix == "TV.601" || OPT_GET("Video/Force BT.601")->GetBool())) {
+ CS = AGI_CS_BT470BG;
+ ColorSpace = colormatrix_description(AGI_CS_BT470BG, CR);
+ }
+
+ if (CS != VideoCS) {
+ if (FFMS_SetInputFormatV(VideoSource, CS, CR, FFMS_GetPixFmt(""), &ErrInfo))
throw VideoOpenError(std::string("Failed to set input format: ") + ErrInfo.Buffer);
- ColorSpace = colormatrix_description(FFMS_CS_BT470BG, CR);
}
#endif