[pcmanfm-qt] Support both Qt4 and Qt5, default to Qt5 for F-22

Mamoru TASAKA mtasaka at fedoraproject.org
Tue Nov 4 13:35:43 UTC 2014


commit 92a2d83c9876cd89a10fda2a49124bce90ba1cae
Author: Mamoru TASAKA <mtasaka at fedoraproject.org>
Date:   Tue Nov 4 22:35:48 2014 +0900

    Support both Qt4 and Qt5, default to Qt5 for F-22

 pcmanfm-qt.spec |  241 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 203 insertions(+), 38 deletions(-)
---
diff --git a/pcmanfm-qt.spec b/pcmanfm-qt.spec
index 40cfe5a..b350b92 100644
--- a/pcmanfm-qt.spec
+++ b/pcmanfm-qt.spec
@@ -1,6 +1,12 @@
+%if 0%{?fedora} >= 22
+%global	baseqt	qt5
+%else
+%global	baseqt	qt4
+%endif
+
 Name:			pcmanfm-qt
 Version:		0.8.0
-Release:		1%{?dist}
+Release:		2%{?dist}
 Summary:		Qt port of the LXDE file manager PCManFM
 
 License:		GPLv2+
@@ -13,31 +19,106 @@ BuildRequires:	desktop-file-utils
 BuildRequires:	pkgconfig(glib-2.0)
 BuildRequires:	pkgconfig(gio-2.0)
 BuildRequires:	pkgconfig(gio-unix-2.0)
-BuildRequires:	pkgconfig(x11)
 BuildRequires:	pkgconfig(libfm) >= 1.2.0
+BuildRequires:	pkgconfig(libmenu-cache)
+# Qt 4
+BuildRequires:	pkgconfig(x11)
 BuildRequires:	pkgconfig(QtCore)
 BuildRequires:	pkgconfig(QtGui)
 BuildRequires:	pkgconfig(QtDBus)
-BuildRequires:	pkgconfig(libmenu-cache)
-Requires:		libfm-qt%{?_isa} = %{version}-%{release}
+# Qt 5
+BuildRequires:	pkgconfig(Qt5Widgets)
+BuildRequires:	pkgconfig(Qt5DBus)
+BuildRequires:	pkgconfig(Qt5X11Extras)
+# Qt5LinguistTools
+BuildRequires:	qt5-qttools-devel
+BuildRequires:	pkgconfig(xcb)
+Requires:		pcmanfm-%{baseqt} = %{version}-%{release}
 
 %description
 PCManFM-Qt is the Qt port of the LXDE file manager PCManFM.
 
-%package	-n	libfm-qt
-Summary:		Companion library for PCManFM-Qt
+%package	-n pcmanfm-qt-common
+Summary:	Common files for pcmanfm-qt
+BuildArch:	noarch
+
+%description	-n pcmanfm-qt-common
+This package contains common files for pcmanfm-qt.
+
+%package	-n pcmanfm-qt4
+Summary:	Qt 4 based pcmanfm-qt
+Requires:	libfm-qt4%{?_isa} = %{version}-%{release}
+Requires:	pcmanfm-qt-common = %{version}-%{release}
+
+%description	-n pcmanfm-qt4
+This package of pcmanfm-qt is based on Qt 4.
+
+%package	-n pcmanfm-qt5
+Summary:	Qt 5 based pcmanfm-qt5
+Requires:	libfm-qt5%{?_isa} = %{version}-%{release}
+Requires:	pcmanfm-qt-common = %{version}-%{release}
+
+%description	-n pcmanfm-qt5
+This package of pcmanfm-qt is based on Qt 5.
+
+%package	-n libfm-qt-common
+Summary:		Common files for libfm-qt
+BuildArch:		noarch
+
+%description -n libfm-qt-common
+This package contains common files for libfm-qt.
+
+%package	-n libfm-qt-devel-common
+Summary:	Common files for libfm-qt development packages
+BuildArch:	noarch
+
+%description	-n libfm-qt-devel-common
+This package contains common files for libfm-qt development
+packages.
 
