Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37733149
en ru br
ALT Linux repos
S:4.8.7-alt25
5.0: 4.5.2-alt1.M50.1
4.1: 4.4.3-alt1.M41.1
4.0: 4.3.4-alt5.M40.1
3.0: 4.0.1-alt1
+updates:4.0.1-alt2
+backports:4.2.3-alt7.1.M30

Group :: System/Libraries
RPM: qt4

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

%define qIF_ver_gt() %if "%(rpmvercmp '%1' '%2')" > "0"
%define qIF_ver_gteq() %if "%(rpmvercmp '%1' '%2')" >= "0"
%define qIF_ver_lt() %if "%(rpmvercmp '%2' '%1')" > "0"
%define qIF_ver_lteq() %if "%(rpmvercmp '%2' '%1')" >= "0"

%define binutils_ver %{get_version binutils}
%define _keep_libtool_files 1
#define _optlevel s
%def_disable debug
%def_enable static_thread
%def_enable shared_thread
%def_enable sql_pgsql
%def_enable sql_odbc
%def_enable sql_sqlite2
%def_enable sql_ibase
%def_enable dbus
%def_disable phonon
%def_enable gtkstyle
%def_enable glib
%def_enable versioning_hack

# Versions

%define rname qt
%define major 4
%define minor 5
%define bugfix 2
%define beta %nil
%define rlz alt1.M50.1

Name: %rname%major
Version: %major.%minor.%bugfix
Release: %rlz

%define qtdir %_libdir/%name
%define kdedir %prefix
%add_findprov_lib_path %qtdir/lib

Group: System/Libraries
Summary: Shared library for the Qt%major GUI toolkit
Url: http://www.trolltech.com/products/qt/
License: GPLv3 / LGPLv2.1

Provides: %name-x11 = %version-%release
Requires: %name-sql lib%name %name-assistant

Source0: ftp://ftp.trolltech.com/qt/source/%rname-all-opensource-src-%version%beta.tar
#
Source8: qtX-README.ALT
Source11: translations.tar
#
Source21: qt4-assistant.desktop
Source22: qt4-designer.desktop
Source23: qt4-linguist.desktop
Source24: qt4-qtconfig.desktop

Source101: %rname.16.png
Source102: %rname.32.png
Source103: %rname.48.png

# FC

Patch1: qt-4.0.1-sans-mono.patch

# Qt-copy safe patches

Patch0180: 0180-window-role.diff
Patch0195: 0195-compositing-properties.diff
Patch0225: 0225-invalidate-tabbar-geometry-on-refresh.diff
Patch0253: 0253-qmake_correct_path_separators.diff
Patch0255: 0255-qtreeview-selection-columns-hidden.diff
Patch0274: 0274-shm-native-image-fix.diff
Patch0280: 0280-deserialization-custom-dbus-properties.diff
Patch0286: 0286-fix-error-string.diff


# ALT

# by raorn at altlinux
Patch501: qt-4.1.3-alt-honor-SUSv3-locales.patch
Patch502: qt-4.5.2-alt-fix-linking.patch
Patch503: qt-4.4.0-alt-assistant-location.patch
Patch504: qt-4.3.0-alt-fix-gl-loading.patch
Patch505: qt-4.0.1-alt-iso_c_extension.patch
#
Patch508: qt-4.5.1-alt-buildkey.patch
Patch509: qt-4.4.0-qtconfig_add_translator.patch
#
Patch511: qt-4.3.2-alt-checkbox-indicator-plastique.patch
Patch512: qt-4.3.4-alt-uitools-shared.patch
Patch513: qt-4.5.2-alt-fix-ssl-loading.patch
Patch514: qt-4.4.0-alt-fix-resolv-loading.patch
Patch515: qt-4.5.0-alt-xmlpatterns-fexceptions.patch
Patch516: qt-4.4.3-alt-sql-ibase-firebird.patch
# SuSE
Patch701: display-key-support.diff
Patch702: ignore-global-advance-width-in-fots.diff
Patch703: plastik-default.diff
Patch704: use-freetype-default.diff
Patch705: qfatal-noreturn.diff
# Sergey A. Sukiyazov <sukiyazov at mail.ru>
Patch9000: qt-4.0.1-alt-qmenubar-key_f10.patch


BuildRequires: xorg-x11-devel freetype2-devel pkg-config rpm-utils rpm-macros-alternatives browser-plugins-npapi-devel
BuildRequires: libcups-devel libcups-devel libclucene-devel
BuildRequires: libbeecrypt liblcms gcc-c++ libstdc++-devel
BuildRequires: libjpeg-devel libmng-devel libpng-devel zlib-devel libtiff-devel
BuildRequires: libxml2-devel libxslt-devel libreadline-devel libpam0-devel
BuildRequires: libMySQL-devel
BuildRequires: libsqlite3-devel bison pkg-config
BuildRequires: fontconfig-devel menu-devel libssl-devel libkrb5-devel
BuildRequires: libdbus-devel
%{?_enable_sql_pgsql:BuildRequires: postgresql-devel > 8.0.4 libpq-devel > 8.0.4 libecpg-devel-static}
%{?_enable_sql_ibase:BuildRequires: firebird-devel}
%{?_enable_phonon:BuildRequires: gstreamer-devel gst-plugins-devel}
%{?_enable_gtkstyle:BuildRequires: libgtk+2-devel}
%{?_enable_glib:BuildRequires: glib2-devel}
%{?_enable_sql_sqlite2:BuildRequires: sqlite-devel}
%{?_enable_sql_odbc:BuildRequires: libunixODBC-devel}


