more goodies, FTBFS fixes

- pull in final/upstream fixes for QTBUG-51648,QTBUG-51649
- disable examples/tests in bootstrap mode
This commit is contained in:
Rex Dieter 2016-05-06 13:29:21 -05:00
parent cc36bce4dd
commit b467b86bbf
3 changed files with 141 additions and 92 deletions

View File

@ -1,7 +1,7 @@
From b024fbe83863fc57364a52c717d5b43d654bdb5d Mon Sep 17 00:00:00 2001 From b77ef8a7e6e4104067d52824e29eadc8c66f5929 Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com> From: Weng Xuetian <wengxt@gmail.com>
Date: Sat, 5 Mar 2016 12:23:21 -0800 Date: Sat, 5 Mar 2016 12:23:21 -0800
Subject: [PATCH] QtDBus: clean up signal hooks and object tree in Subject: [PATCH 415/595] QtDBus: clean up signal hooks and object tree in
closeConnection closeConnection
If a QObject is added or passed as receiver to QDBusConnection::connect() If a QObject is added or passed as receiver to QDBusConnection::connect()
@ -13,10 +13,11 @@ lock since the thread is no longer processing events.
Task-number: QTBUG-51648 Task-number: QTBUG-51648
Change-Id: I1a1810a6d6d0234af0269d5f3fc1f54101bf1547 Change-Id: I1a1810a6d6d0234af0269d5f3fc1f54101bf1547
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
--- ---
src/dbus/qdbusconnection_p.h | 1 + src/dbus/qdbusconnection_p.h | 1 +
src/dbus/qdbusintegrator.cpp | 28 +++++++++++++++++++++++++++- src/dbus/qdbusintegrator.cpp | 26 +++++++++++++++++++++++++-
2 files changed, 28 insertions(+), 1 deletion(-) 2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index c77daf7..565eb83 100644 index c77daf7..565eb83 100644
@ -31,10 +32,10 @@ index c77daf7..565eb83 100644
bool isServiceRegisteredByThread(const QString &serviceName); bool isServiceRegisteredByThread(const QString &serviceName);
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index cd44861..a3cd47b 100644 index 478a2c4..3be775d 100644
--- a/src/dbus/qdbusintegrator.cpp --- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp
@@ -1030,7 +1030,6 @@ QDBusConnectionPrivate::~QDBusConnectionPrivate() @@ -1050,7 +1050,6 @@ QDBusConnectionPrivate::~QDBusConnectionPrivate()
qPrintable(name)); qPrintable(name));
closeConnection(); closeConnection();
@ -42,7 +43,7 @@ index cd44861..a3cd47b 100644
qDeleteAll(cachedMetaObjects); qDeleteAll(cachedMetaObjects);
if (mode == ClientMode || mode == PeerMode) { if (mode == ClientMode || mode == PeerMode) {
@@ -1052,6 +1051,20 @@ QDBusConnectionPrivate::~QDBusConnectionPrivate() @@ -1072,6 +1071,19 @@ QDBusConnectionPrivate::~QDBusConnectionPrivate()
} }
} }
@ -55,23 +56,21 @@ index cd44861..a3cd47b 100644
+ it++; + it++;
+ } + }
+ +
+ if (haystack.obj) { + if (haystack.obj)
+ haystack.obj->disconnect(this); + haystack.obj->disconnect(this);
+ }
+} +}
+ +
void QDBusConnectionPrivate::closeConnection() void QDBusConnectionPrivate::closeConnection()
{ {
QDBusWriteLocker locker(CloseConnectionAction, this); QDBusWriteLocker locker(CloseConnectionAction, this);
@@ -1075,6 +1088,19 @@ void QDBusConnectionPrivate::closeConnection() @@ -1095,6 +1107,18 @@ void QDBusConnectionPrivate::closeConnection()
} }
qDeleteAll(pendingCalls); qDeleteAll(pendingCalls);
+ +
+ // clean up all signal hook and object tree, to avoid QObject::destroyed + // Disconnect all signals from signal hooks and from the object tree to
+ // being activated to dbus daemon thread which already quits. + // avoid QObject::destroyed being sent to dbus daemon thread which has
+ // dbus connection is already closed, so there is nothing we could do be clean + // already quit.
+ // up everything here.
+ SignalHookHash::iterator sit = signalHooks.begin(); + SignalHookHash::iterator sit = signalHooks.begin();
+ while (sit != signalHooks.end()) { + while (sit != signalHooks.end()) {
+ sit.value().obj->disconnect(this); + sit.value().obj->disconnect(this);
@ -84,5 +83,5 @@ index cd44861..a3cd47b 100644
void QDBusConnectionPrivate::checkThread() void QDBusConnectionPrivate::checkThread()
-- --
2.5.0 2.7.4

View File

@ -1,40 +1,117 @@
From 136eeec876ed5b995e7c27bcdcefe0199f5f183d Mon Sep 17 00:00:00 2001 From 9be4ee52021bbb3227611979319ab5e3106063b2 Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com> From: Weng Xuetian <wengxt@gmail.com>
Date: Thu, 3 Mar 2016 21:56:53 -0800 Date: Thu, 3 Mar 2016 21:56:53 -0800
Subject: [PATCH] QtDBus: finish all pending call with error if disconnected Subject: [PATCH 537/595] QtDBus: finish all pending call with error if
disconnected
libdbus will send a local signal if connection gets disconnected. When libdbus will send a local signal if connection gets disconnected. When
this happens, end all pending calls with QDBusError::Disconnected. this happens, end all pending calls with QDBusError::Disconnected.
Task-number: QTBUG-51649 Task-number: QTBUG-51649
Change-Id: I5c7d2a468bb5da746d0c0e53e458c1e376f186a9 Change-Id: I5c7d2a468bb5da746d0c0e53e458c1e376f186a9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
--- ---
src/dbus/qdbusintegrator.cpp | 26 +++++++++++++++++----- src/dbus/dbus_minimal_p.h | 2 ++
src/dbus/qdbusutil_p.h | 6 +++++ src/dbus/qdbusconnection_p.h | 3 ++
.../dbus/qdbusconnection/tst_qdbusconnection.cpp | 22 ++++++++++++++++++ src/dbus/qdbusintegrator.cpp | 41 ++++++++++++++++++----
src/dbus/qdbusutil_p.h | 2 ++
.../dbus/qdbusconnection/tst_qdbusconnection.cpp | 21 +++++++++++
.../dbus/qdbusconnection/tst_qdbusconnection.h | 1 + .../dbus/qdbusconnection/tst_qdbusconnection.h | 1 +
4 files changed, 49 insertions(+), 6 deletions(-) 6 files changed, 64 insertions(+), 6 deletions(-)
diff --git a/src/dbus/dbus_minimal_p.h b/src/dbus/dbus_minimal_p.h
index f0a2954..8f25b24 100644
--- a/src/dbus/dbus_minimal_p.h
+++ b/src/dbus/dbus_minimal_p.h
@@ -99,9 +99,11 @@ typedef dbus_uint32_t dbus_bool_t;
/* dbus-shared.h */
#define DBUS_SERVICE_DBUS "org.freedesktop.DBus"
#define DBUS_PATH_DBUS "/org/freedesktop/DBus"
+#define DBUS_PATH_LOCAL "/org/freedesktop/DBus/Local"
#define DBUS_INTERFACE_DBUS "org.freedesktop.DBus"
#define DBUS_INTERFACE_INTROSPECTABLE "org.freedesktop.DBus.Introspectable"
#define DBUS_INTERFACE_PROPERTIES "org.freedesktop.DBus.Properties"
+#define DBUS_INTERFACE_LOCAL "org.freedesktop.DBus.Local"
#define DBUS_NAME_FLAG_ALLOW_REPLACEMENT 0x1 /**< Allow another service to become the primary owner if requested */
#define DBUS_NAME_FLAG_REPLACE_EXISTING 0x2 /**< Request to replace the current primary owner */
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 565eb83..b733a68 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -260,6 +260,8 @@ private:
QString getNameOwnerNoCache(const QString &service);
+ void watchForDBusDisconnection();
+
void _q_newConnection(QDBusConnectionPrivate *newConnection);
protected:
@@ -279,6 +281,7 @@ private slots:
void serviceOwnerChangedNoLock(const QString &name, const QString &oldOwner, const QString &newOwner);
void registerServiceNoLock(const QString &serviceName);
void unregisterServiceNoLock(const QString &serviceName);
+ void handleDBusDisconnection();
signals:
void dispatchStatusChanged();
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index cd44861..320419f 100644 index 3be775d..d0468f4 100644
--- a/src/dbus/qdbusintegrator.cpp --- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp
@@ -519,6 +519,14 @@ bool QDBusConnectionPrivate::handleMessage(const QDBusMessage &amsg) @@ -1121,6 +1121,12 @@ void QDBusConnectionPrivate::closeConnection()
switch (amsg.type()) { rootNode.children.clear(); // free resources
case QDBusMessage::SignalMessage: }
handleSignal(amsg);
+ // Check local disconnected signal from libdbus +void QDBusConnectionPrivate::handleDBusDisconnection()
+ if (amsg.interface() == QDBusUtil::dbusInterfaceLocal() +{
+ && amsg.path() == QDBusUtil::dbusPathLocal() + while (!pendingCalls.isEmpty())
+ && amsg.member() == QDBusUtil::disconnected() + processFinishedCall(pendingCalls.first());
+ && !QDBusMessagePrivate::isLocal(amsg)) { +}
+ while (!pendingCalls.isEmpty()) +
+ processFinishedCall(pendingCalls.first()); void QDBusConnectionPrivate::checkThread()
+ } {
// if there are any other filters in this DBusConnection, Q_ASSERT(thread() == QDBusConnectionManager::instance());
// let them see the signal too @@ -1646,6 +1652,19 @@ void QDBusConnectionPrivate::handleSignal(const QDBusMessage& msg)
return false; handleSignal(key, msg); // third try
@@ -1767,10 +1775,16 @@ void QDBusConnectionPrivate::processFinishedCall(QDBusPendingCallPrivate *call) }
+void QDBusConnectionPrivate::watchForDBusDisconnection()
+{
+ SignalHook hook;
+ // Initialize the hook for Disconnected signal
+ hook.service.clear(); // org.freedesktop.DBus.Local.Disconnected uses empty service name
+ hook.path = QDBusUtil::dbusPathLocal();
+ hook.obj = this;
+ hook.params << QMetaType::Void;
+ hook.midx = staticMetaObject.indexOfSlot("handleDBusDisconnection()");
+ Q_ASSERT(hook.midx != -1);
+ signalHooks.insert(QLatin1String("Disconnected:" DBUS_INTERFACE_LOCAL), hook);
+}
+
void QDBusConnectionPrivate::setServer(QDBusServer *object, DBusServer *s, const QDBusErrorInternal &error)
{
mode = ServerMode;
@@ -1711,6 +1730,8 @@ void QDBusConnectionPrivate::setPeer(DBusConnection *c, const QDBusErrorInternal
qDBusSignalFilter,
this, 0);
+ watchForDBusDisconnection();
+
QMetaObject::invokeMethod(this, "doDispatch", Qt::QueuedConnection);
}
@@ -1787,6 +1808,8 @@ void QDBusConnectionPrivate::setConnection(DBusConnection *dbc, const QDBusError
Q_ASSERT(hook.midx != -1);
signalHooks.insert(QLatin1String("NameOwnerChanged:" DBUS_INTERFACE_DBUS), hook);
+ watchForDBusDisconnection();
+
qDBusDebug() << this << ": connected successfully";
// schedule a dispatch:
@@ -1813,10 +1836,16 @@ void QDBusConnectionPrivate::processFinishedCall(QDBusPendingCallPrivate *call)
QDBusMessage &msg = call->replyMessage; QDBusMessage &msg = call->replyMessage;
if (call->pending) { if (call->pending) {
@ -55,7 +132,7 @@ index cd44861..320419f 100644
} }
qDBusDebug() << connection << "got message reply:" << msg; qDBusDebug() << connection << "got message reply:" << msg;
@@ -2070,8 +2084,8 @@ void QDBusConnectionPrivate::sendInternal(QDBusPendingCallPrivate *pcall, void * @@ -2116,8 +2145,8 @@ void QDBusConnectionPrivate::sendInternal(QDBusPendingCallPrivate *pcall, void *
pcall->pending = pending; pcall->pending = pending;
q_dbus_pending_call_set_notify(pending, qDBusResultReceived, pcall, 0); q_dbus_pending_call_set_notify(pending, qDBusResultReceived, pcall, 0);
@ -67,7 +144,7 @@ index cd44861..320419f 100644
return; return;
diff --git a/src/dbus/qdbusutil_p.h b/src/dbus/qdbusutil_p.h diff --git a/src/dbus/qdbusutil_p.h b/src/dbus/qdbusutil_p.h
index 8f5ae92..ca70ff9 100644 index 8f5ae92..f4ab9b9 100644
--- a/src/dbus/qdbusutil_p.h --- a/src/dbus/qdbusutil_p.h
+++ b/src/dbus/qdbusutil_p.h +++ b/src/dbus/qdbusutil_p.h
@@ -155,6 +155,8 @@ namespace QDBusUtil @@ -155,6 +155,8 @@ namespace QDBusUtil
@ -79,42 +156,28 @@ index 8f5ae92..ca70ff9 100644
inline QString dbusInterface() inline QString dbusInterface()
{ {
// it's the same string, but just be sure // it's the same string, but just be sure
@@ -165,8 +167,12 @@ namespace QDBusUtil
{ return QStringLiteral(DBUS_INTERFACE_PROPERTIES); }
inline QString dbusInterfaceIntrospectable()
{ return QStringLiteral(DBUS_INTERFACE_INTROSPECTABLE); }
+ inline QString dbusInterfaceLocal()
+ { return QStringLiteral(DBUS_INTERFACE_LOCAL); }
inline QString nameOwnerChanged()
{ return QStringLiteral("NameOwnerChanged"); }
+ inline QString disconnected()
+ { return QStringLiteral("Disconnected"); }
inline QString disconnectedErrorMessage()
{ return QStringLiteral("Not connected to D-Bus server"); }
}
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
index e91f87d..6c7e6b1 100644 index e91f87d..f378091 100644
--- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp --- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp +++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
@@ -1218,6 +1218,28 @@ void tst_QDBusConnection::callVirtualObjectLocal() @@ -1218,6 +1218,27 @@ void tst_QDBusConnection::callVirtualObjectLocal()
QCOMPARE(obj.replyArguments, subPathReply.arguments()); QCOMPARE(obj.replyArguments, subPathReply.arguments());
} }
+void tst_QDBusConnection::pendingCallWhenDisconnected() +void tst_QDBusConnection::pendingCallWhenDisconnected()
+{ +{
+ if (!QCoreApplication::instance())
+ QSKIP("Test requires a QCoreApplication");
+
+ QDBusServer *server = new QDBusServer; + QDBusServer *server = new QDBusServer;
+ QDBusConnection con = QDBusConnection::connectToPeer(server->address(), "disconnect"); + QDBusConnection con = QDBusConnection::connectToPeer(server->address(), "disconnect");
+ QTestEventLoop::instance().enterLoop(2); + QTestEventLoop::instance().enterLoop(2);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(con.isConnected());
+
+ delete server;
+
+ // Make sure we call the method before we know it is disconnected.
+ QVERIFY(con.isConnected()); + QVERIFY(con.isConnected());
+ QDBusMessage message = QDBusMessage::createMethodCall("", "/", QString(), "method"); + QDBusMessage message = QDBusMessage::createMethodCall("", "/", QString(), "method");
+ QDBusPendingCall reply = con.asyncCall(message); + QDBusPendingCall reply = con.asyncCall(message);
+ +
+ delete server;
+
+ QTestEventLoop::instance().enterLoop(2); + QTestEventLoop::instance().enterLoop(2);
+ QVERIFY(!con.isConnected()); + QVERIFY(!con.isConnected());
+ QVERIFY(reply.isFinished()); + QVERIFY(reply.isFinished());
@ -138,19 +201,5 @@ index a53ba32..720e484 100644
public: public:
QString serviceName() const { return "org.qtproject.Qt.Autotests.QDBusConnection"; } QString serviceName() const { return "org.qtproject.Qt.Autotests.QDBusConnection"; }
-- --
2.5.0 2.7.4
diff -up qtbase-opensource-src-5.6.0-rc/src/dbus/dbus_minimal_p.h.QTBUG-51649 qtbase-opensource-src-5.6.0-rc/src/dbus/dbus_minimal_p.h
--- qtbase-opensource-src-5.6.0-rc/src/dbus/dbus_minimal_p.h.QTBUG-51649 2016-02-18 01:24:38.000000000 -0600
+++ qtbase-opensource-src-5.6.0-rc/src/dbus/dbus_minimal_p.h 2016-03-11 11:40:11.176244645 -0600
@@ -99,8 +99,10 @@ typedef dbus_uint32_t dbus_bool_t;
/* dbus-shared.h */
#define DBUS_SERVICE_DBUS "org.freedesktop.DBus"
#define DBUS_PATH_DBUS "/org/freedesktop/DBus"
+#define DBUS_PATH_LOCAL "/org/freedesktop/DBus/Local"
#define DBUS_INTERFACE_DBUS "org.freedesktop.DBus"
#define DBUS_INTERFACE_INTROSPECTABLE "org.freedesktop.DBus.Introspectable"
+#define DBUS_INTERFACE_LOCAL "org.freedesktop.DBus.Local"
#define DBUS_INTERFACE_PROPERTIES "org.freedesktop.DBus.Properties"
#define DBUS_NAME_FLAG_ALLOW_REPLACEMENT 0x1 /**< Allow another service to become the primary owner if requested */

View File

@ -49,11 +49,10 @@
%if ! 0%{?bootstrap} %if ! 0%{?bootstrap}
%ifarch %{arm} %{ix86} x86_64 %{power64} s390 s390x aarch64 %ifarch %{arm} %{ix86} x86_64 %{power64} s390 s390x aarch64
%global docs 1 %global docs 1
%endif
%global examples 1
%global tests 1 %global tests 1
%endif %endif
%endif
%global examples 1
#define prerelease rc #define prerelease rc
@ -97,12 +96,6 @@ Patch52: qtbase-opensource-src-5.6.0-moc_WORDSIZE.patch
# arm patch # arm patch
Patch54: qtbase-opensource-src-5.6.0-arm.patch Patch54: qtbase-opensource-src-5.6.0-arm.patch
# https://codereview.qt-project.org/#/c/151496/
Patch55: QTBUG-51648-QtDBus-clean-up-signal-hooks-and-object-tree-in-clos.patch
# https://codereview.qt-project.org/#/c/151340/
Patch56: QTBUG-51649-QtDBus-finish-all-pending-call-with-error-if-disconn.patch
# recently passed code review, not integrated yet # recently passed code review, not integrated yet
# https://codereview.qt-project.org/126102/ # https://codereview.qt-project.org/126102/
Patch60: moc-get-the-system-defines-from-the-compiler-itself.patch Patch60: moc-get-the-system-defines-from-the-compiler-itself.patch
@ -118,6 +111,8 @@ Patch278: 0178-qt_common.prf-when-looking-for-GCC-4.6-match-GCC-6-t.patch
Patch301: 0201-alsatest-Fix-the-check-to-treat-alsalib-1.1.x-as-cor.patch Patch301: 0201-alsatest-Fix-the-check-to-treat-alsalib-1.1.x-as-cor.patch
Patch321: 0221-QObject-fix-GCC-6-warning-about-qt_static_metacall-s.patch Patch321: 0221-QObject-fix-GCC-6-warning-about-qt_static_metacall-s.patch
Patch393: 0293-Fix-QtDBus-deadlock-inside-kded-kiod.patch Patch393: 0293-Fix-QtDBus-deadlock-inside-kded-kiod.patch
Patch515: 0415-QtDBus-clean-up-signal-hooks-and-object-tree-in-clos.patch
Patch637: 0537-QtDBus-finish-all-pending-call-with-error-if-disconn.patch
# macros, be mindful to keep sync'd with macros.qt5 # macros, be mindful to keep sync'd with macros.qt5
Source10: macros.qt5 Source10: macros.qt5
@ -171,6 +166,7 @@ BuildRequires: pkgconfig(libproxy-1.0)
BuildRequires: pkgconfig(ice) pkgconfig(sm) BuildRequires: pkgconfig(ice) pkgconfig(sm)
BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(libudev)
%global openssl -openssl-linked
BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(libpulse) pkgconfig(libpulse-mainloop-glib) BuildRequires: pkgconfig(libpulse) pkgconfig(libpulse-mainloop-glib)
%if 0%{?fedora} %if 0%{?fedora}
@ -367,9 +363,6 @@ RPM macros for building Qt5 packages.
%patch52 -p1 -b .moc_WORDSIZE %patch52 -p1 -b .moc_WORDSIZE
%patch54 -p1 -b .arm %patch54 -p1 -b .arm
%patch55 -p1 -b .QTBUG-51648
## FTBFS, omit for now
%patch56 -p1 -b .QTBUG-51649
%patch60 -p1 -b .moc_system_defines %patch60 -p1 -b .moc_system_defines
%patch158 -p1 -b .0058 %patch158 -p1 -b .0058
@ -380,6 +373,8 @@ RPM macros for building Qt5 packages.
%patch301 -p1 -b .0201 %patch301 -p1 -b .0201
%patch321 -p1 -b .0221 %patch321 -p1 -b .0221
%patch393 -p1 -b .0293 %patch393 -p1 -b .0293
%patch515 -p1 -b .0415
%patch637 -p1 -b .0637
%define platform linux-g++ %define platform linux-g++
@ -467,10 +462,10 @@ pushd %{_target_platform}
-iconv \ -iconv \
-icu \ -icu \
%{?journald} \ %{?journald} \
-openssl-linked \ %{?openssl} \
-optimized-qmake \ -optimized-qmake \
%{!?examples:-nomake examples} \ %{!?examples:-nomake examples} \
-nomake tests \ %{!?tests:-nomake tests} \
-no-pch \ -no-pch \
-no-rpath \ -no-rpath \
-no-separate-debug-info \ -no-separate-debug-info \
@ -615,11 +610,15 @@ install -p -m755 -D %{SOURCE6} %{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d/10
%check %check
%if 0%{?tests} %if 0%{?tests}
## see tests/README for expected environment (running a plasma session essentially)
## we are not quite there yet
export CTEST_OUTPUT_ON_FAILURE=1 export CTEST_OUTPUT_ON_FAILURE=1
export PATH=%{buildroot}%{_qt5_bindir}:$PATH export PATH=%{buildroot}%{_qt5_bindir}:$PATH
export LD_LIBRARY_PATH=%{buildroot}%{_qt5_libdir} export LD_LIBRARY_PATH=%{buildroot}%{_qt5_libdir}
make sub-tests %{?_smp_mflags} -C %{_target_platform} # dbus tests error out when building if session bus is not available
xvfb-run -a \ dbus-launch --exit-with-session \
make sub-tests %{?_smp_mflags} -k -C %{_target_platform} ||:
xvfb-run -a --server-args="-screen 0 1280x1024x32" \
dbus-launch --exit-with-session \ dbus-launch --exit-with-session \
time \ time \
make check -k -C %{_target_platform}/tests ||: make check -k -C %{_target_platform}/tests ||:
@ -973,6 +972,8 @@ fi
* Thu May 05 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.0-17 * Thu May 05 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.0-17
- support out-of-tree build - support out-of-tree build
- better %%check - better %%check
- pull in final/upstream fixes for QTBUG-51648,QTBUG-51649
- disable examples/tests in bootstrap mode
* Sat Apr 30 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.0-16 * Sat Apr 30 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.0-16
- own %%{_qt5_plugindir}/egldeviceintegrations - own %%{_qt5_plugindir}/egldeviceintegrations