You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
392 lines
14 KiB
392 lines
14 KiB
## |
|
## qt.spec -- OpenPKG RPM Specification |
|
## Copyright (c) 2000-2004 The OpenPKG Project <http://www.openpkg.org/> |
|
## Copyright (c) 2000-2004 Ralf S. Engelschall <rse@engelschall.com> |
|
## Copyright (c) 2000-2004 Cable & Wireless <http://www.cw.com/> |
|
## |
|
## Permission to use, copy, modify, and distribute this software for |
|
## any purpose with or without fee is hereby granted, provided that |
|
## the above copyright notice and this permission notice appear in all |
|
## copies. |
|
## |
|
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
|
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
|
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
|
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
|
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
|
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
|
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
|
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|
## SUCH DAMAGE. |
|
## |
|
|
|
# package information |
|
Name: qt |
|
Summary: The Qt Toolkit |
|
URL: http://www.trolltech.com/products/qt/x11.html |
|
Vendor: TrollTech AS |
|
Packager: The OpenPKG Project |
|
Distribution: OpenPKG [PLUS] |
|
Group: XWindow |
|
License: GPL |
|
Version: 3.2.3 |
|
Release: 20031221 |
|
|
|
# package library options (each 'yes' builds more libraries) |
|
%option with_shared no |
|
%option with_threads yes |
|
|
|
# package extra options (additional nonlibrary components) |
|
%option with_pgsql no |
|
%option with_mysql no |
|
%option with_tools no |
|
|
|
# list of sources |
|
Source0: ftp://ftp.trolltech.com/pub/qt/source/qt-x11-free-%{version}.tar.bz2 |
|
Patch0: qt.patch |
|
|
|
# build information |
|
Prefix: %{l_prefix} |
|
BuildRoot: %{l_buildroot} |
|
BuildPreReq: OpenPKG, openpkg >= 20030909, X11, xft, gcc, sed |
|
PreReq: OpenPKG, openpkg >= 20030909, X11, xft |
|
%if "%{with_pgsql}" == "yes" |
|
BuildPreReq: postgresql |
|
PreReq: postgresql |
|
%endif |
|
%if "%{with_mysql}" == "yes" |
|
BuildPreReq: mysql |
|
PreReq: mysql |
|
%endif |
|
AutoReq: no |
|
AutoReqProv: no |
|
|
|
%description |
|
Qt is a GUI (graphical user interface) software toolkit which simplifies |
|
the task of writing and maintaining GUIs, and allows the developer to |
|
create prototypes and feature-rich applications quickly. Offering C++ |
|
library bindings, Qt enables development in an object-oriented |
|
environment and appeals to developers with portability in mind. Qt's |
|
portable C++ library bindings allow for error-free recompiling on at |
|
least the three major platforms Unix (and Linux), Apple Macintosh, and |
|
Microsoft Windows. Its API architecture is designed to reduce complexity |
|
and increase reliability through a signal and slot mechanism, which is |
|
similar to templates in C++, but with influences from component |
|
technology. |
|
|
|
%prep |
|
%setup -q -n qt-x11-free-%{version} |
|
%patch -p1 |
|
|
|
# avoid dependencies external to OpenPKG instance |
|
cp -rp mkspecs mkspecs.fresh |
|
%{l_shtool} subst \ |
|
-e 's;[ \t]*-I/usr/local/include;;g' \ |
|
-e 's;[ \t]*/usr/local/include;;g' \ |
|
-e 's;[ \t]*-L/usr/local/lib;;g' \ |
|
-e 's;[ \t]*/usr/local/lib;;g' \ |
|
mkspecs/darwin-g++/qmake.conf \ |
|
mkspecs/freebsd-g++/qmake.conf \ |
|
mkspecs/netbsd-g++/qmake.conf \ |
|
mkspecs/macx-pbuilder/qmake.conf \ |
|
mkspecs/openbsd-g++/qmake.conf |
|
|
|
# correctly detect OpenPKG xrender and xft installations |
|
%{l_shtool} subst \ |
|
-e 's;INCDIRS=";INCDIRS="%{l_prefix}/include ;g' \ |
|
-e 's;LIBDIRS=";LIBDIRS="%{l_prefix}/lib ;g' \ |
|
-e 's;freetype2/freetype/;freetype/;g' \ |
|
-e 's;freetype2;freetype;g' \ |
|
config.tests/x11/xfreetype.test \ |
|
config.tests/x11/xrender.test |
|
|
|
# repair nonstandard posix thread test macro usage |
|
%{l_shtool} subst \ |
|
-e 's/\(defined(_POSIX_THREAD_SAFE_FUNCTIONS)\)/(\1 \&\& _POSIX_THREAD_SAFE_FUNCTIONS-0>0)/g' \ |
|
src/dialogs/qfiledialog.cpp src/kernel/qfont_x11.cpp \ |
|
src/tools/qdatetime.cpp src/tools/qdir_unix.cpp |
|
|
|
%build |
|
# display a warning that this package is a beast |
|
( echo "The qt package requires about 320 MB of temporary disk space" |
|
echo "and one to five hours (depending on options) to build on a" |
|
echo "800 MHz system. Therefore, please be prepared and be patient." |
|
) | %{l_rpmtool} msg -b -t notice |
|
|
|
# set HOME to a writable directory for qsettings |
|
# and set QTDIR to just the source tree directory |
|
# and determine the target platform to build |
|
HOME=`pwd` |
|
QTDIR=`pwd` |
|
case "%{l_platform -t}" in |
|
*-freebsd* ) oscomp="freebsd-g++" ;; |
|
*-linux* ) oscomp="linux-g++" ;; |
|
*-sunos* ) oscomp="solaris-g++" ;; |
|
* ) echo "platform %{l_platform -t} not supported" 2>&1; exit 1 ;; |
|
esac |
|
|
|
# put in proper search paths for dynamic libraries |
|
rflags=`echo '%{l_ldflags}' | %{l_shtool} subst \ |
|
-e 's;%{l_prefix}/lib;%{l_prefix}/lib/qtdyn;g' \ |
|
-e 's;-L;-R;g'` |
|
|
|
# calculate X11 paths in advance |
|
l_x11_incdir=`%{l_prefix}/etc/rc --query x11_incdir` |
|
l_x11_libdir=`%{l_prefix}/etc/rc --query x11_libdir` |
|
|
|
%if "%{with_shared}" == "yes" |
|
# special trolltech configuration |
|
CC="%{l_cc}" \ |
|
CXX="%{l_cxx}" \ |
|
CFLAGS="%{l_cflags -O}" \ |
|
CXXFLAGS="%{l_cxxflags -O}" \ |
|
echo "yes" | ./configure \ |
|
%if "%{with_pgsql}" == "yes" |
|
-qt-sql-psql \ |
|
%endif |
|
%if "%{with_mysql}" == "yes" |
|
-qt-sql-mysql \ |
|
%endif |
|
-platform $oscomp \ |
|
-prefix %{l_prefix} \ |
|
-docdir %{l_prefix}/share/qt/doc \ |
|
-datadir %{l_prefix}/share/qt/data \ |
|
-plugindir %{l_prefix}/share/qt/plugins \ |
|
-translationdir %{l_prefix}/share/qt/translations \ |
|
-sysconfdir %{l_prefix}/etc/qt \ |
|
-release -shared -stl -sm -xrender -xft \ |
|
-qt-zlib -qt-libpng -qt-libjpeg -qt-libmng -qt-gif \ |
|
-I$QTDIR/include %{l_cppflags} -I${l_x11_incdir} \ |
|
-L$QTDIR/lib %{l_ldflags} -L${l_x11_libdir} \ |
|
-R$rflags \ |
|
-no-thread |
|
|
|
# make shared libs, but tools will be built statically later |
|
%{l_make} %{l_mflags -O} \ |
|
MAKE="%{l_make} %{l_mflags -O}" \ |
|
LD_LIBRARY_PATH=$QTDIR/lib \ |
|
sub-src sub-plugins |
|
|
|
%if "%{with_threads}" == "yes" |
|
# run configure a second time to get threaded libs as well |
|
CC="%{l_cc}" \ |
|
CXX="%{l_cxx}" \ |
|
CFLAGS="%{l_cflags -O}" \ |
|
CXXFLAGS="%{l_cxxflags -O}" \ |
|
echo "yes" | ./configure \ |
|
%if "%{with_pgsql}" == "yes" |
|
-qt-sql-psql \ |
|
%endif |
|
%if "%{with_mysql}" == "yes" |
|
-qt-sql-mysql \ |
|
%endif |
|
-platform $oscomp \ |
|
-prefix %{l_prefix} \ |
|
-docdir %{l_prefix}/share/qt/doc \ |
|
-datadir %{l_prefix}/share/qt/data \ |
|
-plugindir %{l_prefix}/share/qt/plugins \ |
|
-translationdir %{l_prefix}/share/qt/translations \ |
|
-sysconfdir %{l_prefix}/etc/qt \ |
|
-release -shared -stl -sm -xrender -xft \ |
|
-qt-zlib -qt-libpng -qt-libjpeg -qt-libmng -qt-gif \ |
|
-I$QTDIR/include %{l_cppflags} -I${l_x11_incdir} \ |
|
-L$QTDIR/lib %{l_ldflags} -L${l_x11_libdir} \ |
|
-R$rflags \ |
|
-thread |
|
|
|
# make our targets a second time to get threaded libs, too |
|
%{l_make} %{l_mflags -O} \ |
|
MAKE="%{l_make} %{l_mflags -O}" \ |
|
LD_LIBRARY_PATH=$QTDIR/lib \ |
|
sub-src sub-plugins |
|
%endif |
|
|
|
# already install our shared libs, and clear out the rest |
|
cp -rf lib dyn |
|
rm -f lib/* |
|
%endif |
|
|
|
# start of static lib build |
|
# special trolltech configuration |
|
CC="%{l_cc}" \ |
|
CXX="%{l_cxx}" \ |
|
CFLAGS="%{l_cflags -O}" \ |
|
CXXFLAGS="%{l_cxxflags -O}" \ |
|
echo "yes" | ./configure \ |
|
%if "%{with_pgsql}" == "yes" |
|
-qt-sql-psql \ |
|
%endif |
|
%if "%{with_mysql}" == "yes" |
|
-qt-sql-mysql \ |
|
%endif |
|
-platform $oscomp \ |
|
-prefix %{l_prefix} \ |
|
-docdir %{l_prefix}/share/qt/doc \ |
|
-datadir %{l_prefix}/share/qt/data \ |
|
-plugindir %{l_prefix}/share/qt/plugins \ |
|
-translationdir %{l_prefix}/share/qt/translations \ |
|
-sysconfdir %{l_prefix}/etc/qt \ |
|
-release -static -stl -sm -xrender -xft \ |
|
-qt-zlib -qt-libpng -qt-libjpeg -qt-libmng -qt-gif \ |
|
-I$QTDIR/include %{l_cppflags} -I${l_x11_incdir} \ |
|
-L$QTDIR/lib %{l_ldflags} -L${l_x11_libdir} \ |
|
-no-thread |
|
|
|
%{l_make} %{l_mflags -O} \ |
|
MAKE="%{l_make} %{l_mflags -O}" \ |
|
%if "%{with_tools}" == "yes" |
|
sub-src sub-tools |
|
%else |
|
sub-src |
|
( cd tools/designer |
|
%{l_make} %{l_mflags -O} \ |
|
MAKE="%{l_make} %{l_mflags -O}" \ |
|
sub-uic |
|
) || exit $? |
|
%endif |
|
|
|
%if "%{with_threads}" == "yes" |
|
# run configure a second time to get threaded libs as well |
|
CC="%{l_cc}" \ |
|
CXX="%{l_cxx}" \ |
|
CFLAGS="%{l_cflags -O}" \ |
|
CXXFLAGS="%{l_cxxflags -O}" \ |
|
echo "yes" | ./configure \ |
|
%if "%{with_pgsql}" == "yes" |
|
-qt-sql-psql \ |
|
%endif |
|
%if "%{with_mysql}" == "yes" |
|
-qt-sql-mysql \ |
|
%endif |
|
-platform $oscomp \ |
|
-prefix %{l_prefix} \ |
|
-docdir %{l_prefix}/share/qt/doc \ |
|
-datadir %{l_prefix}/share/qt/data \ |
|
-plugindir %{l_prefix}/share/qt/plugins \ |
|
-translationdir %{l_prefix}/share/qt/translations \ |
|
-sysconfdir %{l_prefix}/etc/qt \ |
|
-release -static -stl -sm -xrender -xft \ |
|
-qt-zlib -qt-libpng -qt-libjpeg -qt-libmng -qt-gif \ |
|
-I$QTDIR/include %{l_cppflags} -I${l_x11_incdir} \ |
|
-L$QTDIR/lib %{l_ldflags} -L${l_x11_libdir} \ |
|
-thread |
|
|
|
# make our targets a second time to get threaded libs, too |
|
%{l_make} %{l_mflags -O} \ |
|
MAKE="%{l_make} %{l_mflags -O}" \ |
|
%if "%{with_tools}" == "yes" |
|
sub-src sub-tools |
|
%else |
|
sub-src |
|
( cd tools/designer |
|
%{l_make} %{l_mflags -O} \ |
|
MAKE="%{l_make} %{l_mflags -O}" \ |
|
sub-uic |
|
) || exit $? |
|
%endif |
|
%endif |
|
|
|
%install |
|
rm -rf $RPM_BUILD_ROOT |
|
|
|
# calculate X11 lib directory in advance |
|
l_x11_libdir=`%{l_prefix}/etc/rc --query x11_libdir` |
|
|
|
# make directory structure |
|
%{l_shtool} mkdir -f -p -m 755 \ |
|
$RPM_BUILD_ROOT%{l_prefix}/bin \ |
|
%if "%{with_shared}" == "yes" |
|
$RPM_BUILD_ROOT%{l_prefix}/lib/qtdyn \ |
|
%endif |
|
%if "%{with_tools}" == "yes" |
|
$RPM_BUILD_ROOT%{l_prefix}/share/qt/templates \ |
|
$RPM_BUILD_ROOT%{l_prefix}/share/qt/phrasebooks \ |
|
$RPM_BUILD_ROOT%{l_prefix}/share/qt/images \ |
|
%endif |
|
$RPM_BUILD_ROOT%{l_prefix}/share/qt/doc/html \ |
|
$RPM_BUILD_ROOT%{l_prefix}/include/qt/private \ |
|
$RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig \ |
|
$RPM_BUILD_ROOT%{l_prefix}/man/man1 \ |
|
$RPM_BUILD_ROOT%{l_prefix}/man/man3 |
|
|
|
# copy binaries, headers, and then libraries to their target |
|
%{l_shtool} install -c -s -m 755 \ |
|
bin/qmake bin/moc bin/uic \ |
|
$RPM_BUILD_ROOT%{l_prefix}/bin/ |
|
%if "%{with_tools}" == "yes" |
|
%{l_shtool} install -c -s -m 755 \ |
|
bin/linguist bin/lrelease bin/lupdate \ |
|
bin/assistant bin/qtconfig bin/designer \ |
|
$RPM_BUILD_ROOT%{l_prefix}/bin/ |
|
%endif |
|
|
|
# copy mkspecs directory for later portable use of qmake |
|
cp -rp mkspecs.fresh $RPM_BUILD_ROOT%{l_prefix}/share/qt/mkspecs |
|
|
|
# correct man suffix |
|
for man in doc/man/man3/*.3qt; do |
|
%{l_shtool} subst -e 's;\.3qt;.3;' $man |
|
mv $man `echo $man | sed -e 's;\.3qt$;.3;'` |
|
done |
|
|
|
# copy files to their destinations |
|
%{l_shtool} install -c -m 644 \ |
|
include/*.h $RPM_BUILD_ROOT%{l_prefix}/include/qt/ |
|
%{l_shtool} install -c -m 644 \ |
|
include/private/*.h $RPM_BUILD_ROOT%{l_prefix}/include/qt/private/ |
|
%{l_shtool} install -c -m 644 \ |
|
lib/*.a lib/*.prl $RPM_BUILD_ROOT%{l_prefix}/lib/ |
|
%{l_shtool} install -c -m 644 \ |
|
-e "s;\t; ;g" \ |
|
-e "s;\ \+; ;g" \ |
|
-e "s;\ *$;;g" \ |
|
-e "s;-[lL]\ *\-;\-;g" \ |
|
-e "s;-l\ *[^ ]*qt\.pc\ *;;g" \ |
|
-e "s;-L\ *.[^ ]*\ *;;g" \ |
|
-e "s;Libs:;Libs: %{l_ldflags} -L${l_x11_libdir};g" \ |
|
-e "s;\(\-l\);\-lqt \1;" \ |
|
lib/qt.pc $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/ |
|
%if "%{with_threads}" == "yes" |
|
%{l_shtool} install -c -m 644 \ |
|
-e "s;\t; ;g" \ |
|
-e "s;\ \+; ;g" \ |
|
-e "s;\ *$;;g" \ |
|
-e "s;-[lL]\ *\-;\-;g" \ |
|
-e "s;-l\ *[^ ]*qt\-mt\.pc\ *;;g" \ |
|
-e "s;-L\ *.[^ ]*\ *;;g" \ |
|
-e "s;Libs:;Libs: %{l_ldflags} -L${l_x11_libdir};g" \ |
|
-e "s;\(\-l\);\-lqt\-mt \1;" \ |
|
lib/qt-mt.pc $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/ |
|
%endif |
|
%if "%{with_shared}" == "yes" |
|
%{l_shtool} install -c -m 644 \ |
|
dyn/lib*.so* dyn/*.prl dyn/*.pc $RPM_BUILD_ROOT%{l_prefix}/lib/qtdyn/ |
|
%endif |
|
%if "%{with_tools}" == "yes" |
|
%{l_shtool} install -c -m 644 \ |
|
tools/designer/templates/*.ui $RPM_BUILD_ROOT%{l_prefix}/share/qt/templates/ |
|
%{l_shtool} install -c -m 644 \ |
|
tools/linguist/phrasebooks/*.qph $RPM_BUILD_ROOT%{l_prefix}/share/qt/phrasebooks/ |
|
%{l_shtool} install -c -m 644 \ |
|
tools/designer/designer/images/* $RPM_BUILD_ROOT%{l_prefix}/share/qt/images/ |
|
%endif |
|
%{l_shtool} install -c -m 644 \ |
|
doc/man/man3/*.3 $RPM_BUILD_ROOT%{l_prefix}/man/man3/ |
|
%{l_shtool} install -c -m 644 \ |
|
doc/man/man1/*.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/ |
|
%{l_shtool} install -c -m 644 \ |
|
doc/html/* $RPM_BUILD_ROOT%{l_prefix}/share/qt/doc/html/ |
|
|
|
# determine installation files |
|
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ |
|
%{l_files_std} \ |
|
'%not %dir %{l_prefix}/lib/pkgconfig' |
|
|
|
%files -f files |
|
|
|
%clean |
|
rm -rf $RPM_BUILD_ROOT |
|
|
|
|