%description
Qt is a GUI software toolkit. Qt simplifies the task of writing and maintaining
GUI (graphical user interface) applications for the X Windows system.
It has everything you need to create professional GUI applications.
And it enables you to create them quickly.
Qt is multi-platform toolkit written in C++ and is fully object-oriented.
This package contains the shared library needed to run Qt%major applications, as
well as the README files for Qt.

##############################################

%package common
Summary: Common package for Qt%major
Group: System/Libraries
Requires: common-licenses
%description common
Common package for Qt%major

##############################################

%package -n lib%name
Summary: Shared library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: lib%{name}-core lib%{name}-gui lib%{name}-network
Requires: lib%{name}-opengl lib%{name}-sql lib%{name}-xml
Requires: lib%{name}-qt3support lib%{name}-svg lib%{name}-script
Requires: lib%{name}-designer lib%{name}-assistant lib%{name}-uitools
Requires: lib%{name}-webkit lib%{name}-xmlpatterns
Requires: lib%{name}-help
Requires: lib%{name}-clucene %{?_enable_dbus:lib%{name}-dbus}
Provides: lib%{name}-x11 = %version-%release

%description -n lib%name
Qt is a GUI software toolkit. Qt simplifies the task of writing and maintaining
GUI (graphical user interface) applications for X Windows System.
Qt is written in C++ and is fully object-oriented. It has everything you need
to create professional GUI applications. And it enables you to create them
quickly.

Qt is a multi-platform toolkit. When developing software with Qt, you can run
it on the X Window System (Unix/X11) or Microsoft Windows NT and Windows 95/98
or framebuffer devices.
Simply recompile your source code on the platform you want.

This package contains the shared library needed to run Qt%major applications, as
well as the README files for Qt.

##############################################

%package -n lib%{name}-qt3support
Summary: Qt3 support library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-qt3support
Qt3 support library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-core
Summary: Core library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
Requires: %name-settings = %major.%minor
Requires: glibc-gconv-modules
%description -n lib%{name}-core
Core library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-gui
Summary: GUI support library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
Provides: libqtgui%major = %version-%release
%description -n lib%{name}-gui
GUI support library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-dbus
Summary: DBus support library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-dbus
DBus support library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-network
Summary: Network support library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-network
Network support library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-uitools
Summary: Designer UI tools library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-uitools
Designer UI tools library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-svg
Summary: SVG support for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-svg
Support for rendering Scalable Vector Graphics (SVG)
drawings and animations for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-opengl
Summary: OpenGL support library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-opengl
OpenGL support library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-sql
Summary: SQL support library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-sql
SQL support library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-test
Summary: Unit Testing Library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-test
Unit Testing Library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-designer
Summary: Libraries for the Qt%major Designer
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-designer
Libraries for the Qt%major Designer

##############################################

%package -n lib%{name}-assistant
Summary: Qt%major Assistant support library
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-assistant
Qt%major Assistant support library

##############################################

%package -n lib%{name}-xml
Summary: XML support library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-xml
XML support library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-script
Summary: Scripting support library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-script
Qt Script is based on the ECMAScript scripting language, as defined in
standard ECMA-262. Microsoft's JScript, and Netscape's JavaScript are
also based on the ECMAScript standard.

##############################################

%package -n lib%{name}-xmlpatterns
Summary: XmlPatterns library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-xmlpatterns
XmlPatterns library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-scripttools
Summary: ScriptTools library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-scripttools
ScriptTools library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-help
Summary: Help library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-help
Help library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-webkit
Summary: WebKit library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-webkit
WebKit library for the Qt%major GUI toolkit

##############################################

%package -n lib%{name}-clucene
Summary: CLucene library for the Qt%major GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%{name}-clucene
CLucene library for the Qt%major GUI toolkit

##############################################

%package devel
Group: System/Libraries
Summary: Meta-package for development with Qt%major GUI toolkit
Requires: lib%name-devel %name-doc %name-designer %name-assistant
%description devel
Meta-package for development with Qt%major GUI toolkit

##############################################

%package -n lib%name-devel
Summary: Header files and libraries for developing apps which will use Qt%major
Group: Development/KDE and QT
Requires: %name-common = %version-%release
Requires: lib%name
Requires: xorg-x11-devel libssl-devel freetype2-devel fontconfig-devel libpng-devel zlib-devel libtiff-devel
Requires: lib%{name}-test lib%{name}-scripttools
%if_enabled dbus
Requires: libdbus-devel
%endif
Requires: rpm-macros-%{name} = %{version}-%{release}
Provides: lib%name-devel-cxx = %__gcc_version_base
%description -n lib%name-devel
Qt is a GUI software toolkit. Qt simplifies the task of writing and maintaining
GUI (graphical user interface) applications for X Windows.

Qt is written in C++ and is fully object-oriented. It has everything you need
to create professional GUI applications. And it enables you to create them
quickly.

Qt is a multi-platform toolkit. When developing software with Qt, you can run
it on the X Window System (Unix/X11) or Microsoft Windows NT and Windows 95/98.
Simply recompile your source code on the platform you want.

This package contains the files necessary to develop applications

##############################################

%package -n lib%name-devel-static
Summary: Version of the Qt GUI toolkit for static linking
Group: Development/KDE and QT
Requires: %name-common = %version-%release
Requires: lib%name-devel
Obsoletes: %name-devel-static
%description -n lib%name-devel-static
This package package contains the files necessary to link applications
to the Qt GUI toolkit statically (rather than dynamically).
Statically linked applications don't require the library to be installed
on the system running the application.

##############################################

%package designer
Summary: Designer for the Qt%major
Group: Development/KDE and QT
Requires: %name-common = %version-%release
Requires: lib%name-devel
%description designer
The package contains an User Interface designer
tool for the Qt%major toolkit.

##############################################

