summaryrefslogtreecommitdiff
path: root/office/goldendict
diff options
context:
space:
mode:
authorMatteo Bernardini <ponce@slackbuilds.org>2021-03-04 18:51:56 +0100
committerRobby Workman <rworkman@slackbuilds.org>2021-04-17 23:25:26 -0500
commitc597630c463567cf87a35ad41a2504c1470420ca (patch)
treecdb4668b3ed2f2dca059bec7f2399d1a270646f1 /office/goldendict
parent7a5dba5f92a53ca021469f4c872631f5c9539202 (diff)
downloadslackbuilds-c597630c463567cf87a35ad41a2504c1470420ca.tar.gz
office/goldendict: Patch for the newer qt5 and ffmpeg.
Signed-off-by: Matteo Bernardini <ponce@slackbuilds.org>
Diffstat (limited to 'office/goldendict')
-rw-r--r--office/goldendict/goldendict.SlackBuild11
-rw-r--r--office/goldendict/patches/goldendict-ffmpeg4.patch167
-rw-r--r--office/goldendict/patches/goldendict-qt-5.11-1.patch34
-rw-r--r--office/goldendict/patches/goldendict-qt-5.11-2.patch22
4 files changed, 232 insertions, 2 deletions
diff --git a/office/goldendict/goldendict.SlackBuild b/office/goldendict/goldendict.SlackBuild
index 2d1e6b478f..71a698c559 100644
--- a/office/goldendict/goldendict.SlackBuild
+++ b/office/goldendict/goldendict.SlackBuild
@@ -53,9 +53,16 @@ cd $TMP
rm -rf $PRGNAM-$SRCVER
tar xvf $CWD/$PRGNAM-$SRCVER.tar.gz
cd $PRGNAM-$SRCVER
-chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-$(type -p qmake-qt5 || echo qmake) PREFIX=/usr \
+# archlinux, thanks for all the patches!
+for i in $CWD/patches/* ; do patch -p1 < $i ; done
+
+qmake-qt5 PREFIX=/usr \
CONFIG+=no_epwing_support \
CONFIG+=zim_support \
DISABLE_INTERNAL_PLAYER=$DISABLE_INTERNAL_PLAYER
diff --git a/office/goldendict/patches/goldendict-ffmpeg4.patch b/office/goldendict/patches/goldendict-ffmpeg4.patch
new file mode 100644
index 0000000000..6e6d03675a
--- /dev/null
+++ b/office/goldendict/patches/goldendict-ffmpeg4.patch
@@ -0,0 +1,167 @@
+From 03bbe01b79a1f07a6780cb60f23a087104c5d77b Mon Sep 17 00:00:00 2001
+From: Abs62 <ottomann@yandex.ru>
+Date: Fri, 30 Mar 2018 22:53:24 +0300
+Subject: [PATCH] Fix warnings while compile with FFMpeg 3.4.2 (issue #978)
+
+---
+ ffmpegaudio.cc | 68 +++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 62 insertions(+), 6 deletions(-)
+
+diff --git a/ffmpegaudio.cc b/ffmpegaudio.cc
+index ed1172bd..56e8f788 100644
+--- a/ffmpegaudio.cc
++++ b/ffmpegaudio.cc
+@@ -91,6 +91,7 @@ struct DecoderContext
+ QByteArray audioData_;
+ QDataStream audioDataStream_;
+ AVFormatContext * formatContext_;
++ AVCodec * codec_;
+ AVCodecContext * codecContext_;
+ AVIOContext * avioContext_;
+ AVStream * audioStream_;
+@@ -114,6 +115,7 @@ DecoderContext::DecoderContext( QByteArray const & audioData, QAtomicInt & isCan
+ audioData_( audioData ),
+ audioDataStream_( audioData_ ),
+ formatContext_( NULL ),
++ codec_( NULL ),
+ codecContext_( NULL ),
+ avioContext_( NULL ),
+ audioStream_( NULL ),
+@@ -143,7 +145,11 @@ bool DecoderContext::openCodec( QString & errorString )
+ return false;
+ }
+
++#if LIBAVCODEC_VERSION_MAJOR < 56 || ( LIBAVCODEC_VERSION_MAJOR == 56 && LIBAVCODEC_VERSION_MINOR < 56 )
+ unsigned char * avioBuffer = ( unsigned char * )av_malloc( kBufferSize + FF_INPUT_BUFFER_PADDING_SIZE );
++#else
++ unsigned char * avioBuffer = ( unsigned char * )av_malloc( kBufferSize + AV_INPUT_BUFFER_PADDING_SIZE );
++#endif
+ if ( !avioBuffer )
+ {
+ errorString = QObject::tr( "av_malloc() failed." );
+@@ -186,7 +192,11 @@ bool DecoderContext::openCodec( QString & errorString )
+ // Find audio stream, use the first audio stream if available
+ for ( unsigned i = 0; i < formatContext_->nb_streams; i++ )
+ {
++#if LIBAVCODEC_VERSION_MAJOR < 57 || ( LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR < 33 )
+ if ( formatContext_->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO )
++#else
++ if ( formatContext_->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO )
++#endif
+ {
+ audioStream_ = formatContext_->streams[i];
+ break;
+@@ -198,22 +208,38 @@ bool DecoderContext::openCodec( QString & errorString )
+ return false;
+ }
+
++#if LIBAVCODEC_VERSION_MAJOR < 57 || ( LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR < 33 )
+ codecContext_ = audioStream_->codec;
+- AVCodec * codec = avcodec_find_decoder( codecContext_->codec_id );
+- if ( !codec )
++ codec_ = avcodec_find_decoder( codecContext_->codec_id );
++ if ( !codec_ )
+ {
+ errorString = QObject::tr( "Codec [id: %1] not found." ).arg( codecContext_->codec_id );
+ return false;
+ }
++#else
++ codec_ = avcodec_find_decoder( audioStream_->codecpar->codec_id );
++ if ( !codec_ )
++ {
++ errorString = QObject::tr( "Codec [id: %1] not found." ).arg( audioStream_->codecpar->codec_id );
++ return false;
++ }
++ codecContext_ = avcodec_alloc_context3( codec_ );
++ if ( !codecContext_ )
++ {
++ errorString = QObject::tr( "avcodec_alloc_context3() failed." );
++ return false;
++ }
++ avcodec_parameters_to_context( codecContext_, audioStream_->codecpar );
++#endif
+
+- ret = avcodec_open2( codecContext_, codec, NULL );
++ ret = avcodec_open2( codecContext_, codec_, NULL );
+ if ( ret < 0 )
+ {
+ errorString = QObject::tr( "avcodec_open2() failed: %1." ).arg( avErrorString( ret ) );
+ return false;
+ }
+
+- av_log( NULL, AV_LOG_INFO, "Codec open: %s: channels: %d, rate: %d, format: %s\n", codec->long_name,
++ av_log( NULL, AV_LOG_INFO, "Codec open: %s: channels: %d, rate: %d, format: %s\n", codec_->long_name,
+ codecContext_->channels, codecContext_->sample_rate, av_get_sample_fmt_name( codecContext_->sample_fmt ) );
+ return true;
+ }
+@@ -252,10 +278,13 @@ void DecoderContext::closeCodec()
+
+ // Closing a codec context without prior avcodec_open2() will result in
+ // a crash in ffmpeg
+- if ( audioStream_ && audioStream_->codec && audioStream_->codec->codec )
++ if ( audioStream_ && codecContext_ && codec_ )
+ {
+ audioStream_->discard = AVDISCARD_ALL;
+- avcodec_close( audioStream_->codec );
++ avcodec_close( codecContext_ );
++#if LIBAVCODEC_VERSION_MAJOR > 57 || ( LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR >= 33 )
++ avcodec_free_context( &codecContext_ );
++#endif
+ }
+
+ avformat_close_input( &formatContext_ );
+@@ -356,6 +385,7 @@ bool DecoderContext::play( QString & errorString )
+ if ( packet.stream_index == audioStream_->index )
+ {
+ AVPacket pack = packet;
++#if LIBAVCODEC_VERSION_MAJOR < 57 || ( LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR < 37 )
+ int gotFrame = 0;
+ do
+ {
+@@ -370,6 +400,19 @@ bool DecoderContext::play( QString & errorString )
+ pack.data += len;
+ }
+ while( pack.size > 0 );
++#else
++ int ret = avcodec_send_packet( codecContext_, &pack );
++ /* read all the output frames (in general there may be any number of them) */
++ while( ret >= 0 )
++ {
++ ret = avcodec_receive_frame( codecContext_, frame);
++
++ if ( Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) || ret < 0 )
++ break;
++
++ playFrame( frame );
++ }
++#endif
+ }
+ // av_free_packet() must be called after each call to av_read_frame()
+ #if LIBAVCODEC_VERSION_MAJOR < 57 || ( LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR < 7 )
+@@ -379,6 +422,7 @@ bool DecoderContext::play( QString & errorString )
+ #endif
+ }
+
++#if LIBAVCODEC_VERSION_MAJOR < 57 || ( LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR < 37 )
+ if ( !Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) &&
+ codecContext_->codec->capabilities & CODEC_CAP_DELAY )
+ {
+@@ -391,6 +435,18 @@ bool DecoderContext::play( QString & errorString )
+ playFrame( frame );
+ }
+ }
++#else
++ /* flush the decoder */
++ av_init_packet( &packet );
++ int ret = avcodec_send_packet(codecContext_, &packet );
++ while( ret >= 0 )
++ {
++ ret = avcodec_receive_frame(codecContext_, frame);
++ if ( Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) || ret < 0 )
++ break;
++ playFrame( frame );
++ }
++#endif
+
+ #if LIBAVCODEC_VERSION_MAJOR < 54
+ av_free( frame );
diff --git a/office/goldendict/patches/goldendict-qt-5.11-1.patch b/office/goldendict/patches/goldendict-qt-5.11-1.patch
new file mode 100644
index 0000000000..feb1b26e0b
--- /dev/null
+++ b/office/goldendict/patches/goldendict-qt-5.11-1.patch
@@ -0,0 +1,34 @@
+From 3d4a468b6c8cb154c88cf4592a5845973999dc29 Mon Sep 17 00:00:00 2001
+From: Abs62 <ottomann@yandex.ru>
+Date: Tue, 10 Apr 2018 18:44:43 +0300
+Subject: [PATCH] Qt5: Fix compilation with Qt 5.11 (issue #991)
+
+---
+ fulltextsearch.hh | 1 +
+ initializing.cc | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/fulltextsearch.hh b/fulltextsearch.hh
+index da7e2943..adf9619f 100644
+--- a/fulltextsearch.hh
++++ b/fulltextsearch.hh
+@@ -6,6 +6,7 @@
+ #include <QRegExp>
+ #include <QAbstractListModel>
+ #include <QList>
++#include <QAction>
+
+ #include "dictionary.hh"
+ #include "ui_fulltextsearch.h"
+diff --git a/initializing.cc b/initializing.cc
+index 0db6909b..59e605d6 100644
+--- a/initializing.cc
++++ b/initializing.cc
+@@ -1,6 +1,7 @@
+ /* This file is (c) 2008-2012 Konstantin Isakov <ikm@goldendict.org>
+ * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */
+
++#include <QIcon>
+ #include "initializing.hh"
+ #include <QCloseEvent>
+
diff --git a/office/goldendict/patches/goldendict-qt-5.11-2.patch b/office/goldendict/patches/goldendict-qt-5.11-2.patch
new file mode 100644
index 0000000000..7410021651
--- /dev/null
+++ b/office/goldendict/patches/goldendict-qt-5.11-2.patch
@@ -0,0 +1,22 @@
+From a65967805ab424b299bdfa1d1f9c7ebb8a7fd517 Mon Sep 17 00:00:00 2001
+From: Perfect Gentleman <perfect007gentleman@gmail.com>
+Date: Wed, 11 Apr 2018 00:04:12 +0700
+Subject: [PATCH] Update groups_widgets.hh
+
+fixes https://github.com/goldendict/goldendict/issues/991
+---
+ groups_widgets.hh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/groups_widgets.hh b/groups_widgets.hh
+index ce442fa2..2064e3bb 100644
+--- a/groups_widgets.hh
++++ b/groups_widgets.hh
+@@ -8,6 +8,7 @@
+
+ #include <vector>
+
++#include <QAction>
+ #include <QListWidget>
+ #include <QSortFilterProxyModel>
+