commit:     1d36e1f109781ef9bb94f613c032435d84282098
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Mon Sep  7 15:46:16 2020 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Sep  7 15:46:47 2020 +0000
URL:        https://gitweb.gentoo.org/proj/kde-sunset.git/commit/?id=1d36e1f1

media-libs/qt-gstreamer: Import latest version, configure with Qt4

Required by kde-apps/artikulate.

- New SLOT="0-qt4" to be able to install it side-by side w/ Qt5 version
- Block colliding SLOT="0" versions <1.2.0-r4

Package-Manager: Portage-3.0.5, Repoman-3.0.1
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../files/qt-gstreamer-1.2.0-boost157.patch        | 204 +++++++++++++++++++++
 .../files/qt-gstreamer-1.2.0-clang-38.patch        |  67 +++++++
 .../files/qt-gstreamer-1.2.0-gstreamer15.patch     |  39 ++++
 .../files/qt-gstreamer-1.2.0-gstreamer16.patch     |  25 +++
 media-libs/qt-gstreamer/metadata.xml               |   8 +
 .../qt-gstreamer/qt-gstreamer-1.2.0-r3.ebuild      |  55 ++++++
 6 files changed, 398 insertions(+)

diff --git a/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-boost157.patch 
b/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-boost157.patch
new file mode 100644
index 00000000..e8227393
--- /dev/null
+++ b/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-boost157.patch
@@ -0,0 +1,204 @@
+Add include guards to all boost includes, as qt's moc trips
+over nested BOOST_JOIN macros:
+* AUTOGEN: error: process for 
/var/tmp/portage/media-libs/qt-gstreamer-1.2.0-r1/work/qt-gstreamer-1.2.0-4/src/QGst/moc_graphicsvideowidget.cpp
 failed:
