+# last commit to qtsingleapplication subdir in
+# https://qt.gitorious.org/qt-solutions/qt-solutions/
+%define commit 841982ceec9d30a7ab7324979a0fd5c9c36fd121
Summary: Qt library to start applications only once per user
Name: QtSingleApplication
-Version: 2.6
-Release: 5
+Version: 2.6.1
+Release: 1
License: GPL v3 or LGPL v2 with exceptions
Group: Libraries
-URL: http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Utilities/qtsingleapplication
-Source0: http://get.qt.nokia.com/qt/solutions/lgpl/qtsingleapplication-%{version}_1-opensource.tar.gz
-# Source0-md5: 902795eb13ecedbdc112f00d7ec22949
+# git clone git@gitorious.org:qt-solutions/qt-solutions.git
+# git checkout %{commit}
+# tar -cjf QtSingleApplication-%{version}.tar.bz2 -C qt-solutions/qtsingleapplication .
+Source0: %{name}-%{version}.tar.bz2
+# Source0-md5: 2442ba5536b99b4b9144bd33ea23cb17
Source1: qtsingleapplication.prf
Source2: qtsinglecoreapplication.prf
Patch0: qtsingleapplication-build.diff
-Patch1: qtsingleapplication-dont-bundle-external-libs.patch
+Patch1: qtlockedfile.patch
Patch2: clementine.patch
+URL: http://doc.qt.digia.com/solutions/4/qtsingleapplication/qtsingleapplication.html
BuildRequires: QtCore-devel
BuildRequires: QtGui-devel
BuildRequires: QtLockedFile-devel
BuildRequires: QtNetwork-devel
-BuildRequires: libstdc++-devel
BuildRequires: qt4-build
BuildRequires: qt4-qmake
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
For console (non-GUI) applications, the QtSingleCoreApplication
variant is provided, which avoids dependency on QtGui.
-%package devel
+%package devel
Summary: Development files for QtSingleApplication
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: qt4-build
Requires: qt4-qmake
-%description devel
+%description devel
This package contains libraries and header files for developing
applications that use QtSingleApplication.
%prep
-%setup -q -n qtsingleapplication-%{version}_1-opensource
-%patch0 -p1
-%patch1 -p1
+%setup -qc
+%patch0 -p0
+%patch1 -p0
%patch2 -p1
# We already disabled bundling this extrenal library.
%files
%defattr(644,root,root,755)
-%doc LGPL_EXCEPTION.txt LICENSE.* README.TXT
-%attr(755,root,root) %{_libdir}/libQtSolutions_SingleApplication-%{version}.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libQtSolutions_SingleApplication-%{version}.so.1
-%attr(755,root,root) %{_libdir}/libQtSolutions_SingleCoreApplication-%{version}.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libQtSolutions_SingleCoreApplication-%{version}.so.1
+%doc README.TXT
+#%doc LGPL_EXCEPTION.txt LICENSE.*
+%attr(755,root,root) %{_libdir}/libQtSolutions_SingleApplication-2.6.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libQtSolutions_SingleApplication-2.6.so.1
+%attr(755,root,root) %{_libdir}/libQtSolutions_SingleCoreApplication-2.6.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libQtSolutions_SingleCoreApplication-2.6.so.1
%files devel
%defattr(644,root,root,755)
%doc doc examples
-%{_libdir}/libQtSolutions_SingleApplication-%{version}.so
-%{_libdir}/libQtSolutions_SingleCoreApplication-%{version}.so
+%{_libdir}/libQtSolutions_SingleApplication-2.6.so
+%{_libdir}/libQtSolutions_SingleCoreApplication-2.6.so
# XXX dir shared dir with QtLockedFile.spec
%dir %{_includedir}/qt4/QtSolutions
%{_includedir}/qt4/QtSolutions/QtSingleApplication
---- qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.cpp 2009-12-16 10:43:33.000000000 +0000
-+++ qtsingleapplication/src/qtlocalpeer.cpp 2010-07-10 16:26:50.000000000 +0100
-@@ -48,6 +48,7 @@
+--- QtSingleApplication-2.6.1/src/qtlocalpeer.cpp~ 2015-02-22 21:20:10.000000000 +0200
++++ QtSingleApplication-2.6.1/src/qtlocalpeer.cpp 2015-02-22 21:21:00.011791211 +0200
+@@ -42,6 +42,7 @@
#include "qtlocalpeer.h"
- #include <QtCore/QCoreApplication>
- #include <QtCore/QTime>
+ #include <QCoreApplication>
+ #include <QTime>
+#include <QtDebug>
#if defined(Q_OS_WIN)
- #include <QtCore/QLibrary>
+ #include <QLibrary>
@@ -138,6 +137,11 @@
bool QtLocalPeer::sendMessage(const QString &message, int timeout)
bool res = socket.waitForBytesWritten(timeout);
res &= socket.waitForReadyRead(timeout); // wait for ack
res &= (socket.read(qstrlen(ack)) == ack);
-@@ -195,9 +198,9 @@
+@@ -189,10 +190,10 @@
delete socket;
return;
}
- QString message(QString::fromUtf8(uMsg));
socket->write(ack, qstrlen(ack));
socket->waitForBytesWritten(1000);
+ socket->waitForDisconnected(1000); // make sure client reads ack
delete socket;
- emit messageReceived(message); //### (might take a long time to return)
+ emit messageReceived(uMsg); //### (might take a long time to return)
--- /dev/null
+diff -rupN src/qtlocalpeer.cpp.old src/qtlocalpeer.cpp
+--- src/qtlocalpeer.cpp.old 2014-02-12 22:46:28.000000000 +0100
++++ src/qtlocalpeer.cpp 2014-08-14 19:03:48.684940326 +0200
+@@ -55,15 +55,6 @@ static PProcessIdToSessionId pProcessIdT
+ #include <unistd.h>
+ #endif
+
+-namespace QtLP_Private {
+-#include "qtlockedfile.cpp"
+-#if defined(Q_OS_WIN)
+-#include "qtlockedfile_win.cpp"
+-#else
+-#include "qtlockedfile_unix.cpp"
+-#endif
+-}
+-
+ const char* QtLocalPeer::ack = "ack";
+
+ QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId)
+@@ -114,7 +105,7 @@ bool QtLocalPeer::isClient()
+ if (lockFile.isLocked())
+ return false;
+
+- if (!lockFile.lock(QtLP_Private::QtLockedFile::WriteLock, false))
++ if (!lockFile.lock(QtLockedFile::WriteLock, false))
+ return true;
+
+ bool res = server->listen(socketName);
+I file binari src/.qtlocalpeer.cpp.swp e src/.qtlocalpeer.cpp.swp sono.old diversi
+diff -rupN src/qtlocalpeer.h.old src/qtlocalpeer.h
+--- src/qtlocalpeer.h.old 2014-02-12 22:46:28.000000000 +0100
++++ src/qtlocalpeer.h 2014-08-14 19:04:28.166323264 +0200
+@@ -68,7 +68,7 @@ protected:
+ QString id;
+ QString socketName;
+ QLocalServer* server;
+- QtLP_Private::QtLockedFile lockFile;
++ QtLockedFile lockFile;
+
+ private:
+ static const char* ack;
+diff -rupN src/qtsingleapplication.pri.old src/qtsingleapplication.pri
+--- src/qtsingleapplication.pri.old 2014-02-12 22:46:28.000000000 +0100
++++ src/qtsingleapplication.pri 2014-08-14 19:05:18.161808149 +0200
+@@ -3,6 +3,7 @@ INCLUDEPATH += $$PWD
+ DEPENDPATH += $$PWD
+ QT *= network
+ greaterThan(QT_MAJOR_VERSION, 4): QT *= widgets
++CONFIG *= qtlockedfile
+
+ qtsingleapplication-uselib:!qtsingleapplication-buildlib {
+ LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME
+--- src/qtsinglecoreapplication.pri.old 2014-08-15 16:21:57.614300927 +0200
++++ src/qtsinglecoreapplication.pri 2014-08-15 16:22:34.117645461 +0200
+@@ -4,6 +4,7 @@ DEPENDPATH += $$PWD
+
+ QT *= network
+ QT -= gui
++CONFIG *= qtlockedfile
+
+ qtsinglecoreapplication-uselib:!qtsinglecoreapplication-buildlib {
+ LIBS += -L$$QTSINGLECOREAPPLICATION_LIBDIR -l$$QTSINGLECOREAPPLICATION_LIBNAME
-diff -rupN qtsingleapplication-2.6_1-opensource.old/buildlib/buildcorelib.pro qtsingleapplication-2.6_1-opensource/buildlib/buildcorelib.pro
---- qtsingleapplication-2.6_1-opensource.old/buildlib/buildcorelib.pro 1969-12-31 19:00:00.000000000 -0500
-+++ qtsingleapplication-2.6_1-opensource/buildlib/buildcorelib.pro 2010-07-21 22:09:10.000000000 -0400
+diff -rupN buildlib/buildcorelib.pro.old buildlib/buildcorelib.pro
+--- buildlib/buildcorelib.pro.old 1969-12-31 19:00:00.000000000 -0500
++++ buildlib/buildcorelib.pro 2010-07-21 22:09:10.000000000 -0400
@@ -0,0 +1,13 @@
+TEMPLATE=lib
+CONFIG += qt dll qtsinglecoreapplication-buildlib
+}
+target.path = $$DESTDIR
+INSTALLS += target
-diff -rupN qtsingleapplication-2.6_1-opensource.old/common.pri qtsingleapplication-2.6_1-opensource/common.pri
---- qtsingleapplication-2.6_1-opensource.old/common.pri 2009-12-16 05:43:33.000000000 -0500
-+++ qtsingleapplication-2.6_1-opensource/common.pri 2010-07-21 22:09:10.000000000 -0400
-@@ -1,6 +1,6 @@
- infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qtsingleapplication-uselib
+diff -rupN common.pri.old common.pri
+--- common.pri.old 2014-08-14 22:46:46.597411107 +0200
++++ common.pri 2014-08-14 22:47:33.676859489 +0200
+@@ -1,6 +1,7 @@
+ exists(config.pri):infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qtsingleapplication-uselib
TEMPLATE += fakelib
- QTSINGLEAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleApplication-2.6)
+-QTSINGLEAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleApplication-head)
++QTSINGLEAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleApplication-2.6)
+QTSINGLECOREAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleCoreApplication-2.6)
TEMPLATE -= fakelib
QTSINGLEAPPLICATION_LIBDIR = $$PWD/lib
++QTSINGLECOREAPPLICATION_LIBDIR = $$PWD/lib
-unix:qtsingleapplication-uselib:!qtsingleapplication-buildlib:QMAKE_RPATHDIR += $$QTSINGLEAPPLICATION_LIBDIR
-diff -rupN qtsingleapplication-2.6_1-opensource.old/qtsingleapplication.pro qtsingleapplication-2.6_1-opensource/qtsingleapplication.pro
---- qtsingleapplication-2.6_1-opensource.old/qtsingleapplication.pro 2009-12-16 05:43:33.000000000 -0500
-+++ qtsingleapplication-2.6_1-opensource/qtsingleapplication.pro 2010-07-21 22:09:10.000000000 -0400
+diff -rupN qtsingleapplication.pro.old qtsingleapplication.pro
+--- qtsingleapplication.pro.old 2009-12-16 05:43:33.000000000 -0500
++++ qtsingleapplication.pro 2010-07-21 22:09:10.000000000 -0400
@@ -1,5 +1,4 @@
TEMPLATE=subdirs
CONFIG += ordered
-qtsingleapplication-uselib:SUBDIRS=buildlib
-SUBDIRS+=examples
+qtsingleapplication-uselib:SUBDIRS=buildlib/buildlib.pro buildlib/buildcorelib.pro
-diff -rupN qtsingleapplication-2.6_1-opensource.old/src/QtSingleCoreApplication qtsingleapplication-2.6_1-opensource/src/QtSingleCoreApplication
---- qtsingleapplication-2.6_1-opensource.old/src/QtSingleCoreApplication 1969-12-31 19:00:00.000000000 -0500
-+++ qtsingleapplication-2.6_1-opensource/src/QtSingleCoreApplication 2010-07-21 22:09:10.000000000 -0400
+diff -rupN src/QtSingleCoreApplication.old src/QtSingleCoreApplication
+--- src/QtSingleCoreApplication.old 1969-12-31 19:00:00.000000000 -0500
++++ src/QtSingleCoreApplication 2010-07-21 22:09:10.000000000 -0400
@@ -0,0 +1 @@
+#include "qtsinglecoreapplication.h"
-diff -rupN qtsingleapplication-2.6_1-opensource.old/src/qtsinglecoreapplication.pri qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.pri
---- qtsingleapplication-2.6_1-opensource.old/src/qtsinglecoreapplication.pri 2009-12-16 05:43:33.000000000 -0500
-+++ qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.pri 2010-07-21 22:09:52.000000000 -0400
-@@ -1,10 +1,17 @@
+--- src/qtsinglecoreapplication.pri.old 2014-02-12 22:46:28.000000000 +0100
++++ src/qtsinglecoreapplication.pri 2014-08-15 15:28:16.604289958 +0200
+@@ -1,10 +1,18 @@
-INCLUDEPATH += $$PWD
-DEPENDPATH += $$PWD
-HEADERS += $$PWD/qtsinglecoreapplication.h $$PWD/qtlocalpeer.h
-SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp
--
+include(../common.pri)
+INCLUDEPATH += $$PWD
+DEPENDPATH += $$PWD
+
QT *= network
+QT -= gui
+} else {
+ SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp
+ HEADERS += $$PWD/qtsinglecoreapplication.h $$PWD/qtlocalpeer.h
- }
++}
+
+win32 {
+ contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLECOREAPPLICATION_EXPORT
+ else:qtsinglecoreapplication-uselib:DEFINES += QT_QTSINGLECOREAPPLICATION_IMPORT
-+}
-\ No newline at end of file
+ }
+++ /dev/null
-diff -rupN qtsingleapplication-2.6_1-opensource.old/src/qtlocalpeer.cpp qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.cpp
---- qtsingleapplication-2.6_1-opensource.old/src/qtlocalpeer.cpp 2009-12-16 05:43:33.000000000 -0500
-+++ qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.cpp 2010-07-21 22:10:43.000000000 -0400
-@@ -59,15 +59,6 @@ static PProcessIdToSessionId pProcessIdT
- #include <time.h>
- #endif
-
--namespace QtLP_Private {
--#include "qtlockedfile.cpp"
--#if defined(Q_OS_WIN)
--#include "qtlockedfile_win.cpp"
--#else
--#include "qtlockedfile_unix.cpp"
--#endif
--}
--
- const char* QtLocalPeer::ack = "ack";
-
- QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId)
-@@ -118,7 +109,7 @@ bool QtLocalPeer::isClient()
- if (lockFile.isLocked())
- return false;
-
-- if (!lockFile.lock(QtLP_Private::QtLockedFile::WriteLock, false))
-+ if (!lockFile.lock(QtLockedFile::WriteLock, false))
- return true;
-
- bool res = server->listen(socketName);
-diff -rupN qtsingleapplication-2.6_1-opensource.old/src/qtlocalpeer.h qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.h
---- qtsingleapplication-2.6_1-opensource.old/src/qtlocalpeer.h 2009-12-16 05:43:33.000000000 -0500
-+++ qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.h 2010-07-21 22:10:43.000000000 -0400
-@@ -49,9 +49,7 @@
- #include <QtNetwork/QLocalSocket>
- #include <QtCore/QDir>
-
--namespace QtLP_Private {
- #include "qtlockedfile.h"
--}
-
- class QtLocalPeer : public QObject
- {
-@@ -74,7 +72,7 @@ protected:
- QString id;
- QString socketName;
- QLocalServer* server;
-- QtLP_Private::QtLockedFile lockFile;
-+ QtLockedFile lockFile;
-
- private:
- static const char* ack;
-diff -rupN qtsingleapplication-2.6_1-opensource.old/src/qtsingleapplication.pri qtsingleapplication-2.6_1-opensource/src/qtsingleapplication.pri
---- qtsingleapplication-2.6_1-opensource.old/src/qtsingleapplication.pri 2009-12-16 05:43:33.000000000 -0500
-+++ qtsingleapplication-2.6_1-opensource/src/qtsingleapplication.pri 2010-07-21 22:11:08.000000000 -0400
-@@ -2,6 +2,7 @@ include(../common.pri)
- INCLUDEPATH += $$PWD
- DEPENDPATH += $$PWD
- QT *= network
-+CONFIG *= qtlockedfile
-
- qtsingleapplication-uselib:!qtsingleapplication-buildlib {
- LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME
-diff -rupN qtsingleapplication-2.6_1-opensource.old/src/qtsinglecoreapplication.pri qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.pri
---- qtsingleapplication-2.6_1-opensource.old/src/qtsinglecoreapplication.pri 2010-07-21 22:12:19.000000000 -0400
-+++ qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.pri 2010-07-21 22:10:29.000000000 -0400
-@@ -3,6 +3,7 @@ INCLUDEPATH += $$PWD
- DEPENDPATH += $$PWD
- QT *= network
- QT -= gui
-+CONFIG *= qtlockedfile
-
- qtsinglecoreapplication-uselib:!qtsinglecoreapplication-buildlib {
- LIBS += -L$$QTSINGLECOREAPPLICATION_LIBDIR -l$$QTSINGLECOREAPPLICATION_LIBNAME