+#
+# Conditional build:
+%bcond_without qt4 # build Qt4
+%bcond_without qt5 # build Qt5
+
+# last commit to qtsingleapplication subdir in
+# https://qt.gitorious.org/qt-solutions/qt-solutions/
+%define commit ad9bc4600ce769a8b3ad10910803cd555811b70c
Summary: Qt library to start applications only once per user
Name: QtSingleApplication
-Version: 2.6
+Version: 2.6.1
Release: 4
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
+Source0: https://github.com/qtproject/qt-solutions/archive/%{commit}/%{name}-%{commit}.tar.gz
+# Source0-md5: 07f01898ad475c5cded2968d25bee85c
Source1: qtsingleapplication.prf
Source2: qtsinglecoreapplication.prf
Patch0: qtsingleapplication-build.diff
-Patch1: qtsingleapplication-dont-bundle-external-libs.patch
+Patch1: qtlockedfile.patch
Patch2: clementine.patch
-BuildRequires: QtCore-devel
+Patch3: version.patch
+URL: http://doc.qt.digia.com/solutions/4/qtsingleapplication/qtsingleapplication.html
+BuildRequires: glibc-misc
+BuildRequires: libstdc++-devel
+%if %{with qt4}
BuildRequires: QtGui-devel
BuildRequires: QtLockedFile-devel
BuildRequires: QtNetwork-devel
-BuildRequires: libstdc++-devel
BuildRequires: qt4-build
BuildRequires: qt4-qmake
+%endif
+%if %{with qt5}
+BuildRequires: Qt5Core-devel
+BuildRequires: Qt5Gui-devel
+BuildRequires: Qt5LockedFile-devel
+BuildRequires: Qt5Network-devel
+BuildRequires: Qt5Widgets-devel
+BuildRequires: qt5-build
+BuildRequires: qt5-qmake >= 5.4
+%endif
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _qt4_datadir %{_datadir}/qt4
+%define qt4dir %{_datadir}/qt4
+%define qt5dir %{_libdir}/qt5
%description
For some applications it is useful or even critical that they are
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.
+%package -n Qt5SingleApplication
+Summary: Qt library to start applications only once per user
+Group: Libraries
+
+%description -n Qt5SingleApplication
+For some applications it is useful or even critical that they are
+started only once by any user. Future attempts to start the
+application should activate any already running instance, and possibly
+perform requested actions, e.g. loading a file, in that instance.
+
+The QtSingleApplication class provides an interface to detect a
+running instance, and to send command strings to that instance.
+
+For console (non-GUI) applications, the QtSingleCoreApplication
+variant is provided, which avoids dependency on QtGui.
+
+%package -n Qt5SingleApplication-devel
+Summary: Development files for Qt5SingleApplication library
+Group: Development/Libraries
+Requires: Qt5SingleApplication = %{version}-%{release}
+
+%description -n Qt5SingleApplication-devel
+This package contains libraries and header files for developing
+applications that use Qt5SingleApplication.
+
%prep
-%setup -q -n qtsingleapplication-%{version}_1-opensource
-%patch0 -p1
-%patch1 -p1
+%setup -qc
+mv qt-solutions-* .qtsolutions
+mv .qtsolutions/qtsingleapplication/* .
+%patch0 -p0
+%patch1 -p0
%patch2 -p1
+%patch3 -p1
-# We already disabled bundling this extrenal library.
+# We already disabled bundling this external library.
# But just to make sure:
rm src/{QtLocked,qtlocked}*
+set -- *
+install -d build-qt{4,5}
+cp -al "$@" build-qt4
+cp -al "$@" build-qt5
+
%build
-touch .licenseAccepted
+%if %{with qt4}
+cd build-qt4
# Does not use GNU configure
-./configure \
- -library
+./configure -library
+qmake-qt4
+%{__make}
-# XXX fix QtLockedFile package
-qmake-qt4 INCLUDEPATH+=%{_includedir}/QtSolutions
+# ensure the it links to right version of LockedFile
+for l in SingleApplication SingleCoreApplication; do
+ f=libQtSolutions_$l-2.6.so
+ ldd lib/$f | grep libQtSolutions_LockedFile
+done
+cd ..
+%endif
+
+%if %{with qt5}
+cd build-qt5
+./configure -library
+# XXX fix QtLockedFile package?
+qmake-qt5 INCLUDEPATH+=%{_includedir}/qt5/QtSolutions
%{__make}
+# XXX: relink with proper version
+%{__sed} -i -e 's/QtSolutions/Qt5Solutions/' buildlib/Makefile*
+rm -r lib
+%{__make}
+
+# ensure the it links to right version of LockedFile
+for l in SingleApplication SingleCoreApplication; do
+ f=libQt5Solutions_$l-2.6.so
+ ldd lib/$f | grep libQt5Solutions_LockedFile
+done
+cd ..
+%endif
%install
rm -rf $RPM_BUILD_ROOT
-
-# libraries
-install -d $RPM_BUILD_ROOT%{_libdir}
+%if %{with qt4}
+cd build-qt4
+install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}/qt4/QtSolutions,%{qt4dir}/mkspecs/features}
cp -a lib/* $RPM_BUILD_ROOT%{_libdir}
rm $RPM_BUILD_ROOT%{_libdir}/lib*.so.1.0
-
-# headers
-install -d $RPM_BUILD_ROOT%{_includedir}/QtSolutions
-cp -a \
- src/qtsingleapplication.h \
- src/QtSingleApplication \
- src/qtsinglecoreapplication.h \
- src/QtSingleCoreApplication \
- $RPM_BUILD_ROOT%{_includedir}/QtSolutions
-
-install -d $RPM_BUILD_ROOT%{_qt4_datadir}/mkspecs/features
-cp -a %{SOURCE1} %{SOURCE2} $RPM_BUILD_ROOT%{_qt4_datadir}/mkspecs/features
+cp -p src/qtsingle*application.h src/QtSingle*Application $RPM_BUILD_ROOT%{_includedir}/qt4/QtSolutions
+cp -p %{SOURCE1} %{SOURCE2} $RPM_BUILD_ROOT%{qt4dir}/mkspecs/features
+cd ..
+%endif
+
+%if %{with qt5}
+cd build-qt5
+install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}/qt5/QtSolutions,%{qt5dir}/mkspecs/features}
+cp -a lib/* $RPM_BUILD_ROOT%{_libdir}
+rm $RPM_BUILD_ROOT%{_libdir}/lib*.so.1.0
+cp -p src/qtsingle*application.h src/QtSingle*Application $RPM_BUILD_ROOT%{_includedir}/qt5/QtSolutions
+%{__sed} -e s/QtSolutions_SingleApplication-2.6/Qt5Solutions_SingleApplication-2.6/g %{SOURCE1} > $RPM_BUILD_ROOT%{qt5dir}/mkspecs/features/qtsingleapplication.prf
+%{__sed} -e s/QtSolutions_SingleCoreApplication-2.6/Qt5Solutions_SingleCoreApplication-2.6/g %{SOURCE2} > $RPM_BUILD_ROOT%{qt5dir}/mkspecs/features/qtsinglecoreapplication.prf
+cd ..
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
+%post -n Qt5SingleApplication -p /sbin/ldconfig
+%postun -n Qt5SingleApplication -p /sbin/ldconfig
+
+%if %{with qt4}
%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
+%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
-# XXX dir shared dir with QtLockedFile.spec
-%dir %{_includedir}/QtSolutions
-%{_includedir}/QtSolutions/QtSingleApplication
-%{_includedir}/QtSolutions/QtSingleCoreApplication
-%{_includedir}/QtSolutions/qtsingleapplication.h
-%{_includedir}/QtSolutions/qtsinglecoreapplication.h
-%{_qt4_datadir}/mkspecs/features/qtsingleapplication.prf
-%{_qt4_datadir}/mkspecs/features/qtsinglecoreapplication.prf
+%{_libdir}/libQtSolutions_SingleApplication-2.6.so
+%{_libdir}/libQtSolutions_SingleCoreApplication-2.6.so
+%{_includedir}/qt4/QtSolutions/QtSingleApplication
+%{_includedir}/qt4/QtSolutions/QtSingleCoreApplication
+%{_includedir}/qt4/QtSolutions/qtsingleapplication.h
+%{_includedir}/qt4/QtSolutions/qtsinglecoreapplication.h
+%{qt4dir}/mkspecs/features/qtsingleapplication.prf
+%{qt4dir}/mkspecs/features/qtsinglecoreapplication.prf
+%endif
+
+%if %{with qt5}
+%files -n Qt5SingleApplication
+%defattr(644,root,root,755)
+%doc README.TXT
+%attr(755,root,root) %{_libdir}/libQt5Solutions_SingleApplication-2.6.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libQt5Solutions_SingleApplication-2.6.so.1
+%attr(755,root,root) %{_libdir}/libQt5Solutions_SingleCoreApplication-2.6.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libQt5Solutions_SingleCoreApplication-2.6.so.1
+
+%files -n Qt5SingleApplication-devel
+%defattr(644,root,root,755)
+%doc doc examples
+%{_libdir}/libQt5Solutions_SingleApplication-2.6.so
+%{_libdir}/libQt5Solutions_SingleCoreApplication-2.6.so
+%{_includedir}/qt5/QtSolutions/QtSingleApplication
+%{_includedir}/qt5/QtSolutions/QtSingleCoreApplication
+%{_includedir}/qt5/QtSolutions/qtsingleapplication.h
+%{_includedir}/qt5/QtSolutions/qtsinglecoreapplication.h
+%{qt5dir}/mkspecs/features/qtsingleapplication.prf
+%{qt5dir}/mkspecs/features/qtsinglecoreapplication.prf
+%endif