-%description	-n	libfm-qt
+%package	-n	libfm-qt4
+Summary:		Companion library for PCManFM-Qt using Qt 4
+Obsoletes:		libfm-qt < 0.8.0-1.999
+Provides:		libfm-qt = %{version}-%{release}
+Provides:		libfm-qt%{?_isa} = %{version}-%{release}
+Requires:		libfm-qt-common = %{version}-%{release}
+
+%description	-n	libfm-qt4
 Libfm-Qt is a companion library providing components to build 
-desktop file managers.
+desktop file managers. This package uses Qt 4.
 
-%package	-n	libfm-qt-devel
-Summary:		Development files for libfm-qt
+%package	-n	libfm-qt4-devel
+Summary:		Development files for libfm-qt using Qt 4
 Requires:		libfm-qt%{?_isa} = %{version}-%{release}
+Requires:		libfm-qt-devel-common = %{version}-%{release}
+Obsoletes:		libfm-qt-devel < 0.8.0-1.999
+Provides:		libfm-qt-devel = %{version}-%{release}
+Provides:		libfm-qt-devel%{?_isa} = %{version}-%{release}
+
+%description	-n libfm-qt4-devel
+libfm-qt4-devel package contains libraries and header files for
+developing applications that use libfm-qt. This package uses Qt 4.
+Requires:		libfm-qt-devel-common = %{version}-%{release}
+
+
+%package	-n	libfm-qt5
+Summary:		Companion library for PCManFM-Qt using Qt 5
+Requires:		libfm-qt-common = %{version}-%{release}
+
+%description	-n	libfm-qt5
+Libfm-Qt is a companion library providing components to build 
+desktop file managers. This package uses Qt 5.
+
+%package	-n	libfm-qt5-devel
+Summary:		Development files for libfm-qt using Qt 5
+Requires:		libfm-qt5%{?_isa} = %{version}-%{release}
+Requires:		libfm-qt-devel-common = %{version}-%{release}
+
+%description	-n libfm-qt5-devel
+libfm-qt5-devel package contains libraries and header files for
+developing applications that use libfm-qt. This package uses Qt 5.
+
 
-%description	-n libfm-qt-devel
-libfm-qt-devel package contains libraries and header files for
-developing applications that use libfm-qt.
 
 %prep
 %setup -q
@@ -54,60 +135,144 @@ sed -i.lib \
 	libfm-qt/CMakeLists.txt
 
 %build
-%cmake . -DCMAKE_BUILD_TYPE=Release
+TOPDIR=$(pwd)
+INSTDIR=$TOPDIR/TMPINSTDIR
+
+mkdir qt4 qt5
+
+pushd qt4
+%cmake .. -DCMAKE_BUILD_TYPE=Release
+popd
+
+pushd qt5
+{
+ export USE_QT5=1
+ %cmake .. -DCMAKE_BUILD_TYPE=Release
+}
+popd
+
 # Kill -O3
-find . \( \
-	-name CMakeCache.txt \
-	-or -name \*.make \
-	-or -name link.txt \
-	\) \
-	-print0 | xargs --null sed -i.opt -e 's|-O3||'
-make %{?_smp_mflags}
+for dir in \
+	qt4 qt5
+do
+	pushd $dir
+	find . \( \
+		-name CMakeCache.txt \
+		-or -name \*.make \
+		-or -name link.txt \
+		\) \
+		-print0 | xargs --null sed -i.opt -e 's|-O3||'
+	make %{?_smp_mflags}
+
+	make install \
+		DESTDIR=$INSTDIR \
+		INSTALL="install -p"
+
+	mv $INSTDIR%{_bindir}/pcmanfm-{qt,$dir}
+	mv $INSTDIR%{_mandir}/man1/pcmanfm-{qt,$dir}.1
+	mv $INSTDIR%{_datadir}/applications/pcmanfm-{qt,$dir}.desktop
+	mv $INSTDIR%{_datadir}/applications/pcmanfm-{qt,$dir}-desktop-pref.desktop
+
+	for f in $INSTDIR%{_datadir}/applications/pcmanfm-$dir*.desktop
+	do
+		sed -i \
+			-e "\@Exec=@s|pcmanfm-qt |pcmanfm-${dir} |" \
+			-e "\@Name=@s|PCManFM |PCManFM-${dir} |" \
+				$f
+	done
+
+	popd
+done
 
 %install