%package -n lib%name-styles
Summary: Extra styles for the Qt GUI toolkit
Group: System/Libraries
Requires: %name-common = %version-%release
%description -n lib%name-styles
Extra styles (themes) for the Qt GUI toolkit.

##############################################

%package sql
Group: System/Libraries
Summary: Meta-package for SQL support of Qt%major GUI toolkit
Requires: lib%name-sql-mysql
Requires: lib%name-sql-sqlite
%if_enabled sql_ibase
Requires: lib%name-sql-interbase
%endif
%if_enabled sql_pgsql
Requires: lib%name-sql-postgresql
%endif
%if_enabled sql_ibase
Requires: lib%name-sql-interbase
%endif
%if_enabled sql_sqlite2
Requires: lib%name-sql-sqlite2
%endif
%if_enabled sql_odbc
Requires: lib%name-sql-odbc
%endif
%description sql
Meta-package for SQL support of Qt%major GUI toolkit

##############################################

%package -n lib%name-sql-odbc
Summary: ODBC drivers for Qt%major SQL classes
Group: System/Libraries
Requires: %name-common = %version-%release
Provides: lib%name-plugin-sql = %version-%release
%description -n lib%name-sql-odbc
ODBC driver for Qt's SQL classes (QODBC)

##############################################

%package -n lib%name-sql-mysql
Summary: MySQL driver for Qt%major SQL classes
Group: System/Libraries
Requires: %name-common = %version-%release
Provides: lib%name-plugin-sql = %version-%release
%description -n lib%name-sql-mysql
MySQL driver for Qt's SQL classes (QMYSQL)

##############################################

%package -n lib%name-sql-postgresql
Summary: PostgreSQL drivers for Qt%major SQL classes
Group: System/Libraries
Requires: %name-common = %version-%release
Provides: lib%name-plugin-sql = %version-%release
%description -n lib%name-sql-postgresql
PostgreSQL driver for Qt's SQL classes (QPSQL)

##############################################

%package -n lib%name-sql-interbase
Summary: InterBase drivers for Qt%major SQL classes
Group: System/Libraries
Requires: %name-common = %version-%release
Provides: lib%name-plugin-sql = %version-%release
%description -n lib%name-sql-interbase
InterBase driver for Qt's SQL classes (QIBASE)

##############################################

%package -n lib%name-sql-sqlite
Summary: SQLite driver for Qt%major SQL classes
Group: System/Libraries
Requires: %name-common = %version-%release
Provides: lib%name-plugin-sql = %version-%release
%description -n lib%name-sql-sqlite
SQLite driver for Qt's SQL classes (QSQLITE)

##############################################

%package -n lib%name-sql-sqlite2
Summary: SQLite2 driver for Qt%major SQL classes
Group: System/Libraries
Requires: %name-common = %version-%release
Provides: lib%name-plugin-sql = %version-%release
%description -n lib%name-sql-sqlite2
SQLite2 driver for Qt's SQL classes (QSQLITE2)

##############################################

%package doc
Summary: Document for developing apps which will use Qt%{major}
Group: Development/KDE and QT
Requires: %name-common = %version
Requires: %name-assistant = %version
Requires: %name-doc-html = %version
#Requires: %name-doc-man = %version
Requires: %name-doc-examples = %version
%description doc
This package contains documentation and sources for example programs.

##############################################

%package doc-html
BuildArch: noarch
Summary: Document for developing apps which will use Qt%{major}
Group: Development/KDE and QT
Requires: %name-common = %version
%description doc-html
This package contains documentation in html format.

##############################################

%package doc-man
BuildArch: noarch
Summary: Document for developing apps which will use Qt%{major}
Group: Development/KDE and QT
Requires: %name-common = %version
%description doc-man
This package contains documentation in man format.

##############################################

%package doc-examples
Summary: Examples for developing apps which will use Qt%{major}
Group: Development/KDE and QT
Requires: %name-common = %version
%description doc-examples
This package contains sources for example programs.

##############################################

%package assistant
Summary: Assistant for the Qt%major
Group: Text tools
Requires: %name-common = %version-%release
Requires: lib%name-sql-sqlite
%description assistant
This package contains an documentation browser
for the Qt%major toolkit and Qt-based programs.

##############################################

%package -n rpm-macros-%{name}
Summary: Set of RPM macros for packaging %name-based applications
Group: Development/KDE and QT
Requires: %name-common = %version-%release
%description -n rpm-macros-%{name}
Set of RPM macros for packaging %name-based applications for ALT Linux.
Install this package if you want to create RPM packages that use %name.

##############################################

%prep
%define buildsubdir %rname-all-opensource-src-%version%beta

%setup -q -n %buildsubdir

%patch1 -p1

# qt-copy

%patch0180 -p1
%patch0195 -p1
%patch0225 -p1
%patch0253 -p1
%patch0255 -p1
%patch0274 -p1
%patch0280 -p1
%patch0286 -p1

# ALT

%patch501 -p1
%patch502 -p1
%patch503 -p1
%patch504 -p1
%patch505 -p1
#
%patch508 -p1
%patch509 -p1
#%patch510 -p1
%patch511 -p1
%patch512 -p1
%patch513 -p1
%patch514 -p1
%patch515 -p1
%patch516 -p1

%patch701 -p0
%patch702 -p0
%patch703 -p0
%patch704 -p0
%patch705 -p0

#%patch9000 -p1


tar xf %SOURCE11
pushd translations
rm -f ./*.qm
popd

sed -i "s|-O2||" mkspecs/*/qmake.conf
sed -i "s|-O2||" mkspecs/common/g++.conf
%if_enabled debug
sed -i "s|^CFG_DEBUG=.*|CFG_DEBUG=yes|" ./configure
%else
sed -i "s|^CFG_DEBUG=.*|CFG_DEBUG=no|" ./configure
%endif

