# TODO: # - use PLD ldflags # - cleanup # - subpackages to sql classes # Conditional build: %bcond_with static_libs # build static 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) # -- 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 sse # use SSE instructions in gui/painting module %bcond_with sse2 # use SSE2 instructions %bcond_with sse3 # use SSE3 instructions (since: Intel middle Pentium4, AMD Athlon64) %bcond_with ssse3 # use SSSE3 instructions (Intel since Core2, Via Nano) %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 %ifarch athlon %define with_3dnow 1 %endif %ifarch athlon pentium3 pentium4 %{x8664} %define with_mmx 1 %endif %ifarch pentium3 pentium4 %{x8664} %define with_sse 1 %endif %ifarch pentium4 %{x8664} %define with_sse2 1 %endif # any SQL %define _withsql 1 %{!?with_sqlite3:%{!?with_sqlite:%{!?with_ibase:%{!?with_mysql:%{!?with_pgsql:%{!?with_odbc:%undefine _withsql}}}}}} %define icu_abi 52 %define next_icu_abi %(echo $((%{icu_abi} + 1))) %define orgname qtbase Summary: Qt5 - QtBase components Summary(es.UTF-8): Biblioteca para ejecutar aplicaciones Qt5 Summary(pl.UTF-8): Biblioteka Qt5 Summary(pt_BR.UTF-8): Estrutura para rodar aplicações Qt5 Name: qt5-%{orgname} Version: 5.2.0 Release: 0.1 # See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details License: LGPLv2 with exceptions or GPLv3 with exceptions Group: X11/Libraries Source0: http://download.qt-project.org/official_releases/qt/5.2/%{version}/submodules/%{orgname}-opensource-src-%{version}.tar.xz # Source0-md5: c94bbaf1bb7f0f4a32d2caa7501416e1 URL: http://qt-project.org/ %{?with_ibase:BuildRequires: Firebird-devel} BuildRequires: Mesa-libOpenVG-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 %{?with_pch:BuildRequires: gcc >= 5:4.0} BuildRequires: gdb BuildRequires: glib2-devel >= 2.0.0 BuildRequires: gstreamer0.10-plugins-base-devel %{?with_gtk:BuildRequires: gtk+2-devel >= 2:2.10} # see dependency on libicu version below BuildRequires: libicu-devel < %{next_icu_abi} BuildRequires: libicu-devel >= %{icu_abi} BuildRequires: libjpeg-devel BuildRequires: libpng-devel >= 2:1.0.8 BuildRequires: libstdc++-devel %{?with_mysql:BuildRequires: mysql-devel} %{?with_nas:BuildRequires: nas-devel} BuildRequires: pkgconfig %{?with_pgsql:BuildRequires: postgresql-backend-devel} %{?with_pgsql:BuildRequires: postgresql-devel} BuildRequires: pulseaudio-devel >= 0.9.10 BuildRequires: rpmbuild(macros) >= 1.654 BuildRequires: sed >= 4.0 %{?with_sqlite:BuildRequires: sqlite-devel} %{?with_sqlite3:BuildRequires: sqlite3-devel} BuildRequires: tar >= 1:1.22 BuildRequires: udev-devel %{?with_odbc:BuildRequires: unixODBC-devel >= 2.3.0} BuildRequires: xcb-util-image-devel BuildRequires: xcb-util-keysyms-devel BuildRequires: xcb-util-renderutil-devel BuildRequires: xcb-util-wm-devel BuildRequires: xorg-lib-libSM-devel BuildRequires: xorg-lib-libXcursor-devel BuildRequires: xorg-lib-libXext-devel BuildRequires: xorg-lib-libXfixes-devel BuildRequires: xorg-lib-libXi-devel BuildRequires: xorg-lib-libXinerama-devel BuildRequires: xorg-lib-libXrandr-devel BuildRequires: xorg-lib-libXrender-devel BuildRequires: xz BuildRequires: zlib-devel BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _noautoreqdep libGL.so.1 libGLU.so.1 %define _noautostrip '.*_debug\\.so*' %define specflags -fno-strict-aliasing %define _qtdir %{_libdir}/qt5 %description Qt is a software toolkit for developing applications. This package contains base tools, like string, xml, and network handling. %package devel Summary: The Qt5 application framework - development files Group: X11/Development/Libraries Requires: %{name} = %{version}-%{release} %description devel Qt5 - development files. %package doc Summary: The Qt5 application framework base - docs Group: Documentation Requires: %{name} = %{version}-%{release} %description doc Qt5 base - documentation. %package examples Summary: Qt5 examples Group: X11/Development/Libraries %description examples Qt5 base - examples. %prep %setup -q -n %{orgname}-opensource-src-%{version} %{__sed} -i -e 's,usr/X11R6/,usr/g,' mkspecs/linux-g++-64/qmake.conf \ mkspecs/common/linux.conf # change QMAKE FLAGS to build %{__sed} -i -e ' s|QMAKE_CC.*=.*gcc|QMAKE_CC\t\t= %{__cc}|; s|QMAKE_CXX.*=.*g++|QMAKE_CXX\t\t= %{__cxx}|; s|QMAKE_LINK.*=.*g++|QMAKE_LINK\t\t= %{__cxx}|; s|QMAKE_LINK_SHLIB.*=.*g++|QMAKE_LINK_SHLIB\t= %{__cxx}|; s|QMAKE_CFLAGS_RELEASE.*|QMAKE_CFLAGS_RELEASE\t+= %{rpmcppflags} %{rpmcflags}|; s|QMAKE_CXXFLAGS_RELEASE.*|QMAKE_CXXFLAGS_RELEASE\t+= %{rpmcppflags} %{rpmcxxflags}|; s|QMAKE_CFLAGS_DEBUG.*|QMAKE_CFLAGS_DEBUG\t+= %{debugcflags}|; s|QMAKE_CXXFLAGS_DEBUG.*|QMAKE_CXXFLAGS_DEBUG\t+= %{debugcflags}|; ' mkspecs/common/g++-base.conf #%{__sed} -i -e ' # s|QMAKE_INCDIR_QT.*|QMAKE_INCDIR_QT = %{_includedir}/qt4|; # ' mkspecs/common/linux.conf # No -L/usr/lib. %{__sed} -i -e ' s|^QMAKE_LIBDIR_QT.*=.*|QMAKE_LIBDIR_QT =|; ' mkspecs/common/linux.conf # undefine QMAKE_STRIP, so we get useful -debuginfo pkgs %{__sed} -i -e ' s|^QMAKE_STRIP.*=.*|QMAKE_STRIP =|; ' mkspecs/common/linux.conf # rpmldflags %{__sed} -i -e ' s|^QMAKE_LFLAGS .*=.*|QMAKE_LFLAGS\t\t+= %{rpmldflags}|; ' mkspecs/common/gcc-base.conf %build # pass OPTFLAGS to build qmake itself with optimization export OPTFLAGS="%{rpmcflags}" export PATH=$PWD/bin:$PATH ################################## # DEFAULT OPTIONS FOR ALL BUILDS # ################################## COMMONOPT=" \ -confirm-license \ -opensource \ -verbose \ -prefix %{_qtdir} \ -bindir %{_qtdir}/bin \ -docdir %{_docdir}/qt5-doc \ -headerdir %{_includedir}/qt5 \ -libdir %{_libdir} \ -plugindir %{_qtdir}/plugins \ -datadir %{_datadir}/qt5 \ -translationdir %{_localedir}/ \ -sysconfdir %{_sysconfdir}/qt5 \ -examplesdir %{_examplesdir}/qt5 \ -optimized-qmake \ -glib \ %{!?with_gtk:-no-gtkstyle} \ -%{!?with_pch:no-}pch \ -no-rpath \ %{!?with_sse:-no-sse} \ %{!?with_sse2:-no-sse2} \ %{!?with_sse3:-no-sse3} \ %{!?with_ssse3:-no-ssse3} \ %{!?with_sse41:-no-sse4.1} \ %{!?with_sse42:-no-sse4.2} \ %{!?with_avx:-no-avx} \ -dbus \ -dbus-linked \ -reduce-relocations \ -system-freetype \ -system-libjpeg \ -system-libpng \ -system-pcre \ -system-xcb \ -system-xkbcommon \ -system-zlib \ -openssl-linked \ -largefile \ -I/usr/include/postgresql/server \ -I/usr/include/mysql \ %{?with_cups:-cups} \ %{?with_nas:-system-nas-sound} \ %{?debug:-debug} \ %{!?debug:-release} \ -fontconfig \ -largefile \ -iconv \ -icu \ -no-separate-debug-info \ -xfixes \ -nis \ -sm \ -xcursor \ -xinput2 \ -xinerama \ -xrandr \ -xkb \ -xrender \ -xshape \ -continue" %if 0 ################################## # STATIC MULTI-THREAD # ################################## %if %{with static_libs} OPT=" \ -%{!?with_mysql:no}%{?with_mysql:qt}-sql-mysql \ -%{!?with_odbc:no}%{?with_odbc:qt}-sql-odbc \ -%{!?with_pgsql:no}%{?with_pgsql:qt}-sql-psql \ -%{!?with_sqlite3:no}%{?with_sqlite3:qt}-sql-sqlite \ -%{!?with_sqlite:no}%{?with_sqlite:qt}-sql-sqlite2 \ -%{!?with_ibase:no}%{?with_ibase:qt}-sql-ibase \ -static" ./configure $COMMONOPT $OPT %{__make} -C src %{__make} -C tools/assistant/lib %{__make} -C tools/designer if [ ! -d staticlib ]; then mkdir staticlib cp -a lib/*.a staticlib fi %{__make} distclean %endif %endif ################################## # SHARED MULTI-THREAD # ################################## OPT=" \ -%{!?with_mysql:no}%{?with_mysql:plugin}-sql-mysql \ -%{!?with_odbc:no}%{?with_odbc:plugin}-sql-odbc \ -%{!?with_pgsql:no}%{?with_pgsql:plugin}-sql-psql \ -%{!?with_sqlite3:no}%{?with_sqlite3:plugin}-sql-sqlite \ -%{!?with_sqlite:no}%{?with_sqlite:plugin}-sql-sqlite2 \ -%{!?with_ibase:no}%{?with_ibase:plugin}-sql-ibase \ -shared" ./configure $COMMONOPT $OPT %{__make} # make docs requires qt5-qttools %{__make} docs || : #%{__make} \ # sub-tools-all-ordered \ # sub-demos-all-ordered \ # sub-examples-all-ordered %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT{/etc/{env.d,qt5},%{_bindir},%{_desktopdir},%{_pixmapsdir},%{_pkgconfigdir}} #install -d $RPM_BUILD_ROOT%{_qtdir}/plugins/{crypto,network} #echo '#QT_GRAPHICSSYSTEM=raster' > $RPM_BUILD_ROOT/etc/env.d/QT_GRAPHICSSYSTEM %{__make} install \ INSTALL_ROOT=$RPM_BUILD_ROOT # not sure whether || : is needed %{__make} install_docs \ INSTALL_ROOT=$RPM_BUILD_ROOT || : # kill -L/inside/builddir from *.la and *.pc (bug #77152) %{__sed} -i -e "s,-L$PWD/lib,,g" $RPM_BUILD_ROOT%{_libdir}/*.{la,prl} %{__sed} -i -e "s,-L$PWD/lib,,g" $RPM_BUILD_ROOT%{_pkgconfigdir}/*.pc %{__sed} -i -e ' s|moc_location=.*|moc_location=%{_bindir}/moc-qt5|; s|uic_location=.*|uic_location=%{_bindir}/uic-qt5|; ' $RPM_BUILD_ROOT%{_pkgconfigdir}/*.pc # libQtWebKit.la contains '-ljscore' and '-lwebcore', they come # from src/3rdparty/webkit/{JavaScriptCore,WebCore}} but those libs aren't installed #%{__sed} -i -e "s,-lwebcore,,g;s,-ljscore,,g;" $RPM_BUILD_ROOT%{_libdir}/libQtWebKit.la # install tools install bin/findtr $RPM_BUILD_ROOT%{_qtdir}/bin cd $RPM_BUILD_ROOT%{_bindir} #ln -sf ../%{_lib}/qt5/bin/assistant assistant-qt5 #ln -sf ../%{_lib}/qt5/bin/designer designer-qt5 ln -sf ../%{_lib}/qt5/bin/findtr findtr-qt5 #ln -sf ../%{_lib}/qt5/bin/linguist linguist-qt5 #ln -sf ../%{_lib}/qt5/bin/lrelease lrelease-qt5 #ln -sf ../%{_lib}/qt5/bin/lupdate lupdate-qt5 ln -sf ../%{_lib}/qt5/bin/moc moc-qt5 ln -sf ../%{_lib}/qt5/bin/qmake qmake-qt5 #ln -sf ../%{_lib}/qt5/bin/qtconfig qtconfig-qt5 ln -sf ../%{_lib}/qt5/bin/uic uic-qt5 ln -sf ../%{_lib}/qt5/bin/rcc rcc-qt5 #ln -sf ../%{_lib}/qt5/bin/pixeltool . #ln -sf ../%{_lib}/qt5/bin/qcollectiongenerator . ln -sf ../%{_lib}/qt5/bin/qdbuscpp2xml qdbuscpp2xml-qt5 ln -sf ../%{_lib}/qt5/bin/qdbusxml2cpp qdbusxml2cpp-qt5 ln -sf ../%{_lib}/qt5/bin/qdoc qdoc-qt5 #ln -sf ../%{_lib}/qt5/bin/qhelpconverter . #ln -sf ../%{_lib}/qt5/bin/qhelpgenerator . #ln -sf ../%{_lib}/qt5/bin/qmlviewer . #ln -sf ../%{_lib}/qt5/bin/qmlplugindump . #ln -sf ../%{_lib}/qt5/bin/qttracereplay . #ln -sf ../%{_lib}/qt5/bin/qvfb . #ln -sf ../%{_lib}/qt5/bin/xmlpatternsvalidator . cd - # Prepare some files list ifecho() { RESULT=`echo $RPM_BUILD_ROOT$2 2>/dev/null` [ "$RESULT" == "" ] && return # XXX this is never true due $RPM_BUILD_ROOT being set r=`echo $RESULT | awk '{ print $1 }'` if [ -d "$r" ]; then echo "%%dir $2" >> $1.files elif [ -x "$r" ] ; then echo "%%attr(755,root,root) $2" >> $1.files elif [ -f "$r" ]; then echo "$2" >> $1.files else echo "Error generation $1 files list!" echo "$r: no such file or directory!" return 1 fi } echo "%defattr(644,root,root,755)" > examples.files ifecho examples %{_examplesdir}/qt5 for f in `find $RPM_BUILD_ROOT%{_examplesdir}/qt5 -printf "%%P "`; do ifecho examples %{_examplesdir}/qt5/$f done %clean rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/* %attr(755,root,root) %ghost %{_libdir}/libQt5Concurrent.so.? %attr(755,root,root) %{_libdir}/libQt5Concurrent.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5Core.so.? %attr(755,root,root) %{_libdir}/libQt5Core.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5DBus.so.? %attr(755,root,root) %{_libdir}/libQt5DBus.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5Gui.so.? %attr(755,root,root) %{_libdir}/libQt5Gui.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5Network.so.? %attr(755,root,root) %{_libdir}/libQt5Network.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5OpenGL.so.? %attr(755,root,root) %{_libdir}/libQt5OpenGL.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5PrintSupport.so.? %attr(755,root,root) %{_libdir}/libQt5PrintSupport.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5Sql.so.? %attr(755,root,root) %{_libdir}/libQt5Sql.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5Test.so.? %attr(755,root,root) %{_libdir}/libQt5Test.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5Widgets.so.? %attr(755,root,root) %{_libdir}/libQt5Widgets.so.*.* %attr(755,root,root) %ghost %{_libdir}/libQt5Xml.so.? %attr(755,root,root) %{_libdir}/libQt5Xml.so.*.* %{_libdir}/libQt5Bootstrap.a %{_libdir}/libQt5OpenGLExtensions.a %{_libdir}/libQt5PlatformSupport.a %dir /etc/qt5 %dir %{_qtdir} %dir %{_qtdir}/bin %attr(755,root,root) %{_qtdir}/bin/* %attr(755,root,root) %{_qtdir}/plugins %files devel %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libQt5Concurrent.so %attr(755,root,root) %{_libdir}/libQt5Core.so %attr(755,root,root) %{_libdir}/libQt5DBus.so %attr(755,root,root) %{_libdir}/libQt5Gui.so %attr(755,root,root) %{_libdir}/libQt5Network.so %attr(755,root,root) %{_libdir}/libQt5OpenGL.so %attr(755,root,root) %{_libdir}/libQt5PrintSupport.so %attr(755,root,root) %{_libdir}/libQt5Sql.so %attr(755,root,root) %{_libdir}/libQt5Test.so %attr(755,root,root) %{_libdir}/libQt5Widgets.so %attr(755,root,root) %{_libdir}/libQt5Xml.so %{_libdir}/libQt5Concurrent.la %{_libdir}/libQt5Core.la %{_libdir}/libQt5DBus.la %{_libdir}/libQt5Gui.la %{_libdir}/libQt5Network.la %{_libdir}/libQt5OpenGL.la %{_libdir}/libQt5PrintSupport.la %{_libdir}/libQt5Sql.la %{_libdir}/libQt5Test.la %{_libdir}/libQt5Widgets.la %{_libdir}/libQt5Xml.la %{_libdir}/libQt5Concurrent.prl %{_libdir}/libQt5Core.prl %{_libdir}/libQt5DBus.prl %{_libdir}/libQt5Gui.prl %{_libdir}/libQt5Network.prl %{_libdir}/libQt5OpenGL.prl %{_libdir}/libQt5PrintSupport.prl %{_libdir}/libQt5Sql.prl %{_libdir}/libQt5Test.prl %{_libdir}/libQt5Widgets.prl %{_libdir}/libQt5Xml.prl %{_libdir}/libQt5Bootstrap.la %{_libdir}/libQt5Bootstrap.prl %{_libdir}/libQt5OpenGLExtensions.la %{_libdir}/libQt5OpenGLExtensions.prl %{_libdir}/libQt5PlatformSupport.la %{_libdir}/libQt5PlatformSupport.prl %{_includedir}/qt5 %{_libdir}/cmake/Qt5 %{_libdir}/cmake/Qt5Concurrent %{_libdir}/cmake/Qt5Core %{_libdir}/cmake/Qt5DBus %{_libdir}/cmake/Qt5Gui %{_libdir}/cmake/Qt5Network %{_libdir}/cmake/Qt5OpenGL %{_libdir}/cmake/Qt5OpenGLExtensions %{_libdir}/cmake/Qt5PrintSupport %{_libdir}/cmake/Qt5Sql %{_libdir}/cmake/Qt5Test %{_libdir}/cmake/Qt5Widgets %{_libdir}/cmake/Qt5Xml %{_pkgconfigdir}/*.pc %{_qtdir}/mkspecs %files doc %defattr(644,root,root,755) %{_docdir}/qt5-doc %files examples -f examples.files