-%make_install \
-	INSTALL="install -p"
+mkdir -p %{buildroot}
+cp -a TMPINSTDIR/* \
+	%{buildroot}
 
 for f in %{buildroot}%{_datadir}/applications/%{name}*.desktop
 do
 	desktop-file-validate $f
 done
 
-%post -n libfm-qt -p /sbin/ldconfig
-%postun -n libfm-qt -p /sbin/ldconfig
+ln -sf pcmanfm-%{baseqt} %{buildroot}%{_bindir}/pcmanfm-qt
+ln -sf pcmanfm-%{baseqt}.desktop \
+	%{buildroot}%{_datadir}/applications/pcmanfm-qt.desktop
+ln -sf pcmanfm-%{baseqt}-desktop-pref.desktop \
+	%{buildroot}%{_datadir}/applications/pcmanfm-qt-desktop-pref.desktop
+# Careful!!
+ln -sf pcmanfm-%{baseqt}.1.gz %{buildroot}%{_mandir}/man1/pcmanfm-qt.1.gz
+
+%post -n libfm-qt4 -p /sbin/ldconfig
+%postun -n libfm-qt4 -p /sbin/ldconfig
+%post -n libfm-qt5 -p /sbin/ldconfig
+%postun -n libfm-qt5 -p /sbin/ldconfig
 
-%post
+%post -n pcmanfm-qt4
 update-desktop-database &> /dev/null || :
 
-%postun
+%postun -n pcmanfm-qt4
 update-desktop-database &> /dev/null || :
 
-%files
+%post -n pcmanfm-qt5
+update-desktop-database &> /dev/null || :
+
+%postun -n pcmanfm-qt5
+update-desktop-database &> /dev/null || :
+
+
+%files -n pcmanfm-qt-common
 %doc	AUTHORS
 %doc	COPYING
 %doc	README
-
-%{_bindir}/%{name}
-%{_datadir}/applications/%{name}*.desktop
 %{_datadir}/%{name}/
 
-%{_mandir}/man1/%{name}.1*
+%files
+%{_bindir}/pcmanfm-qt
+%{_datadir}/applications/pcmanfm-qt.desktop
+%{_datadir}/applications/pcmanfm-qt-desktop-pref.desktop
+%{_mandir}/man1/pcmanfm-qt.1*
+
+%files	-n pcmanfm-qt4
+%{_bindir}/pcmanfm-qt4
+%{_datadir}/applications/pcmanfm-qt4.desktop
+%{_datadir}/applications/pcmanfm-qt4-desktop-pref.desktop
+%{_mandir}/man1/pcmanfm-qt4.1*
 
-%files	-n libfm-qt
+%files	-n pcmanfm-qt5
+%{_bindir}/pcmanfm-qt5
+%{_datadir}/applications/pcmanfm-qt5.desktop
+%{_datadir}/applications/pcmanfm-qt5-desktop-pref.desktop
+%{_mandir}/man1/pcmanfm-qt5.1*
+
+%files	-n libfm-qt4
+%{_libdir}/libfm-qt.so.1*
+
+%files	-n libfm-qt5
+%{_libdir}/libfm-qt5.so.1*
+
+%files	-n libfm-qt4-devel
+%{_libdir}/libfm-qt.so
+%{_libdir}/pkgconfig/libfm-qt.pc
+
+%files	-n libfm-qt5-devel
+%{_libdir}/libfm-qt5.so
+%{_libdir}/pkgconfig/libfm-qt5.pc
+
+%files	-n libfm-qt-common
 # Also include same document files
 %doc	AUTHORS
 %doc	COPYING
 %doc	README
-
-%{_libdir}/libfm-qt.so.1*
 %{_datadir}/libfm-qt/
 
-%files	-n libfm-qt-devel
-%{_libdir}/libfm-qt.so
-%{_libdir}/pkgconfig/libfm-qt.pc
+%files	-n libfm-qt-devel-common
 %{_includedir}/libfm-qt/
 
+
 %changelog
+* Tue Nov  4 2014 Mamoru TASAKA <mtasaka at fedoraproject.org> - 0.8.0-2
+- Support both Qt4 and Qt5, default to Qt5 for F-22
+
 * Tue Nov  4 2014 Mamoru TASAKA <mtasaka at fedoraproject.org> - 0.8.0-1
 - 0.8.0
 


More information about the scm-commits mailing list