# set netscape plugins path

sed -i 's|/usr/lib/browser-plugins|%browser_plugins_path|' src/3rdparty/webkit/WebCore/plugins/PluginDatabase.cpp

rm -rf tools/designer/examples
find . -type d -name CVS| xargs rm -rf
find . -type f -name .cvsignore | xargs rm -f

[ -f Makefile.cvs ] && make -f Makefile.cvs


%build
# install %%optflags
subst "s|^\s*QMAKE_CFLAGS\s*=.*$|QMAKE_CFLAGS = %optflags -DGLX_GLXEXT_LEGACY|" mkspecs/*/qmake.conf
subst "s|^\s*QMAKE_CFLAGS\s*=.*$|QMAKE_CFLAGS = %optflags -DGLX_GLXEXT_LEGACY|" mkspecs/common/g++.conf

# versioning hack

grep -q "^\s*QMAKE_LFLAGS_SONAME\s*\+" src/corelib/corelib.pro \
   || echo "QMAKE_LFLAGS_SONAME += " >> src/corelib/corelib.pro
%if_enabled versioning_hack
cat > src/corelib/corelib_add.map <<__EOF__
%if "%__gcc_version_major" == "4"
CXX3 {
%else
CXX%__gcc_version_major {
%endif
   global:
extern "C++"  {
   QObject::QObject*;
   QString::QString*;
};
};
__EOF__
sed -i 's|^\s*QMAKE_LFLAGS_SONAME\s*\+.*$|QMAKE_LFLAGS_SONAME += -Wl,--version-script=\$\$QT_BUILD_TREE/src/corelib/corelib_add.map|' src/corelib/corelib.pro
%else
sed -i 's|^\s*QMAKE_LFLAGS_SONAME\s*\+.*$|QMAKE_LFLAGS_SONAME += |' src/corelib/corelib.pro
%endif

#export QTDIR=$(`which pwd`)

#export PATH=$QTDIR/bin:$QTDIR/qmake:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_DIR="$PWD"
export PATH=$QT_DIR/bin:$PATH
export LD_LIBRARY_PATH=$QT_DIR/lib:$LD_LIBRARY_PATH
export KDEDIR=%kdedir
export CFLAGS="%optflags" CXXFLAGS="%optflags"

CNFGR="\
-L/usr/X11R6/%_lib \
-I%_includedir/pgsql/ -I%_includedir/mysql/ \
-I/usr/X11R6/include/X11/Xft -I/usr/include/fontconfig \
       -prefix %qtdir \
-bindir %qtdir/bin \
-docdir %_datadir/%name/doc \
-headerdir %_includedir/%name \
-libdir %_libdir \
-translationdir %_datadir/%name/translations \
-plugindir %qtdir/plugins \
-sysconfdir %_sysconfdir/xdg \
-datadir %_datadir/%name \
-examplesdir %qtdir/examples \
-demosdir %qtdir/demos \
\
%ifarch x86_64
-platform linux-g++-64 \
%else
-platform linux-g++ \
%endif
%{?_enable_debug:-debug}%{!?_enable_debug:-release} -verbose -no-separate-debug-info \
-largefile -stl -fast -no-rpath -pch -no-exceptions -no-g++-exceptions -accessibility \
%qIF_ver_gteq %binutils_ver 2.18
-reduce-relocations \
%endif
\
%if 0
-graphicssystem raster \
%endif
-system-zlib -cups -openssl-linked -webkit -xmlpatterns -scripttools \
-no-nas-sound -no-nis -iconv \
%{?_enable_phonon: -phonon}%{!?_enable_phonon: -no-phonon} \
%{?_enable_gtkstyle: -gtkstyle}%{!?_enable_gtkstyle: -no-gtkstyle} \
%{?_enable_glib: -glib}%{!?_enable_glib: -no-glib} \
\
%{?_enable_dbus:-dbus-linked}%{!?_enable_dbus:-no-dbus} \
\
-DQT_USE_APPROXIMATE_CURSORS \
-sm -mitshm -fontconfig -xfixes -xshape -xcursor -xinerama -xrender -xrandr -xkb -xinput \
\
-svg \
-qt-gif -system-libpng -system-libjpeg -system-libmng -system-libtiff"

CNFGR_STATIC=" -static \
-qt-sql-mysql -qt-sql-sqlite \
%{?_enable_sql_ibase:-qt-sql-ibase} \
%{?_enable_sql_pgsql:-qt-sql-psql} \
%{?_enable_sql_sqlite2:-qt-sql-sqlite2} \
%{?_enable_sql_odbc:-qt-sql-odbc}"

CNFGR_SHARED=" -shared \
-plugin-sql-mysql -plugin-sql-sqlite \
%{?_enable_sql_ibase:-plugin-sql-ibase} \
%{?_enable_sql_pgsql:-plugin-sql-psql} \
%{?_enable_sql_sqlite2:-plugin-sql-sqlite2} \
%{?_enable_sql_odbc:-plugin-sql-odbc}"

is_building=""
clean_but_lib()
{
   [ -n "$is_building" ] || return
   [ -n "$1" ] && dirsuffix="$1"
   [ -n "$dirsuffix" ] || dirsuffix="builded"
   mkdir -p lib-"$dirsuffix"
   cp -ar lib/* lib-"$dirsuffix"
   make confclean
   rm -rf lib/*
}

# Build   STATIC THREADED   libraries #

%if_enabled static_thread
echo -e "o\nyes" |./configure $CNFGR_STATIC $CNFGR -nomake examples -nomake demos -nomake docs -nomake translations
%make_build -C src
%make_build -C tools/designer/src/uitools
is_building=1
clean_but_lib
%endif #static_thread

# Build   SHARED THREADED   libraries #

%if_enabled shared_thread
echo -e "o\nyes" |./configure $CNFGR_SHARED $CNFGR
%make_build
%if_enabled sql_sqlite2
%make_build -C src/plugins/sqldrivers/sqlite2
%endif
%endif #shared_thread

# compile translations

LD_LIBRARY_PATH=./lib ./bin/lrelease ./translations/*.ts
rm -f ./translations/*_untranslated.qm


%install
%if_enabled debug
%set_strip_method none
%endif
# uninstall %%optflags
subst "s|^\s*QMAKE_CFLAGS\s*=.*$|QMAKE_CFLAGS = -pipe|" mkspecs/*/qmake.conf
subst "s|^\s*QMAKE_CFLAGS\s*=.*$|QMAKE_CFLAGS = -pipe|" mkspecs/common/g++.conf

