about summary refs log tree commit diff
path: root/pkgs/development/libraries/qt-4.x/4.8/default.nix
diff options
context:
space:
mode:
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.nix68
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";