qt/qt.spec

changeset 263
f4a0b439d0fb
parent 262
495dc52debb0
child 264
dd9efe7d5452
     1.1 --- a/qt/qt.spec	Fri Oct 15 18:58:09 2010 +0200
     1.2 +++ b/qt/qt.spec	Fri Oct 15 19:06:09 2010 +0200
     1.3 @@ -31,6 +31,10 @@
     1.4  #   FIXME: MSvB:
     1.5  #   FIXME: MSvB: -no-webkit added to broken static buildconf
     1.6  #   FIXME: MSvB: as work around for 'ld: cannot find -ljscore'
     1.7 +#   FIXME: MSvB:
     1.8 +#   FIXME: MSvB: Test all of -R %{l_prefix}/lib/qt/dynamic,
     1.9 +#   FIXME: MSvB: -no-rpath, -rpath, and removing $xll_libdir from
    1.10 +#   FIXME: MSvB: shtool subst. Anschliessend mkspecs/qconfig.pri.
    1.11  
    1.12  #   package information
    1.13  Name:         qt
    1.14 @@ -43,7 +47,7 @@
    1.15  Group:        Development
    1.16  License:      GPL
    1.17  Version:      4.7.0
    1.18 -Release:      20101010
    1.19 +Release:      20101012
    1.20  
    1.21  #   build options
    1.22  %option       with_tools     yes
    1.23 @@ -88,7 +92,7 @@
    1.24  %track
    1.25      prog qt = {
    1.26          version   = %{version}
    1.27 -        url       = ftp://ftp.trolltech.com/qt/source/
    1.28 +        url       = ftp://ftp.qt.nokia.com/qt/source/
    1.29          regex     = qt-everywhere-opensource-src-(__VER__)\.tar\.gz
    1.30      }
    1.31  
    1.32 @@ -96,10 +100,10 @@
    1.33      #   announce exceptional build requirements
    1.34      ( echo "This package has exceptional build requirements:"
    1.35        echo "  qt-%{version}-root (2,5 Go)"
    1.36 -      echo "  qt-everywhere-opensource-src-%{version} (4,5 Go)"
    1.37 -      echo "  qt-%{version}-<date>.<arch>-<os>-<tag>.rpm (1 Go)"
    1.38 -      echo "Building with no options takes 0,5 hours on a dual core"
    1.39 -      echo "2 GHz CPU, or 2 hours with all build options enabled."
    1.40 +      echo "  qt-everywhere-opensource-src-%{version} (5,5 Go)"
    1.41 +      echo "  qt-%{version}-<date>.<arch>-<os>-<tag>.rpm (2 Go)"
    1.42 +      echo "Building with no options takes 2,0 hours on a dual core"
    1.43 +      echo "2 GHz CPU, or 6 hours with all build options enabled."
    1.44      ) | %{l_rpmtool} msg -b -t notice
    1.45  
    1.46      %setup -q -n qt-everywhere-opensource-src-%{version}
    1.47 @@ -125,17 +129,15 @@
    1.48          -e 's;\(-z[\t ][\t ]*\)\([^\t \"][^\t \"]*\);\1"\2";g' \
    1.49          configure
    1.50      %{l_shtool} subst \
    1.51 +        -e 's;\(RPATH_FLAGS\)=.*\$QT_INSTALL_LIBS.*\(\$RPATH_FLAGS\)";\1="%{l_prefix}/lib/qt/dynamic \2";' \
    1.52 +        configure
    1.53 +    %{l_shtool} subst \
    1.54          -e 's; *QMakeVar set QMAKE_CFLAGS_X11.*QT_CFLAGS_FONTCONFIG.*;;' \
    1.55          -e 's; *QMakeVar set QMAKE_LIBS_X11.*QT_LIBS_FONTCONFIG.*;;' \
    1.56          configure
    1.57      %{l_shtool} subst \
    1.58          -e "s;\(OPENSSL_LIBS *=\) *-lssl -lcrypto;\1 $openssllibs;" \
    1.59          configure
    1.60 -    %{l_shtool} subst \
    1.61 -        -e 's;-silent|;-rpath|-silent|;' \
    1.62 -        -e 's;\(RPATH_FLAGS="\)\\"\$QT_INSTALL_LIBS\\" \($RPATH_FLAGS"\);\1\2;' \
    1.63 -        -e "s;\(echo.*QMAKE_RPATHDIR +=\).*\$QT_INSTALL_LIBS\\\\\"\\\";\1 $x11_libdir\";" \
    1.64 -        configure
    1.65      #   yes this is needed several times to catch nested occurences of '--cflags'
    1.66      %{l_shtool} subst \
    1.67          -e 's;\(QT_CFLAGS_[^=][^=]*=.*PKG_CONFIG.*\) --cflags ;\1 --cflags-only-other ;g' \
    1.68 @@ -190,7 +192,7 @@
    1.69          src/dbus/dbus.pro
    1.70      %{l_shtool} subst \
    1.71          -e 's;^\(QMAKE_INCDIR[^a-zA-Z0-9=]*=\).*;\1 %{l_prefix}/include;' \
    1.72 -        -e 's;^\(QMAKE_LIBDIR[^a-zA-Z0-9=]*=\).*;\1 %{l_prefix}/lib;' \
    1.73 +        -e 's;^\(QMAKE_LIBDIR[^a-zA-Z0-9=]*=\).*;\1;' \
    1.74          -e "s;^\(QMAKE_INCDIR_OPENGL[^=]*=\) *\(.*\);\1 %{l_prefix}/include \2;" \
    1.75          -e "s;^\(QMAKE_LIBDIR_OPENGL[^=]*=\) *\(.*\);\1 %{l_prefix}/lib \2;" \
    1.76          -e 's;^\(QMAKE_LFLAGS_RELEASE.*\);\1 -s;' \
    1.77 @@ -204,6 +206,8 @@
    1.78          -e "s;^\(QMAKE_LIBDIR_X11[^=]*=\).*;\1 %{l_prefix}/lib $x11_libdir;" \
    1.79          mkspecs/qws/solaris*/qmake.conf \
    1.80          mkspecs/solaris*/qmake.conf
    1.81 +    echo "QMAKE_LIBDIR += %{l_prefix}/lib/qt/dynamic" \
    1.82 +        >>mkspecs/features/shared.prf
    1.83      %{l_shtool} subst \
    1.84          -e 's; *\.\./3rdparty/freetype/.*;;g' \
    1.85          -e 's;^\( *contains(QT_CONFIG, freetype) {\);\1 LIBS += -lfreetype;' \
    1.86 @@ -214,9 +218,16 @@
    1.87      %{l_shtool} subst \
    1.88          -e 's;\(CONFIG[\t ]*+=[\t ]*qt\);\1 x11;' \
    1.89          tools/qtconfig/qtconfig.pro
    1.90 -#    for projfile in `find examples/ -name '*.pro' -print`; do
    1.91 -#        echo 'CONFIG += release' >>$projfile
    1.92 -#    done
    1.93 +    #%{l_shtool} subst \
    1.94 +    #    -e "s;\(\\title\) All Classes;\1 Qt's Classes;" \
    1.95 +    #    doc/src/classes.qdoc
    1.96 +    %{l_shtool} subst \
    1.97 +        -e "s;Qt's Classes;All Classes;" \
    1.98 +        tools/assistant/tools/assistant/doc/assistant.qdoc \
    1.99 +        tools/qdoc3/doc/qdoc-manual.qdoc \
   1.100 +        tools/qdoc3/doc/files/qt.qdocconf \
   1.101 +        tools/qdoc3/test/qt-build-docs.qdocconf \
   1.102 +        tools/qdoc3/test/qt.qdocconf
   1.103  
   1.104  %build
   1.105      #   protect against sloppy code inclusion of all unused subprojects
   1.106 @@ -254,7 +265,7 @@
   1.107          -opensource \
   1.108          -prefix %{l_prefix} \
   1.109          -bindir %{l_prefix}/bin \
   1.110 -        -libdir %{l_prefix}/lib/qt \
   1.111 +        -libdir %{l_prefix}/lib/qt/dynamic \
   1.112          -docdir %{l_prefix}/share/qt/doc \
   1.113          -headerdir %{l_prefix}/include \
   1.114          -plugindir %{l_prefix}/lib/qt/plugins \
   1.115 @@ -340,18 +351,16 @@
   1.116      #   arthur plugin requires libQtDesigner
   1.117      ( cd demos
   1.118        ( cd ../tools/designer/src/lib
   1.119 -        %{l_make} %{l_mflags -O} staticlib
   1.120 +        %{l_make} %{l_mflags -O}
   1.121        ) || exit $?
   1.122        %{l_make} %{l_mflags -O} sub-arthurplugin
   1.123 -      ( cd ../tools/designer/src/lib
   1.124 -        %{l_make} %{l_mflags -O} distclean
   1.125 -      ) || exit $?
   1.126      ) || exit $?
   1.127  
   1.128      #   cache shared libs and initialize the build configuration, which
   1.129      #   would otherwise still contain references to our shared libs build
   1.130 -    %{l_shtool} mkdir -f -p -m 755 dynamic
   1.131 -    mv lib/* dynamic/
   1.132 +    %{l_shtool} mkdir -f -p -m 755 sharbuild/dynamic
   1.133 +    mv lib/* sharbuild/dynamic/
   1.134 +    mv plugins sharbuild/
   1.135      %{l_make} %{l_mflags} confclean
   1.136  %endif
   1.137  
   1.138 @@ -456,7 +465,6 @@
   1.139              sub-script-install_subtargets-ordered \
   1.140              sub-declarative-install_subtargets-ordered \
   1.141              sub-scripttools-install_subtargets-ordered \
   1.142 -            sub-plugins-install_subtargets-ordered \
   1.143              sub-imports-install_subtargets-ordered \
   1.144              sub-translations-install_subtargets-ordered"
   1.145  
   1.146 @@ -469,11 +477,18 @@
   1.147      targets="$targets install_qmake install_mkspecs"
   1.148      %{l_make} %{l_mflags} $targets INSTALL_ROOT="$RPM_BUILD_ROOT"
   1.149  
   1.150 +    #   only install static or shared plugins according to user choice
   1.151 +%if "%{with_shared}" != "yes"
   1.152 +    %{l_make} %{l_mflags} sub-plugins-install_subtargets-ordered INSTALL_ROOT="$RPM_BUILD_ROOT"
   1.153 +%else
   1.154 +    %{l_tar} cf - sharbuild/plugins | %{l_tar} xf - -C $RPM_BUILD_ROOT%{l_prefix}/lib/qt
   1.155 +%endif
   1.156 +            
   1.157  %if "%{with_shared}" == "yes"
   1.158      #   install shared libs and symlinks
   1.159      %{l_shtool} mkdir -f -p -m 755 \
   1.160          $RPM_BUILD_ROOT%{l_prefix}/lib/qt
   1.161 -    %{l_tar} cf - dynamic | %{l_tar} xf - -C $RPM_BUILD_ROOT%{l_prefix}/lib/qt
   1.162 +    %{l_tar} cf - sharbuild/dynamic | %{l_tar} xf - -C $RPM_BUILD_ROOT%{l_prefix}/lib/qt
   1.163  
   1.164      #   offer limited support of pkg-config(1) for shared libs
   1.165      #   substitution unfortunately only handles paths with no whitespace
   1.166 @@ -484,23 +499,36 @@
   1.167      #   explain nonstandard shared library placement
   1.168      ( echo "This OpenPKG Qt build is using the with_shared option."
   1.169        echo ""
   1.170 -      echo "This directory contains optional shared libraries as"
   1.171 -      echo "defined by the OpenPKG build specification. Although"
   1.172 -      echo "shared libraries have been optionally built (see the"
   1.173 -      echo "build time 'with_shared yes' option), static libraries"
   1.174 -      echo "were built by default as usual, and installed in the"
   1.175 +      echo "The directory %{l_prefix}/lib/qt/dynamic contains the"
   1.176 +      echo "requested shared libraries. Although shared libraries"
   1.177 +      echo "have been optionally built (see the build time"
   1.178 +      echo "'with_shared yes' option), static libraries were"
   1.179 +      echo "built by default as usual, and installed in the"
   1.180        echo "standard library directory %{l_prefix}/lib."
   1.181        echo ""
   1.182        echo "To build applications using shared libraries instead,"
   1.183        echo "please direct pkg-config(1) to use the proper definitions"
   1.184        echo "by setting the environment variable PKG_CONFIG_PATH to "
   1.185        echo "%{l_prefix}/lib/qt/dynamic/pkgconfig."
   1.186 +      echo ""
   1.187 +      echo "Note: If building via qmake(1), please append"
   1.188 +      echo "      either 'static' or 'shared' to the line"
   1.189 +      echo "      'CONFIG +=' in the project file (name.pro)."
   1.190 +      echo "      Then execute %{l_prefix}/bin/qmake on this file."
   1.191      ) >$RPM_BUILD_ROOT%{l_prefix}/lib/qt/README
   1.192 +%endif
   1.193  
   1.194 -    #   remove temporary dynamic link paths
   1.195 +    #   correct temporary runtime link paths (static libs)
   1.196      %{l_shtool} subst \
   1.197 +        -e "s;\(QMAKE_PRL_BUILD_DIR[\t ][\t ]*=\).*;\1 /.../qt-everywhere-opensource-src-%{version};" \
   1.198          -e "s;-L\([\t ]*\)[^\t ][^\t ]*qt-everywhere-opensource-src-%{version}\(/[^\t ][^\t ]*\);-L\1%{l_prefix}\2;g" \
   1.199 -        -e "s;\([\t ][\t ]*\)[^\t ][^\t ]*\(qt-everywhere-opensource-src-%{version}.*\);\1/tmp/\2;" \
   1.200 +        $RPM_BUILD_ROOT%{l_prefix}/lib/*.prl \
   1.201 +        $RPM_BUILD_ROOT%{l_prefix}/lib/*.la
   1.202 +%if "%{with_shared}" == "yes"
   1.203 +    #   correct temporary runtime link paths (dynamic libs)
   1.204 +    %{l_shtool} subst \
   1.205 +        -e "s;\(QMAKE_PRL_BUILD_DIR[\t ][\t ]*=\).*;\1 /.../qt-everywhere-opensource-src-%{version};" \
   1.206 +        -e "s;-L\([\t ]*\)[^\t ][^\t ]*qt-everywhere-opensource-src-%{version}/lib;-L\1%{l_prefix}/lib/qt/dynamic;g" \
   1.207          $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/*.prl \
   1.208          $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/*.la
   1.209  %endif

mercurial