export QTDIR=%qtdir
export QT_DIR="$PWD"
export PATH=$QT_DIR/bin:%buildroot/%qtdir/bin:$PATH
export MANPATH=%qtdir/doc/man:$MANPATH
export LD_LIBRARY_PATH=%buildroot/%qtdir/lib:$QT_DIR/lib:$LD_LIBRARY_PATH
export KDEDIR=%kdedir

%__install -d -m 0755 %buildroot/%_bindir
%__install -d -m 0755 %buildroot/%qtdir/plugins/codecs/
%__install -d -m 0755 %buildroot/%qtdir/plugins/crypto/
%__install -d -m 0755 %buildroot/%qtdir/plugins/accessible/

%make INSTALL_ROOT=%buildroot install
[ -x %buildroot/%qtdir/bin/qdoc3 ] \
   || install -m 0755 tools/qdoc3/qdoc3 %buildroot/%qtdir/bin/
%if_enabled sql_sqlite2
%make INSTALL_ROOT=%buildroot install -C src/plugins/sqldrivers/sqlite2
%endif


# move docs do _docdir

mkdir -p %buildroot/%_docdir/
mv %buildroot/%_datadir/%name/doc %buildroot/%_docdir/%rname-%version
ln -s ../../..%_docdir/%rname-%version %buildroot/%_datadir/%name/doc

# install rpm macros

%__install -d -m 0755 %buildroot/%_rpmmacrosdir/
cat >%buildroot/%_rpmmacrosdir/%name <<__EOF__
%%_%{name}dir %qtdir
__EOF__

# install settings

%__install -d -m 0755 %buildroot/%_sysconfdir/xdg/
ln -s ../../../%_sysconfdir/xdg %buildroot/%qtdir/settings

# install tools

%__install -m 775 bin/findtr %buildroot/%qtdir/bin/
pushd %buildroot/%qtdir/bin/
for f in `ls -1`; do
   ln -s ../..%qtdir/bin/$f %buildroot/%_bindir/$f-%name
done
popd

# install libraries

#
%__mkdir_p %buildroot/%qtdir/lib
pushd %buildroot/%_libdir
for f in lib*.so.*; do
   ln -s ../../$f %buildroot/%qtdir/lib/
   [ -f $f ] \
&& ln -sf $f %buildroot/%qtdir/lib/`echo $f| sed "s|\(.*\.so\).*|\1|"`
done
popd
%if_enabled static_thread
for f in lib-builded/lib*.a lib-builded/lib*.la; do
%__install -m0644 $f %buildroot/%qtdir/lib/
done
%endif
#
ln -s %name %buildroot/%_libdir/%rname-%version

# install qdbus alternative

%if_enabled dbus
QDBUS_ALTPRIO=`printf '%%.2d%%.2d%%.2d%%.2d\n' 0 %major %minor %bugfix`
mkdir -p %buildroot/%_altdir/
cat > %buildroot/%_altdir/qdbus-qt4 <<__EOF__
%_bindir/qdbus %qtdir/bin/qdbus $QDBUS_ALTPRIO
__EOF__
%endif

# install translations

#install -m 644 ./translations/*.qm %buildroot/%qtdir/translations
%__mkdir_p %buildroot/%_datadir/%name/translations
ln -s ../../../%_datadir/%name/translations %buildroot/%qtdir/translations
%__mkdir_p %buildroot/%_datadir/%name/phrasebooks
ln -s ../../../%_datadir/%name/phrasebooks %buildroot/%qtdir/phrasebooks
# findlang
echo "%%defattr(644,root,root,755)" > %name.lang
for f in %buildroot/%_datadir/%name/translations/*.qm
do
   LNG=`echo "$f"| sed -e 's|^.*_\([a-z][a-z]\).*|\1|'`
   FILE=%%_datadir/%name/translations/`basename "$f"`
   echo "%%lang($LNG) $FILE" >>%name.lang
done

# install pkgconfig files

#%__mkdir_p %buildroot/%_libdir/pkgconfig
#for f in %buildroot/%_libdir/*.pc; do
#    %__mv $f %buildroot/%_libdir/pkgconfig/
#done
sed -i "s|\(-L\${libdir}\)|-L%qtdir/lib \1|" %buildroot/%_libdir/pkgconfig/*.pc

# install includes

%__mkdir_p %buildroot/%_includedir/
%__ln_s ../../../%_includedir/%name %buildroot/%qtdir/include

# install designer templates

#install -d -m 0755 %buildroot/%qtdir/tools/designer/templates
#cp -fR tools/designer/templates/*.ui %buildroot/%qtdir/tools/designer/templates

# Ship qmake stuff

ln -s ../../../%_datadir/%name/mkspecs %buildroot/%qtdir/mkspecs
# fix lib*.so placement
subst "s|^\s*QMAKE_LIBDIR_QT\s*=.*$|QMAKE_LIBDIR_QT = %qtdir/lib|" %buildroot/%qtdir/mkspecs/*/qmake.conf
subst "s|^\s*QMAKE_LIBDIR_QT\s*=.*$|QMAKE_LIBDIR_QT = %qtdir/lib|" %buildroot/%qtdir/mkspecs/common/g++.conf
%if_enabled versioning_hack
## fix QMAKE_LFLAGS_SONAME
#for f in %buildroot/%_datadir/%name/mkspecs/*/qmake.conf
#do
#    subst "s|^.*QMAKE_LFLAGS_SONAME.*$|QMAKE_LFLAGS_SONAME     = -Wl,-soname,|g" $f
#done
%endif


