diff options
Diffstat (limited to 'pkgs/development/libraries/qt-4.x/4.8/default.nix')
-rw-r--r-- | pkgs/development/libraries/qt-4.x/4.8/default.nix | 68 |
1 files changed, 44 insertions, 24 deletions
diff --git a/pkgs/development/libraries/qt-4.x/4.8/default.nix b/pkgs/development/libraries/qt-4.x/4.8/default.nix index 29116d0eb118..a29dcec2b394 100644 --- a/pkgs/development/libraries/qt-4.x/4.8/default.nix +++ b/pkgs/development/libraries/qt-4.x/4.8/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, substituteAll , libXrender, libXinerama, libXcursor, libXmu , libXv, libXext , libXfixes, libXrandr, libSM, freetype, fontconfig -, zlib, libjpeg, libpng, libmng, which, mesa, openssl, dbus, cups, pkgconfig +, zlib, libjpeg, libpng, libmng, which, mesa, mesa_glu, openssl, dbus, cups, pkgconfig , libtiff, glib, icu , mysql, postgresql, sqlite , perl, coreutils, libXi @@ -17,18 +17,23 @@ with stdenv.lib; -let v = "4.8.4"; in +let + v_maj = "4.8"; + v_min = "5"; + vers = "${v_maj}.${v_min}"; +in # TODO: # * move some plugins (e.g., SQL plugins) to dedicated derivations to avoid # false build-time dependencies stdenv.mkDerivation rec { - name = "qt-${v}"; + name = "qt-${vers}"; src = fetchurl { - url = "http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-${v}.tar.gz"; - sha256 = "0w1j16q6glniv4hppdgcvw52w72gb2jab35ylkw0qjn5lj5y7c1k"; + url = "http://download.qt-project.org/official_releases/qt/" + + "${v_maj}/${vers}/qt-everywhere-opensource-src-${vers}.tar.gz"; + sha256 = "0f51dbgn1dcck8pqimls2qyf1pfmsmyknh767cvw87c3d218ywpb"; }; prePatch = '' @@ -39,11 +44,11 @@ stdenv.mkDerivation rec { patches = [ ./glib-2.32.patch - ./CVE-2013-0254.patch (substituteAll { src = ./dlopen-absolute-paths.diff; inherit cups icu libXfixes; glibc = stdenv.gcc.libc; + openglDriver = mesa.driverLink; }) ] ++ stdenv.lib.optional gtkStyle (substituteAll { src = ./dlopen-gtkstyle.diff; @@ -56,19 +61,23 @@ stdenv.mkDerivation rec { inherit gtk gdk_pixbuf; }); - preConfigure = - '' - export LD_LIBRARY_PATH="`pwd`/lib:$LD_LIBRARY_PATH" - configureFlags+=" - -docdir $out/share/doc/${name} - -plugindir $out/lib/qt4/plugins - -importdir $out/lib/qt4/imports - -examplesdir $out/share/doc/${name}/examples - -demosdir $out/share/doc/${name}/demos - -datadir $out/share/${name} - -translationdir $out/share/${name}/translations - " - ''; + preConfigure = '' + export LD_LIBRARY_PATH="`pwd`/lib:$LD_LIBRARY_PATH" + configureFlags+=" + -docdir $out/share/doc/${name} + -plugindir $out/lib/qt4/plugins + -importdir $out/lib/qt4/imports + -examplesdir $out/share/doc/${name}/examples + -demosdir $out/share/doc/${name}/demos + -datadir $out/share/${name} + -translationdir $out/share/${name}/translations + " + '' + optionalString stdenv.isDarwin '' + export CXX=clang++ + export CC=clang + sed -i 's/QMAKE_CC = gcc/QMAKE_CC = clang/' mkspecs/common/g++-base.conf + sed -i 's/QMAKE_CXX = g++/QMAKE_CXX = clang++/' mkspecs/common/g++-base.conf + ''; prefixKey = "-prefix "; configureFlags = @@ -92,12 +101,11 @@ stdenv.mkDerivation rec { ''; propagatedBuildInputs = - [ libXrender libXrandr libXinerama libXcursor libXext libXfixes - libXv libXi libSM - ] - ++ optional (stdenv.lib.lists.elem stdenv.system stdenv.lib.platforms.mesaPlatforms) mesa + [ libXrender libXrandr libXinerama libXcursor libXext libXfixes libXv libXi + libSM zlib libpng openssl dbus.libs freetype fontconfig glib ] + # Qt doesn't directly need GLU (just GL), but many apps use, it's small and doesn't remain a runtime-dep if not used + ++ optional (stdenv.lib.lists.elem stdenv.system stdenv.lib.platforms.mesaPlatforms) mesa_glu ++ optional ((buildWebkit || buildMultimedia) && stdenv.isLinux ) alsaLib - ++ [ zlib libpng openssl dbus.libs freetype fontconfig glib ] ++ optionals (buildWebkit || buildMultimedia) [ gstreamer gst_plugins_base ]; # The following libraries are only used in plugins @@ -112,6 +120,18 @@ stdenv.mkDerivation rec { # @vcunat has been unable to find a *reliable* fix enableParallelBuilding = false; + NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin + "-I${glib}/include/glib-2.0 -I${glib}/lib/glib-2.0/include"; + + NIX_LDFLAGS = optionalString stdenv.isDarwin + "-lglib-2.0"; + + preBuild = optionalString stdenv.isDarwin '' + # resolve "extra qualification on member" error + sed -i 's/struct ::TabletProximityRec;/struct TabletProximityRec;/' \ + src/gui/kernel/qt_cocoa_helpers_mac_p.h + ''; + crossAttrs = let isMingw = stdenv.cross.config == "i686-pc-mingw32" || stdenv.cross.config == "x86_64-w64-mingw32"; |