#
# TODO:
-# - figure out why it tries to link with system qt (fix and drop BuildConflicts Qt)
# - more cleanups
# - check if translations are available
# - check Qt ui tool
#
# Conditional build:
-%bcond_with nas # enable NAS audio support
%bcond_without static_libs # don't build static libraries
-%bcond_without cups # disable CUPS support
-%bcond_without mysql # don't build MySQL plugin
-%bcond_without odbc # don't build unixODBC plugin
-%bcond_without pgsql # don't build PostgreSQL plugin
-%bcond_without sqlite3 # don't build SQLite3 plugin
-%bcond_without sqlite # don't build SQLite2 plugin
-%bcond_without ibase # don't build ibase (InterBase/Firebird) plugin
-%bcond_without pch # disable pch in qmake
-%bcond_without gtk # don't build GTK theme integration
-%bcond_without system_phonon # don't build phonon libraries
+# -- features
+%bcond_without cups # CUPS printing support
+%bcond_with nas # NAS audio support
+%bcond_without gtk # GTK+ theme integration
+%bcond_without pch # pch (pre-compiled headers) in qmake
+%bcond_without system_phonon # phonon libraries from phonon.spec intead of qt4.spec
+%bcond_with wkhtml # WKHTMLTOPDF patch (affects QtGui ABI)
+%bcond_with openvg # OpenVG support
+# -- databases
+%bcond_without mysql # MySQL plugin
+%bcond_without odbc # unixODBC plugin
+%bcond_without pgsql # PostgreSQL plugin
+%bcond_without sqlite3 # SQLite3 plugin
+%bcond_without sqlite # SQLite2 plugin
+%bcond_without ibase # ibase (InterBase/Firebird) plugin
+# -- SIMD CPU instructions
%bcond_with mmx # use MMX instructions
%bcond_with 3dnow # use 3Dnow instructions
%bcond_with sse # use SSE instructions in gui/painting module
%bcond_with sse41 # use SSE4.1 instructions (Intel since middle Core2)
%bcond_with sse42 # use SSE4.2 instructions (the same)
%bcond_with avx # use AVX instructions (future Intel x86 CPUs only)
-#
+
%ifnarch %{ix86} %{x8664} sparc sparcv9 alpha ppc
%undefine with_ibase
%endif
# any SQL
%define _withsql 1
%{!?with_sqlite3:%{!?with_sqlite:%{!?with_ibase:%{!?with_mysql:%{!?with_pgsql:%{!?with_odbc:%undefine _withsql}}}}}}
-#
+
+%define icu_abi 54
+%define next_icu_abi %(echo $((%{icu_abi} + 1)))
+
Summary: The Qt GUI application framework
Summary(es.UTF-8): Biblioteca para ejecutar aplicaciones GUI Qt
Summary(pl.UTF-8): Biblioteka Qt do tworzenia GUI
Summary(pt_BR.UTF-8): Estrutura para rodar aplicações GUI Qt
Name: qt4
-Version: 4.8.3
-Release: 7
+Version: 4.8.6
+Release: 12
License: LGPL v2.1 or GPL v3.0
Group: X11/Libraries
-Source0: http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-%{version}.tar.gz
-# Source0-md5: a663b6c875f8d7caa8ac9c30e4a4ec3b
+Source0: http://download.qt-project.org/official_releases/qt/4.8/%{version}/qt-everywhere-opensource-src-%{version}.tar.gz
+# Source0-md5: 2edbe4d6c2eff33ef91732602f3518eb
Source2: %{name}-qtconfig.desktop
Source3: %{name}-designer.desktop
Source4: %{name}-assistant.desktop
Patch8: %{name}-ibase.patch
Patch9: qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch
Patch10: webkit-no_Werror.patch
-Patch11: moc-boost148.patch
+Patch11: %{name}-wkhtml.patch
Patch12: fix-crash-in-assistant.patch
Patch13: improve-cups-support.patch
-Patch14: undo-fix-jit-crash-on-x86_64.patch
-Patch15: qt4-git.patch
-URL: http://qt.nokia.com/
+Patch14: x32.patch
+# backported from Qt5 (essentially)
+# http://bugzilla.redhat.com/702493
+# https://bugreports.qt-project.org/browse/QTBUG-5545
+Patch15: qt-everywhere-opensource-src-4.8.4-qgtkstyle_disable_gtk_theme_check.patch
+Patch16: qt-everywhere-opensource-src-4.8.3-QTBUG-4862.patch
+Patch17: l-qclipboard_delay.patch
+Patch18: l-qclipboard_fix_recursive.patch
+Patch19: qtcore-4.8.5-honor-ExcludeSocketNotifiers-in-glib-event-loop.patch
+Patch20: 0010-QDbus-Fix-a-b-comparison.patch
+Patch21: 0023-Don-t-crash-on-broken-GIF-images.patch
+Patch22: 0025-Fix-visual-index-lookup-in-QTreeViewPrivate-adjustVi.patch
+Patch23: 0030-Memory-and-file-descriptor-leak-in-QFontCache.patch
+Patch24: 0034-Fix-raster-graphics-on-X11-RGB30.patch
+Patch25: 0065-Fix-QPainter-drawPolyline-painting-errors-with-cosme.patch
+Patch26: 0072-Fix-font-cache-check-in-QFontEngineFT-recalcAdvances.patch
+Patch27: moc-boost-workaround.patch
+URL: http://qt-project.org/
%{?with_ibase:BuildRequires: Firebird-devel}
-BuildRequires: Mesa-libOpenVG-devel
-BuildRequires: OpenGL-devel
+%{?with_openvg:BuildRequires: Mesa-libOpenVG-devel}
BuildRequires: OpenGL-GLU-devel
+BuildRequires: OpenGL-devel
BuildRequires: alsa-lib-devel
%{?with_cups:BuildRequires: cups-devel}
BuildRequires: dbus-devel >= 0.93
BuildRequires: fontconfig-devel
BuildRequires: freetds-devel
-BuildRequires: freetype-devel >= 1:2.0.0
+BuildRequires: freetype-devel >= 2.1.3
%{?with_pch:BuildRequires: gcc >= 5:4.0}
BuildRequires: glib2-devel >= 2.0.0
-BuildRequires: gstreamer-plugins-base-devel
+BuildRequires: gstreamer0.10-plugins-base-devel
%{?with_gtk:BuildRequires: gtk+2-devel >= 2:2.10}
# see dependency on libicu version below
-BuildRequires: libicu-devel >= 49
-BuildRequires: libicu-devel < 50
+BuildRequires: libicu-devel >= %{icu_abi}
+BuildRequires: libicu-devel < %{next_icu_abi}
BuildRequires: libjpeg-devel
BuildRequires: libmng-devel >= 1.0.0
BuildRequires: libpng-devel >= 2:1.0.8
%{?with_pgsql:BuildRequires: postgresql-backend-devel}
%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: pulseaudio-devel >= 0.9.10
-BuildRequires: rpmbuild(macros) >= 1.602
+BuildRequires: rpmbuild(macros) >= 1.654
+BuildRequires: rsync
BuildRequires: sed >= 4.0
%{?with_sqlite:BuildRequires: sqlite-devel}
%{?with_sqlite3:BuildRequires: sqlite3-devel}
BuildRequires: xorg-lib-libXtst-devel
BuildRequires: xorg-lib-libXv-devel
BuildRequires: zlib-devel
-# when building it tries to link with system qt instead of built one
-BuildConflicts: QtCore-devel <= %{version}
-BuildConflicts: QtScript-devel <= %{version}
Obsoletes: qt-extensions
Obsoletes: qt-utils
Conflicts: kdelibs <= 8:3.2-0.030602.1
Summary: Qt core classes used by other modules
Summary(pl.UTF-8): Podstawowe klasy Qt używane przez inne moduły
Group: X11/Libraries
-%requires_eq libicu
+%requires_eq_to libicu libicu-devel
# be sure to depend on proper arch.
-%ifarch %{ix86}
-Requires: libicui18n.so.49
+%ifarch %{x8664} ppc64 sparc64 s390x
+Requires: libicui18n.so.%{icu_abi}()(64bit)
+%else
+%ifarch x32
+Requires: libicui18n.so.%{icu_abi}()(x32bit)
+%else
+Requires: libicui18n.so.%{icu_abi}
%endif
-%ifarch %{x8664}
-Requires: libicui18n.so.49()(64bit)
%endif
Obsoletes: QtAssistant
Requires: QtCore-devel = %{version}-%{release}
Requires: QtGui = %{version}-%{release}
Requires: fontconfig-devel
-Requires: freetype-devel >= 1:2.0.0
+Requires: freetype-devel >= 2.1.3
Requires: libpng-devel >= 2:1.0.8
Requires: xorg-lib-libSM-devel
Requires: xorg-lib-libXcursor-devel
Zaawansowane narzędzie służące do projektowania interfejsu graficznego
za pomocą biblioteki Qt.
+%package devel-private
+Summary: Private Qt headers files
+Group: X11/Development/Libraries
+Requires: QtCore-devel = %{version}-%{release}
+Requires: QtDeclarative-devel = %{version}-%{release}
+Requires: QtGui-devel = %{version}-%{release}
+Requires: QtScript-devel = %{version}-%{release}
+
+%description devel-private
+Private Qt headers files - for calibre
+
%package linguist
Summary: Translation helper for Qt
Summary(pl.UTF-8): Aplikacja ułatwiająca tłumaczenie aplikacji opartych o Qt
Summary(pl.UTF-8): Dokumentacja Qt w formacie HTML
Group: X11/Development/Libraries
Suggests: %{name}-assistant = %{version}-%{release}
+%if "%{_rpmversion}" >= "5"
+BuildArch: noarch
+%endif
%description doc
Qt documentation in HTML format.
%patch8 -p1
%patch9 -p1
%patch10 -p1
-%patch11 -p1
+%{?with_wkhtml:%patch11 -p1}
%patch12 -p1
%patch13 -p1
-%patch14 -p1 -R
+%patch14 -p1
%patch15 -p1
+%patch16 -p1
+%patch17 -p0
+%patch18 -p0
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+%patch22 -p1
+%patch23 -p1
+%patch24 -p1
+%patch25 -p1
+%patch26 -p1
+%patch27 -p1
%{__sed} -i -e 's,usr/X11R6/,usr/g,' mkspecs/linux-g++-64/qmake.conf \
mkspecs/common/linux.conf
-docdir %{_docdir}/%{name}-doc \
-headerdir %{_includedir}/qt4 \
-libdir %{_libdir} \
- -L%{_libdir} \
-plugindir %{_qtdir}/plugins \
-datadir %{_datadir}/qt4 \
-translationdir %{_localedir}/ \
%{?with_nas:-system-nas-sound} \
%{?debug:-debug} \
%{!?debug:-release} \
+ -%{!?with_openvg:no-}openvg \
-qt3support \
-fontconfig \
-largefile \
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/etc/env.d,%{_bindir},%{_desktopdir},%{_pixmapsdir},%{_pkgconfigdir}}
+install -d $RPM_BUILD_ROOT{/etc/{env.d,qt4},%{_bindir},%{_desktopdir},%{_pixmapsdir},%{_pkgconfigdir}}
install -d $RPM_BUILD_ROOT%{_qtdir}/plugins/{crypto,network}
+install -d $RPM_BUILD_ROOT%{_qtdir}/imports/org
+
+# for QtSolutions (qtlockedfile, qtsingleapplication, etc)
+install -d $RPM_BUILD_ROOT%{_includedir}/qt4/QtSolutions
echo '#QT_GRAPHICSSYSTEM=raster' > $RPM_BUILD_ROOT/etc/env.d/QT_GRAPHICSSYSTEM
cd -
# Ship doc & qmake stuff
-ln -s %{_docdir}/%{name}-doc $RPM_BUILD_ROOT%{_qtdir}/doc
ln -s %{_datadir}/qt4/mkspecs $RPM_BUILD_ROOT%{_qtdir}/mkspecs
for f in $RPM_BUILD_ROOT%{_pkgconfigdir}/*.pc; do
sed -i -e "s:-DQT_SHARED:-DQT_SHARED $DEFS:" $f
done
+# Ship private headers - ugly hack to build calibre
+install -d $RPM_BUILD_ROOT%{_includedir}/qt4/private
+rsync -aR include/QtCore/private \
+ include/QtDeclarative/private \
+ include/QtGui/private \
+ include/QtScript/private \
+ $RPM_BUILD_ROOT%{_includedir}/qt4/private
+rsync -aR src/corelib/*/*_p.h \
+ src/declarative/*/*_p.h \
+ src/gui/*/*_p.h \
+ src/script/*/*_p.h \
+ $RPM_BUILD_ROOT%{_includedir}/qt4/private
+
+
# Prepare some files list
ifecho() {
RESULT=`echo $RPM_BUILD_ROOT$2 2>/dev/null`
mkdevfl QtMultimedia
mkdevfl QtNetwork
mkdevfl QtOpenGL
-mkdevfl QtOpenVG
+%{?with_openvg:mkdevfl QtOpenVG}
mkdevfl QtScript
mkdevfl QtScriptTools
mkdevfl QtSql
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libQtCore.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libQtCore.so.4
+%dir /etc/qt4
%dir %{_qtdir}
%dir %{_qtdir}/bin
%dir %{_qtdir}/plugins
%dir %{_qtdir}/imports/QtWebKit
%attr(755,root,root) %{_qtdir}/imports/QtWebKit/*.so
%{_qtdir}/imports/QtWebKit/qmldir
+%dir %{_qtdir}/imports/org
%dir %{_qtdir}/plugins/qmltooling
%attr(755,root,root) %{_qtdir}/plugins/qmltooling/libqmldbg_tcp.so
%attr(755,root,root) %{_qtdir}/plugins/qmltooling/libqmldbg_inspector.so
%attr(755,root,root) %ghost %{_libdir}/libQtOpenGL.so.4
%attr(755,root,root) %{_qtdir}/plugins/graphicssystems/libqglgraphicssystem.so
+%if %{with openvg}
%files -n QtOpenVG
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libQtOpenVG.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libQtOpenVG.so.4
+%endif
%files -n QtScript
%defattr(644,root,root,755)
%{_desktopdir}/designer-qt4.desktop
%{_pixmapsdir}/designer-qt4.png
+%files devel-private
+%defattr(644,root,root,755)
+%{_includedir}/qt4/private
+
%files linguist
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/findtr-qt4
%files doc
%defattr(644,root,root,755)
%{_docdir}/%{name}-doc
-%{_qtdir}/doc
%files -n QtCLucene-devel -f QtCLucene-devel.files
%defattr(644,root,root,755)
%files -n QtCore-devel -f QtCore-devel.files
%defattr(644,root,root,755)
+%dir %{_includedir}/qt4/QtSolutions
%files -n QtDBus-devel -f QtDBus-devel.files
%defattr(644,root,root,755)
%files -n QtOpenGL-devel -f QtOpenGL-devel.files
%defattr(644,root,root,755)
+%if %{with openvg}
%files -n QtOpenVG-devel -f QtOpenVG-devel.files
%defattr(644,root,root,755)
+%endif
%files -n QtScript-devel -f QtScript-devel.files
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%{_libdir}/libQtOpenGL.a
+%if %{with openvg}
%files -n QtOpenVG-static
%defattr(644,root,root,755)
%{_libdir}/libQtOpenVG.a
+%endif
%files -n QtScript-static
%defattr(644,root,root,755)