# install documentation

#install -d -m 0755 %buildroot/%_docdir/%rname-%version/doc/html
#install -m 0644 doc/html/*.html %buildroot/%_docdir/%rname-%version/doc/html
install -d -m 0755 %buildroot/%_docdir/%rname-%version/
cat > %buildroot/%_docdir/%rname-%version/LICENSE.txt <<__EOF__
see GPL-3 and LGPL-2.1 in %_datadir/license
__EOF__
for f in LGPL_EXCEPTION.txt FAQ.txt README changes-%version
do
   f2=`echo "$f"| sed 's|\.[Tt][Xx][Tt]$||'`
   install -m 0644 $f %buildroot/%_docdir/%rname-%version/${f2}.txt
done

# Install a README

install -m 0644 %SOURCE8 %buildroot/%_docdir/%rname-%version/README.ALT.txt
%__subst 's| at QT at |%name|g' %buildroot/%_docdir/%rname-%version/README.ALT.txt
%__subst 's| at QTDIR at |%qtdir|g' %buildroot/%_docdir/%rname-%version/README.ALT.txt
%__subst 's| at QtVersion at |%version|g' %buildroot/%_docdir/%rname-%version/README.ALT.txt
%__subst 's| at PackageVersion at |%version-%release|g' %buildroot/%_docdir/%rname-%version/README.ALT.txt
%__subst 's| at QTHOME at |~/.config/|g' %buildroot/%_docdir/%rname-%version/README.ALT.txt

# Install man pages

#install -d -m 0755 %buildroot/%_mandir/man1/
#for i in %_builddir/%buildsubdir/doc/man/man1/* ; do
#   install -m 0644 $i %buildroot/%_mandir/man1/
#done
#pushd %buildroot/%_mandir/man1
#    for i in $(find . -name \*.1);do
# mv -f $i ${i}qt%major%minor%bugfix
#    done
#popd
#install -d -m 0755 %buildroot/%_mandir/man3/
#for i in %_builddir/%buildsubdir/doc/man/man3/* ; do
#   install -m 0644 $i %buildroot/%_mandir/man3/
#done
#
#pushd %buildroot/%_mandir/
#    for i in $(find . -name Q\*);do
# perl -pi -e 's|3qt|3qt%major%minor%bugfix|g' $i
#    done
#    for i in $(find . -name \*.3qt);do
# mv -f $i ${i}%major%minor%bugfix
#    done
#popd

# David - 3.0.1-2mdk - Install .pri files needed to build examples and demos