+* usr/include/boost/type_traits/detail/has_binary_operator.hp:50: Parse error 
at "BOOST_JOIN"
+https://bugs.gentoo.org/show_bug.cgi?id=578906
+
+--- qt-gstreamer-1.2.0/codegen/generator.cpp
++++ qt-gstreamer-1.2.0/codegen/generator.cpp
+@@ -54,7 +54,9 @@
+         << "*/" << endl
+         << endl
+         << "#define INCLUDED_FROM_CODEGEN" << endl
++        << "#ifndef Q_MOC_RUN" << endl
+         << "#include <boost/static_assert.hpp>" << endl
++        << "#endif" << endl
+         << endl
+         << "#define REGISTER_TYPE_IMPLEMENTATION(T, GTYPE) \\" << endl
+         << "    namespace QGlib { \\" << endl
+--- qt-gstreamer-1.2.0/src/QGlib/connect.cpp
++++ qt-gstreamer-1.2.0/src/QGlib/connect.cpp
+@@ -20,10 +20,12 @@
+ #include <glib-object.h>
+ #include <QtCore/QHash>
+ #include <QtCore/QMutex>
++#ifndef Q_MOC_RUN
+ #include <boost/multi_index_container.hpp>
+ #include <boost/multi_index/sequenced_index.hpp>
+ #include <boost/multi_index/ordered_index.hpp>
+ #include <boost/multi_index/member.hpp>
++#endif
+ 
+ namespace QGlib {
+ namespace Private {
+--- qt-gstreamer-1.2.0/src/QGlib/connect.h
++++ qt-gstreamer-1.2.0/src/QGlib/connect.h
+@@ -25,8 +25,10 @@
+ #include <QtCore/QSharedPointer>
+ #include <QtCore/QFlags>
+ #include <QtCore/QHash>
++#ifndef Q_MOC_RUN
+ #include <boost/type_traits.hpp>
+ #include <boost/utility/enable_if.hpp>
++#endif
+ 
+ namespace QGlib {
+ 
+--- qt-gstreamer-1.2.0/src/QGlib/connectimpl.h
++++ qt-gstreamer-1.2.0/src/QGlib/connectimpl.h
+@@ -26,7 +26,9 @@
+ # include "refpointer.h"
+ # include <QtCore/QList>
+ # include <stdexcept>
++#ifndef Q_MOC_RUN
+ # include <boost/type_traits.hpp>
++#endif
+ 
+ 
+ namespace QGlib {
+@@ -203,9 +205,11 @@
+ 
+ # else //QGLIB_HAVE_CXX0X
+ 
++#ifndef Q_MOC_RUN
+ #  include <boost/function.hpp>
+ #  include <boost/preprocessor.hpp>
+ #  include <boost/bind.hpp>
++#endif
+ 
+ // include the second part of this file as many times as 
QGLIB_CONNECT_MAX_ARGS specifies
+ #  define BOOST_PP_ITERATION_PARAMS_1 (3,(0, QGLIB_CONNECT_MAX_ARGS, 
"QGlib/connectimpl.h"))
+--- qt-gstreamer-1.2.0/src/QGlib/emitimpl.h
++++ qt-gstreamer-1.2.0/src/QGlib/emitimpl.h
+@@ -125,7 +125,9 @@
+ 
+ # else //QGLIB_HAVE_CXX0X
+ 
++#ifndef Q_MOC_RUN
+ #  include <boost/preprocessor.hpp>
++#endif
+ 
+ // include the second part of this file as many times as 
QGLIB_SIGNAL_MAX_ARGS specifies
+ #  define BOOST_PP_ITERATION_PARAMS_1 (3,(0, QGLIB_SIGNAL_MAX_ARGS, 
"QGlib/emitimpl.h"))
+--- qt-gstreamer-1.2.0/src/QGlib/gen.cpp
++++ qt-gstreamer-1.2.0/src/QGlib/gen.cpp
+@@ -19,7 +19,9 @@
+ */
+ 
+ #define INCLUDED_FROM_CODEGEN
++#ifndef Q_MOC_RUN
+ #include <boost/static_assert.hpp>
++#endif
+ 
+ #define REGISTER_TYPE_IMPLEMENTATION(T, GTYPE) \
+     namespace QGlib { \
+--- qt-gstreamer-1.2.0/src/QGlib/global.h
++++ qt-gstreamer-1.2.0/src/QGlib/global.h
+@@ -23,7 +23,9 @@
+ #endif
+ 
+ #include <QtCore/QtGlobal>
++#ifndef Q_MOC_RUN
+ #include <boost/config.hpp>
++#endif
+ 
+ /* defined by cmake when building this library */
+ #if defined(QtGLib_EXPORTS) || defined(Qt5GLib_EXPORTS)
+@@ -84,7 +86,9 @@
+ # define QGLIB_STATIC_ASSERT(expr, message) static_assert(expr, message)
+ # define QGLIB_HAVE_CXX0X_STATIC_ASSERT 1
+ #else
++#ifndef Q_MOC_RUN
+ # include <boost/static_assert.hpp>
++#endif
+ # define QGLIB_STATIC_ASSERT(expr, message) BOOST_STATIC_ASSERT(expr)
+ #endif
+ 
+--- qt-gstreamer-1.2.0/src/QGlib/refpointer.h
++++ qt-gstreamer-1.2.0/src/QGlib/refpointer.h
+@@ -23,8 +23,10 @@
+ #include "type.h"
+ #include "wrap.h"
+ #include <cstddef>
++#ifndef Q_MOC_RUN
+ #include <boost/type_traits.hpp>
+ #include <boost/utility/enable_if.hpp>
++#endif
+ #include <QtCore/QHash>
+ 
+ namespace QGlib {
+--- qt-gstreamer-1.2.0/src/QGlib/type.h
++++ qt-gstreamer-1.2.0/src/QGlib/type.h
+@@ -21,7 +21,9 @@
+ 
+ #include "global.h"
+ #include <QtCore/QList>
++#ifndef Q_MOC_RUN
+ #include <boost/mpl/if.hpp>
++#endif
+ 
+ /*
+  * This is a re-definition of GType inside the QGlib::Private namespace.
+--- qt-gstreamer-1.2.0/src/QGlib/value.cpp
++++ qt-gstreamer-1.2.0/src/QGlib/value.cpp
+@@ -19,7 +19,9 @@
+ #include "value.h"
+ #include "string.h"
+ #include <cstring>
++#ifndef Q_MOC_RUN
+ #include <boost/type_traits.hpp>
++#endif
+ #include <glib-object.h>
+ #include <QtCore/QDebug>
+ #include <QtCore/QReadWriteLock>
+--- qt-gstreamer-1.2.0/src/QGlib/value.h
++++ qt-gstreamer-1.2.0/src/QGlib/value.h
+@@ -23,8 +23,10 @@
+ #include "type.h"
+ #include "refpointer.h"
+ #include "error.h"
++#ifndef Q_MOC_RUN
+ #include <boost/mpl/if.hpp>
+ #include <boost/type_traits.hpp>
++#endif
+ #include <stdexcept>
+ #include <QtCore/QString>
+ #include <QtCore/QDebug>
+--- qt-gstreamer-1.2.0/src/QGst/bin.h
++++ qt-gstreamer-1.2.0/src/QGst/bin.h
+@@ -28,8 +28,10 @@
+ #endif
+ 
+ #if !QGLIB_HAVE_CXX0X
++#ifndef Q_MOC_RUN
+ # include <boost/preprocessor.hpp>
+ #endif
++#endif
+ 
+ namespace QGst {
+ 
+--- qt-gstreamer-1.2.0/src/QGst/element.h
++++ qt-gstreamer-1.2.0/src/QGst/element.h
+@@ -22,8 +22,10 @@
+ #include "clocktime.h"
+ 
+ #if !QGLIB_HAVE_CXX0X
++#ifndef Q_MOC_RUN
+ # include <boost/preprocessor.hpp>
+ #endif
++#endif
+ 
+ namespace QGst {
+ 
+--- qt-gstreamer-1.2.0/src/QGst/gen.cpp
++++ qt-gstreamer-1.2.0/src/QGst/gen.cpp
+@@ -19,7 +19,9 @@
+ */
+ 
+ #define INCLUDED_FROM_CODEGEN
++#ifndef Q_MOC_RUN
+ #include <boost/static_assert.hpp>
++#endif
+ 
+ #define REGISTER_TYPE_IMPLEMENTATION(T, GTYPE) \
+     namespace QGlib { \

diff --git a/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-clang-38.patch 
b/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-clang-38.patch
new file mode 100644
index 00000000..977a09d7
--- /dev/null
+++ b/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-clang-38.patch
@@ -0,0 +1,67 @@
+From fc159e5c4c8ffeabdc7319514c6bb19c9c9e1d3b Mon Sep 17 00:00:00 2001
+From: Aleix Pol <[email protected]>
+Date: Mon, 13 Jun 2016 10:36:34 +0200
+Subject: [PATCH] Fix build with Clang 3.8
+
+error: invalid suffix on literal; C++11 requires a space between literal and 
identifier
+
+https://bugzilla.gnome.org/show_bug.cgi?id=767578
+---
+ elements/gstqtvideosink/delegates/basedelegate.cpp             | 2 +-
+ elements/gstqtvideosink/delegates/qwidgetvideosinkdelegate.cpp | 2 +-
+ elements/gstqtvideosink/gstqtquick2videosink.cpp               | 2 +-
+ elements/gstqtvideosink/gstqtvideosinkbase.cpp                 | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/elements/gstqtvideosink/delegates/basedelegate.cpp 
b/elements/gstqtvideosink/delegates/basedelegate.cpp
+index 7dde59c..65f364c 100644
+--- a/elements/gstqtvideosink/delegates/basedelegate.cpp
++++ b/elements/gstqtvideosink/delegates/basedelegate.cpp
+@@ -155,7 +155,7 @@ bool BaseDelegate::event(QEvent *event)
+         BufferEvent *bufEvent = dynamic_cast<BufferEvent*>(event);
+         Q_ASSERT(bufEvent);
+ 
+-        GST_TRACE_OBJECT(m_sink, "Received buffer %"GST_PTR_FORMAT, 
bufEvent->buffer);
++        GST_TRACE_OBJECT(m_sink, "Received buffer %" GST_PTR_FORMAT, 
bufEvent->buffer);
+ 
+         if (isActive()) {
+             gst_buffer_replace (&m_buffer, bufEvent->buffer);
+diff --git a/elements/gstqtvideosink/delegates/qwidgetvideosinkdelegate.cpp 
b/elements/gstqtvideosink/delegates/qwidgetvideosinkdelegate.cpp
+index 8f23dc2..c42513f 100644
+--- a/elements/gstqtvideosink/delegates/qwidgetvideosinkdelegate.cpp
++++ b/elements/gstqtvideosink/delegates/qwidgetvideosinkdelegate.cpp
+@@ -36,7 +36,7 @@ QWidget *QWidgetVideoSinkDelegate::widget() const
+ 
+ void QWidgetVideoSinkDelegate::setWidget(QWidget *widget)
+ {
+-    GST_LOG_OBJECT(m_sink, "Setting \"widget\" property to %"GST_PTR_FORMAT, 
widget);
++    GST_LOG_OBJECT(m_sink, "Setting \"widget\" property to %" GST_PTR_FORMAT, 
widget);
+ 
+     if (m_widget) {
+         m_widget.data()->removeEventFilter(this);
+diff --git a/elements/gstqtvideosink/gstqtquick2videosink.cpp 
b/elements/gstqtvideosink/gstqtquick2videosink.cpp
+index 7889fbf..bedc074 100644
+--- a/elements/gstqtvideosink/gstqtquick2videosink.cpp
++++ b/elements/gstqtvideosink/gstqtquick2videosink.cpp
+@@ -248,7 +248,7 @@ gst_qt_quick2_video_sink_show_frame(GstVideoSink *sink, 
GstBuffer *buffer)
+ {
+     GstQtQuick2VideoSink *self = GST_QT_QUICK2_VIDEO_SINK (sink);
+ 
+-    GST_TRACE_OBJECT(self, "Posting new buffer (%"GST_PTR_FORMAT") for 
rendering.", buffer);
++    GST_TRACE_OBJECT(self, "Posting new buffer (%" GST_PTR_FORMAT ") for 
rendering.", buffer);
+ 
+     QCoreApplication::postEvent(self->priv->delegate, new 
BaseDelegate::BufferEvent(buffer));
+ 
+diff --git a/elements/gstqtvideosink/gstqtvideosinkbase.cpp 
b/elements/gstqtvideosink/gstqtvideosinkbase.cpp
+index 118d0a2..a707e02 100644
+--- a/elements/gstqtvideosink/gstqtvideosinkbase.cpp
++++ b/elements/gstqtvideosink/gstqtvideosinkbase.cpp
+@@ -207,7 +207,7 @@ GstFlowReturn GstQtVideoSinkBase::show_frame(GstVideoSink 
*video_sink, GstBuffer
+ {
+     GstQtVideoSinkBase *sink = GST_QT_VIDEO_SINK_BASE(video_sink);
+ 
+-    GST_TRACE_OBJECT(sink, "Posting new buffer (%"GST_PTR_FORMAT") for 
rendering.", buffer);
++    GST_TRACE_OBJECT(sink, "Posting new buffer (%" GST_PTR_FORMAT ") for 
rendering.", buffer);
+ 
+     QCoreApplication::postEvent(sink->delegate, new 
BaseDelegate::BufferEvent(buffer));
+ 

diff --git a/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-gstreamer15.patch 
b/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-gstreamer15.patch
new file mode 100644
index 00000000..6e875f67
--- /dev/null
+++ b/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-gstreamer15.patch
@@ -0,0 +1,39 @@
+From e2ca8094aa8d0eac1c3a98df66fe94ce0c754088 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Manuel=20Santamar=C3=ADa?= <[email protected]>
+Date: Fri, 2 Oct 2015 15:00:29 +0300
+Subject: Fix compilation with GStreamer >= 1.5.1
+
+apply gstreamer pkg-config definitions To ensure gstreamer builds correctly,
+pick up its cflags in FindGstreamer and apply them to the build as definitions
+
+https://lists.ubuntu.com/archives/kubuntu-devel/2015-August/009819.html
+
+https://bugzilla.gnome.org/show_bug.cgi?id=751382
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4d3e7dd..5744015 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -106,6 +106,7 @@ find_package(GObject)
+ macro_log_feature(GOBJECT_FOUND "GObject" "Required to build QtGLib" 
"http://www.gtk.org/"; TRUE)
+ 
+ set(CMAKE_REQUIRED_INCLUDES ${QTGSTREAMER_INCLUDES})
++add_definitions(${GSTREAMER_DEFINITIONS})
+ include(CheckCXXSourceCompiles)
+ check_cxx_source_compiles("
+ #include <QtCore/QtGlobal>
+diff --git a/cmake/modules/FindGStreamer.cmake 
b/cmake/modules/FindGStreamer.cmake
+index dab91ac..fe6cde1 100644
+--- a/cmake/modules/FindGStreamer.cmake
++++ b/cmake/modules/FindGStreamer.cmake
+@@ -36,6 +36,7 @@ if (PKG_CONFIG_FOUND)
+     exec_program(${PKG_CONFIG_EXECUTABLE}
+                  ARGS --variable pluginsdir gstreamer-${GSTREAMER_ABI_VERSION}
+                  OUTPUT_VARIABLE PKG_GSTREAMER_PLUGIN_DIR)
++    set(GSTREAMER_DEFINITIONS ${PKG_GSTREAMER_CFLAGS})
+ endif()
+ 
+ find_library(GSTREAMER_LIBRARY
+-- 
+cgit v0.10.2
+

diff --git a/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-gstreamer16.patch 
b/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-gstreamer16.patch
new file mode 100644
index 00000000..6bb24048
--- /dev/null
+++ b/media-libs/qt-gstreamer/files/qt-gstreamer-1.2.0-gstreamer16.patch
@@ -0,0 +1,25 @@
+From 6e4fb2f3fcfb453c5522c66457ac5ed8c3b1b05c Mon Sep 17 00:00:00 2001
+From: George Kiagiadakis <[email protected]>
+Date: Sat, 7 Sep 2019 10:49:38 +0300
+Subject: [PATCH] QGst/caps: compilation fix from
+ https://bugs.kde.org/show_bug.cgi?id=406676#c2
+
+Because the macro version of gst_caps_copy() confuses the C++ compiler
+---
+ src/QGst/caps.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/QGst/caps.cpp b/src/QGst/caps.cpp
+index 3824d82..a15b701 100644
+--- a/src/QGst/caps.cpp
++++ b/src/QGst/caps.cpp
+@@ -54,7 +54,8 @@ QString Caps::toString() const
+ 
+ void Caps::append(const CapsPtr & caps2)
+ {
+-    gst_caps_append(object<GstCaps>(), gst_caps_copy(caps2));
++    const GstCaps * caps2ptr = caps2;
++    gst_caps_append(object<GstCaps>(), gst_caps_copy(caps2ptr));
+ }
+ 
+ CapsPtr Caps::merge(CapsPtr & caps2)

diff --git a/media-libs/qt-gstreamer/metadata.xml 
b/media-libs/qt-gstreamer/metadata.xml
new file mode 100644
index 00000000..2fdbf33d
--- /dev/null
+++ b/media-libs/qt-gstreamer/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="project">
+               <email>[email protected]</email>
+               <name>Gentoo KDE Project</name>
+       </maintainer>
+</pkgmetadata>

diff --git a/media-libs/qt-gstreamer/qt-gstreamer-1.2.0-r3.ebuild 
b/media-libs/qt-gstreamer/qt-gstreamer-1.2.0-r3.ebuild
new file mode 100644
index 00000000..6a9c462a
--- /dev/null
+++ b/media-libs/qt-gstreamer/qt-gstreamer-1.2.0-r3.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake
+
+DESCRIPTION="C++ bindings for GStreamer with a Qt-style API"
+HOMEPAGE="https://gstreamer.freedesktop.org/modules/qt-gstreamer.html";
+SRC_URI="https://gstreamer.freedesktop.org/src/qt-gstreamer/${P}.tar.xz";
+
+LICENSE="LGPL-2.1"
+SLOT="0-qt4"
+KEYWORDS="amd64 ~arm ~ppc ~ppc64 x86"
+IUSE="test"
+
+BDEPEND="
+       dev-util/glib-utils
+"
+COMMON_DEPEND="
+       dev-libs/boost:=
+       dev-libs/glib:2
+       dev-qt/qtcore:4
+       dev-qt/qtdeclarative:4
+       dev-qt/qtgui:4
+       dev-qt/qtopengl:4
+       media-libs/gstreamer:1.0
+       media-libs/gst-plugins-base:1.0
+"
+DEPEND="${COMMON_DEPEND}
+       test? ( dev-qt/qttest:4 )
+"
+RDEPEND="${COMMON_DEPEND}
+       !<media-libs/qt-gstreamer-1.2.0-r4:0
+"
+
+PATCHES=(
+       "${FILESDIR}/${P}-gstreamer15.patch"
+       "${FILESDIR}/${P}-gstreamer16.patch"
+       "${FILESDIR}/${P}-boost157.patch"
+       "${FILESDIR}/${P}-clang-38.patch"
+)
+
+# bug 497880
+RESTRICT="test"
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Declarative=ON
+               -DQTGSTREAMER_EXAMPLES=OFF
+               -DQTGSTREAMER_TESTS=$(usex test)
+               -DQT_VERSION=4
+       )
+       cmake_src_configure
+}

Reply via email to