install -d -m 0755 %buildroot/%qtdir/src/
for i in %_builddir/%buildsubdir/src/*.pri; do
  install -m 0644 $i %buildroot/%qtdir/src/
done

# David - 3.0.0-0.11mdk - Provide a qmake.cache for examples

cp -pf %_builddir/%buildsubdir/.qmake.cache %_builddir/%buildsubdir/.qmake.cache.tmp
perl -pi -e "s|^QT_SOURCE_TREE.*|QT_SOURCE_TREE = %qtdir|" %_builddir/%buildsubdir/.qmake.cache.tmp
perl -pi -e "s|^QT_BUILD_TREE.*|QT_BUILD_TREE = %qtdir|" %_builddir/%buildsubdir/.qmake.cache.tmp
perl -pi -e "s|^QMAKE_MOC.*|QMAKE_MOC = %qtdir/bin/moc|" %_builddir/%buildsubdir/.qmake.cache.tmp
perl -pi -e "s|^QMAKE_UIC.*|QMAKE_UIC = %qtdir/bin/uic -L $$QT_BUILD_TREE/plugins|" %_builddir/%buildsubdir/.qmake.cache.tmp
perl -pi -e "s|^QMAKE_QMAKE.*|QMAKE_QMAKE = %qtdir/bin/qmake|" %_builddir/%buildsubdir/.qmake.cache.tmp
perl -pi -e "s|^QMAKE_MOC_SRC.*|QMAKE_MOC_SRC = %qtdir/src/moc|" %_builddir/%buildsubdir/.qmake.cache.tmp
perl -pi -e "s|^QMAKE_INCDIR_QT.*|QMAKE_INCDIR_QT = %qtdir/include|" %_builddir/%buildsubdir/.qmake.cache.tmp
perl -pi -e "s|^QMAKE_LIBDIR_QT.*|QMAKE_LIBDIR_QT = %qtdir/lib|" %_builddir/%buildsubdir/.qmake.cache.tmp
#perl -pi -e "s|^QMAKE_LIBDIR_FLAGS.*|QMAKE_LIBDIR_FLAGS += -lXinerama|" %_builddir/%buildsubdir/.qmake.cache.tmp

# examples and demos

for m in examples demos
do
   cp -ar %_builddir/%buildsubdir/$m %buildroot/%_docdir/qt-%version
   pushd %buildroot/%_docdir/%rname-%version/$m
#cp -p %_builddir/%buildsubdir/.qmake.cache.tmp .qmake.cache
find -type f -name Makefile | while read f; do rm -f "$f"; done
find -type f -name \*.o | while read f; do rm -f "$f"; done
cat README > README.tmp
echo "Before try to build one of these $m, you need to:" > README
echo "" >> README
echo "export QTDIR=\"%{qtdir}/\"" >> README
echo "" >> README
echo "" >> README
cat README.tmp >> README
rm -f README.tmp
   popd
   pushd %buildroot/%_docdir/%rname-%version/
   tar jcf $m.tar.bz2 $m
   #tar --owner=root --group=root --mode=u+w,go-w,go+rX -cjf $m.tar.bz2 $m
   rm -rf $m
   popd
done

ln -s ../../../%_docdir/qt-%version %buildroot/%qtdir/doc

pushd %buildroot/%_datadir/%name/mkspecs/
rm -rf default
%ifarch x86_64
ln -sf linux-g++-64 default
%else
ln -sf linux-g++ default
%endif
popd

# Install .desktop files

install -d -m 0755 %buildroot/%_datadir/applications/
install -m 0644 %SOURCE21 %buildroot/%_datadir/applications/%name-assistant.desktop
install -m 0644 %SOURCE22 %buildroot/%_datadir/applications/%name-designer.desktop
install -m 0644 %SOURCE23 %buildroot/%_datadir/applications/%name-linguist.desktop
install -m 0644 %SOURCE24 %buildroot/%_datadir/applications/%name-qtconfig.desktop
# Icons
mkdir -p %buildroot/%_iconsdir/hicolor/{16x16,32x32,48x48}/apps
install -m 644 %SOURCE101 %buildroot/%_iconsdir/hicolor/16x16/apps/%rname.png
install -m 644 %SOURCE102 %buildroot/%_iconsdir/hicolor/32x32/apps/%rname.png
install -m 644 %SOURCE103 %buildroot/%_iconsdir/hicolor/48x48/apps/%rname.png


%files
%files -n lib%name
%files sql
%files devel

%files common -f %name.lang
%dir %qtdir/bin
%dir %qtdir/
%dir %qtdir/lib/
%dir %_datadir/%name/
%dir %_datadir/%name/doc
%dir %qtdir/phrasebooks/
%dir %_datadir/%name/phrasebooks/
%dir %qtdir/translations/
%dir %_datadir/%name/translations/
#%_datadir/%name/translations/qt_*.qm
#%_datadir/%name/translations/qtconfig_*.qm
%dir %qtdir/plugins/
%dir %qtdir/plugins/graphicssystems/
%dir %qtdir/plugins/codecs/
%dir %qtdir/plugins/sqldrivers/
%dir %qtdir/plugins/imageformats/
%dir %qtdir/plugins/inputmethods/
%dir %qtdir/plugins/iconengines/
%dir %qtdir/plugins/crypto/
%dir %qtdir/plugins/script/
%dir %qtdir/plugins/accessible/
#%qtdir/plugins/styles
%qtdir/settings
%_libdir/%rname-%version
%_iconsdir/hicolor/*/apps/%rname.png
%dir %_docdir/%rname-%version/
%qtdir/doc
#
%qtdir/mkspecs/
%dir %_datadir/%name/mkspecs/
#
%dir %qtdir/src/

%files -n lib%{name}-qt3support
%qtdir/bin/qtconfig
%_bindir/qtconfig-%name
%qtdir/lib/libQt3Support.so.*
%_libdir/libQt3Support.so.*
%qtdir/plugins/accessible/libqtaccessiblecompatwidgets.*
%_datadir/applications/qt4-qtconfig.desktop

%files -n lib%{name}-core
%qtdir/lib/libQtCore.so.*
%_libdir/libQtCore.so.*
%qtdir/plugins/codecs/lib*.so

%files -n lib%{name}-gui
%qtdir/lib/libQtGui.so.*
%_libdir/libQtGui.so.*
%qtdir/plugins/imageformats/libqjpeg.*
%qtdir/plugins/imageformats/libqgif.*
%qtdir/plugins/imageformats/libqmng.*
%qtdir/plugins/imageformats/libqtiff.*
%qtdir/plugins/imageformats/libqico.*
%qtdir/plugins/accessible/libqtaccessiblewidgets.*
%qtdir/plugins/inputmethods/libqimsw-*.*

%files -n lib%{name}-script
%qtdir/lib/libQtScript.so.*
%_libdir/libQtScript.so.*
%qtdir/plugins/script/libqtscriptdbus.so

%files -n lib%{name}-uitools
%qtdir/lib/libQtUiTools.so.*
%_libdir/libQtUiTools.so.*

%files -n lib%{name}-network
%qtdir/lib/libQtNetwork.so.*
%_libdir/libQtNetwork.so.*

%files -n lib%{name}-opengl
%qtdir/lib/libQtOpenGL.so.*
%_libdir/libQtOpenGL.so.*
%qtdir/plugins/graphicssystems/libqglgraphicssystem.so

%files -n lib%{name}-sql
%qtdir/lib/libQtSql.so.*
%_libdir/libQtSql.so.*

%files -n lib%{name}-xml
%qtdir/lib/libQtXml.so.*
%_libdir/libQtXml.so.*

%files -n lib%{name}-svg
%qtdir/lib/libQtSvg.so.*
%_libdir/libQtSvg.so.*
%qtdir/plugins/imageformats/libqsvg.so
%qtdir/plugins/iconengines/libqsvgicon.so

%files -n lib%{name}-designer
%qtdir/lib/libQtDesigner.so.*
%_libdir/libQtDesigner.so.*
%qtdir/lib/libQtDesignerComponents.so.*
%_libdir/libQtDesignerComponents.so.*

%if_enabled dbus
%files -n lib%{name}-dbus
%_bindir/qdbusviewer-%name
%qtdir/bin/qdbusviewer
%_bindir/qdbus-%name
%qtdir/bin/qdbus
%_altdir/qdbus-qt4
%qtdir/lib/libQtDBus.so.*
%_libdir/libQtDBus.so.*
%endif

%files -n lib%{name}-assistant
%qtdir/lib/libQtAssistantClient.so.*
%_libdir/libQtAssistantClient.so.*

%files -n lib%{name}-test
%qtdir/lib/libQtTest.so.*
%_libdir/libQtTest.so.*

%files -n lib%{name}-help
%qtdir/lib/libQtHelp.so.*
%_libdir/libQtHelp.so.*
#
%qtdir/bin/qhelpconverter
%qtdir/bin/qhelpgenerator
%_bindir/qhelpconverter-qt4
%_bindir/qhelpgenerator-qt4

%files -n lib%{name}-clucene
%qtdir/lib/libQtCLucene.so.*
%_libdir/libQtCLucene.so.*

%files -n lib%{name}-xmlpatterns
%qtdir/bin/xmlpatterns
%_bindir/xmlpatterns-qt4
%qtdir/lib/libQtXmlPatterns.so.*
%_libdir/libQtXmlPatterns.so.*

%files -n lib%{name}-scripttools
%qtdir/lib/libQtScriptTools.so.*
%_libdir/libQtScriptTools.so.*

%files -n lib%{name}-webkit
%qtdir/lib/libQtWebKit.so.*
%_libdir/libQtWebKit.so.*


%files -n lib%name-devel
%dir %_docdir/%rname-%version/
%doc %_docdir/%rname-%version/*.txt
#
%qtdir/bin/findtr
%_bindir/findtr-%name
%qtdir/bin/moc
%_bindir/moc-%name
%qtdir/bin/lrelease
%_bindir/lrelease-%name
%qtdir/bin/lconvert
%_bindir/lconvert-%name
%qtdir/bin/lupdate
%_bindir/lupdate-%name
%qtdir/bin/pixeltool
%_bindir/pixeltool-%name
%qtdir/bin/rcc
%_bindir/rcc-%name
%qtdir/bin/qt3to4
%_bindir/qt3to4-%name
%if_enabled dbus
%qtdir/bin/qdbuscpp2xml
%_bindir/qdbuscpp2xml-%name
%qtdir/bin/qdbusxml2cpp
%_bindir/qdbusxml2cpp-%name
%endif
%qtdir/bin/qmake
%_bindir/qmake-%name
%qtdir/bin/uic
%_bindir/uic-%name
%qtdir/bin/uic3
%_bindir/uic3-%name
%qtdir/bin/qdoc3
%_bindir/qdoc3-%name
#
%_includedir/%name/
%qtdir/include/
%qtdir/lib/*.so
%_libdir/*.so
#
%_datadir/%name/mkspecs/common
%_datadir/%name/mkspecs/features
%_datadir/%name/mkspecs/default
%_datadir/%name/mkspecs/*linux*
%_datadir/%name/mkspecs/qconfig.pri
#
%qtdir/src/*
%_datadir/%name/q3porting.xml
#
%_libdir/pkgconfig/*.pc

%files designer
%_bindir/designer*
%_bindir/linguist*
#
%_datadir/%name/phrasebooks/*.qph
#%_datadir/%name/translations/designer_*.qm
#%_datadir/%name/translations/linguist_*.qm
#
%dir %qtdir/plugins/designer
%qtdir/plugins/designer/*
%qtdir/bin/designer*
%qtdir/bin/linguist*
#
%_datadir/applications/%name-linguist.desktop
%_datadir/applications/%name-designer.desktop

%if_enabled sql_odbc
%files -n lib%name-sql-odbc
%qtdir/plugins/sqldrivers/libqsqlodbc.*
%endif

%if_enabled sql_pgsql
%files -n lib%name-sql-postgresql
%qtdir/plugins/sqldrivers/libqsqlpsql.*
%endif

%if_enabled sql_ibase
%files -n lib%name-sql-interbase
%qtdir/plugins/sqldrivers/libqsqlibase.*
%endif

%files -n lib%name-sql-mysql
%qtdir/plugins/sqldrivers/libqsqlmysql.*

%files -n lib%name-sql-sqlite
%qtdir/plugins/sqldrivers/libqsqlite.*

%if_enabled sql_sqlite2
%files -n lib%name-sql-sqlite2
%qtdir/plugins/sqldrivers/libqsqlite2.*
%endif

%files assistant
%_bindir/assistant-%name
%qtdir/bin/assistant
%_bindir/assistant_adp-%name
%qtdir/bin/assistant_adp
%_bindir/qcollectiongenerator-qt4
%qtdir/bin/qcollectiongenerator
#%_datadir/%name/translations/assistant_*.qm
%_datadir/applications/%name-assistant.desktop

%files doc
%exclude %_datadir/qt4/mkspecs/*

%files doc-html
%dir %_docdir/%rname-%version/
%dir %_docdir/%rname-%version/html/
%doc %_docdir/%rname-%version/html/*
%dir %_docdir/%rname-%version/src/
%doc %_docdir/%rname-%version/src/*
%dir %_docdir/%rname-%version/qch/
%doc %_docdir/%rname-%version/qch/*

%files doc-examples
%_bindir/qtdemo-qt4
%qtdir/bin/qtdemo
%dir %_docdir/%rname-%version/
%doc %_docdir/%rname-%version/*.bz2
%exclude %qtdir/examples
%exclude %qtdir/demos

#%files doc-man

#%doc %_mandir/man1/*
#%doc %_mandir/man3/*

%files -n lib%name-devel-static
%qtdir/lib/lib*.a
%qtdir/lib/lib*.la

%files -n rpm-macros-%{name}
%_rpmmacrosdir/*

%changelog

Full changelog you can see here

 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin