From bf1b2e9c2ec368b04328c298db546f547de0c582 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 28 Sep 2012 23:20:34 -0400 Subject: [PATCH] qt4: Update to 4.8.3 --- .../libraries/qt-4.x/4.8/default.nix | 52 +++++++-------- .../qt-4.x/4.8/dlopen-absolute-paths.diff | 63 ++++++++++--------- .../libraries/qt-4.x/4.8/glib-2.32.patch | 12 ---- 3 files changed, 58 insertions(+), 69 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 59761e5cf1d..cea59780627 100644 --- a/pkgs/development/libraries/qt-4.x/4.8/default.nix +++ b/pkgs/development/libraries/qt-4.x/4.8/default.nix @@ -7,13 +7,13 @@ , perl, coreutils, libXi , buildMultimedia ? true, alsaLib, gstreamer, gst_plugins_base , buildWebkit ? true -, flashplayerFix ? true, gdk_pixbuf +, flashplayerFix ? false, gdk_pixbuf , gtkStyle ? false, libgnomeui, gtk, GConf, gnome_vfs }: -let - v = "4.8.2"; -in +with stdenv.lib; + +let v = "4.8.3"; in # TODO: # * move some plugins (e.g., SQL plugins) to dedicated derivations to avoid @@ -24,27 +24,26 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-${v}.tar.gz"; - sha256 = "0y93vkkn44md37gyg4y8sc9ylk27xkniaimfcpdcwd090qnjl6wj"; + sha256 = "0a67riy4i0xj6j7vmckd0nakras3rl3rzx0r83h1p1i4z5s2kxzi"; }; - patches = [ ./glib-2.32.patch ( substituteAll { + patches = + [ ./glib-2.32.patch + (substituteAll { src = ./dlopen-absolute-paths.diff; inherit cups icu libXfixes; glibc = stdenv.gcc.libc; }) - ] ++ stdenv.lib.optional gtkStyle ( - substituteAll { + ] ++ stdenv.lib.optional gtkStyle (substituteAll { src = ./dlopen-gtkstyle.diff; # substituteAll ignores env vars starting with capital letter - gconf = GConf; + gconf = GConf; inherit gnome_vfs libgnomeui gtk; - } - ) ++ stdenv.lib.optional flashplayerFix ( - substituteAll { + }) + ++ stdenv.lib.optional flashplayerFix (substituteAll { src = ./dlopen-webkit-nsplugin.diff; inherit gtk gdk_pixbuf; - } - ); + }); preConfigure = '' @@ -81,18 +80,16 @@ stdenv.mkDerivation rec { [ libXrender libXrandr libXinerama libXcursor libXext libXfixes libXv libXi libSM ] - ++ (stdenv.lib.optional (stdenv.lib.lists.elem stdenv.system - stdenv.lib.platforms.mesaPlatforms) - mesa) - ++ (stdenv.lib.optional (buildWebkit || buildMultimedia) alsaLib) + ++ optional (stdenv.lib.lists.elem stdenv.system stdenv.lib.platforms.mesaPlatforms) mesa + ++ optional (buildWebkit || buildMultimedia) alsaLib ++ [ zlib libpng openssl dbus.libs freetype fontconfig glib ] - ++ (stdenv.lib.optionals (buildWebkit || buildMultimedia) - [ gstreamer gst_plugins_base ]); + ++ optionals (buildWebkit || buildMultimedia) [ gstreamer gst_plugins_base ]; # The following libraries are only used in plugins - buildInputs = [ cups # Qt dlopen's libcups instead of linking to it - mysql postgresql sqlite libjpeg libmng libtiff icu ] - ++ stdenv.lib.optionals gtkStyle [ gtk gdk_pixbuf ]; + buildInputs = + [ cups # Qt dlopen's libcups instead of linking to it + mysql postgresql sqlite libjpeg libmng libtiff icu ] + ++ optionals gtkStyle [ gtk gdk_pixbuf ]; buildNativeInputs = [ perl pkgconfig which ]; @@ -119,7 +116,7 @@ stdenv.mkDerivation rec { -no-svg -make qmake -make libs -nomake tools -nomake demos -nomake examples -nomake docs - '' + stdenv.lib.optionalString isMingw " -xplatform win32-g++-4.6"; + '' + optionalString isMingw " -xplatform win32-g++-4.6"; patches = []; preConfigure = '' sed -i -e 's/ g++/ ${stdenv.cross.config}-g++/' \ @@ -136,12 +133,11 @@ stdenv.mkDerivation rec { ''; dontSetConfigureCross = true; dontStrip = true; - } // (if isMingw then - { + } // optionalAttrs isMingw { propagatedBuildInputs = [ ]; - } else {}); + }; - meta = with stdenv.lib; { + meta = { homepage = http://qt.nokia.com/products; description = "A cross-platform application framework for C++"; license = "GPL/LGPL"; diff --git a/pkgs/development/libraries/qt-4.x/4.8/dlopen-absolute-paths.diff b/pkgs/development/libraries/qt-4.x/4.8/dlopen-absolute-paths.diff index 9823d649365..fe691996277 100644 --- a/pkgs/development/libraries/qt-4.x/4.8/dlopen-absolute-paths.diff +++ b/pkgs/development/libraries/qt-4.x/4.8/dlopen-absolute-paths.diff @@ -1,5 +1,27 @@ ---- a/src/gui/painting/qcups.cpp 2011-12-08 09:06:02.000000000 +0400 -+++ b/src/gui/painting/qcups.cpp 2011-12-18 12:17:07.000000000 +0400 +diff -ru qt-everywhere-opensource-src-4.8.3-orig/src/corelib/tools/qlocale_icu.cpp qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp +--- qt-everywhere-opensource-src-4.8.3-orig/src/corelib/tools/qlocale_icu.cpp 2012-09-10 21:36:50.000000000 -0400 ++++ qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp 2012-09-28 22:57:40.764153828 -0400 +@@ -81,7 +81,7 @@ + if (status == NotLoaded) { + + // resolve libicui18n +- QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT)); ++ QLibrary lib(QLatin1String("@icu@/lib/libicui18n"), QLatin1String(U_ICU_VERSION_SHORT)); + lib.setLoadHints(QLibrary::ImprovedSearchHeuristics); + if (!lib.load()) { + qWarning() << "Unable to load library icui18n" << lib.errorString(); +@@ -111,7 +111,7 @@ + } + + // resolve libicuuc +- QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT)); ++ QLibrary ucLib(QLatin1String("@icu@/lib/libicuuc"), QLatin1String(U_ICU_VERSION_SHORT)); + ucLib.setLoadHints(QLibrary::ImprovedSearchHeuristics); + if (!ucLib.load()) { + qWarning() << "Unable to load library icuuc" << ucLib.errorString(); +diff -ru qt-everywhere-opensource-src-4.8.3-orig/src/gui/painting/qcups.cpp qt-everywhere-opensource-src-4.8.3/src/gui/painting/qcups.cpp +--- qt-everywhere-opensource-src-4.8.3-orig/src/gui/painting/qcups.cpp 2012-09-10 21:36:51.000000000 -0400 ++++ qt-everywhere-opensource-src-4.8.3/src/gui/painting/qcups.cpp 2012-09-28 18:08:26.600720491 -0400 @@ -87,7 +87,7 @@ static void resolveCups() @@ -9,8 +31,9 @@ if(cupsLib.load()) { _cupsGetDests = (CupsGetDests) cupsLib.resolve("cupsGetDests"); _cupsFreeDests = (CupsFreeDests) cupsLib.resolve("cupsFreeDests"); ---- a/src/gui/painting/qprinterinfo_unix.cpp 2011-12-08 09:06:02.000000000 +0400 -+++ b/src/gui/painting/qprinterinfo_unix.cpp 2011-12-23 16:22:15.000000000 +0400 +diff -ru qt-everywhere-opensource-src-4.8.3-orig/src/gui/painting/qprinterinfo_unix.cpp qt-everywhere-opensource-src-4.8.3/src/gui/painting/qprinterinfo_unix.cpp +--- qt-everywhere-opensource-src-4.8.3-orig/src/gui/painting/qprinterinfo_unix.cpp 2012-09-10 21:36:51.000000000 -0400 ++++ qt-everywhere-opensource-src-4.8.3/src/gui/painting/qprinterinfo_unix.cpp 2012-09-28 18:08:26.601720488 -0400 @@ -454,7 +454,7 @@ char *domain; int err; @@ -20,39 +43,21 @@ typedef int (*ypGetDefaultDomain)(char **); ypGetDefaultDomain _ypGetDefaultDomain = (ypGetDefaultDomain)lib.resolve("yp_get_default_domain"); typedef int (*ypAll)(const char *, const char *, const struct ypall_callback *); ---- a/src/network/kernel/qhostinfo_unix.cpp 2011-12-23 16:26:07.000000000 +0400 -+++ b/src/network/kernel/qhostinfo_unix.cpp 2011-12-23 16:25:55.000000000 +0400 +diff -ru qt-everywhere-opensource-src-4.8.3-orig/src/network/kernel/qhostinfo_unix.cpp qt-everywhere-opensource-src-4.8.3/src/network/kernel/qhostinfo_unix.cpp +--- qt-everywhere-opensource-src-4.8.3-orig/src/network/kernel/qhostinfo_unix.cpp 2012-09-10 21:36:51.000000000 -0400 ++++ qt-everywhere-opensource-src-4.8.3/src/network/kernel/qhostinfo_unix.cpp 2012-09-28 18:08:53.186643755 -0400 @@ -95,7 +95,7 @@ static void resolveLibrary() { #ifndef QT_NO_LIBRARY - QLibrary lib(QLatin1String("resolv")); + QLibrary lib(QLatin1String("@glibc@/lib/libresolv")); + lib.setLoadHints(QLibrary::ImprovedSearchHeuristics); if (!lib.load()) return; - ---- a/src/corelib/tools/qlocale_icu.cpp 2011-12-08 09:06:03.000000000 +0400 -+++ b/src/corelib/tools/qlocale_icu.cpp 2011-12-23 16:29:15.000000000 +0400 -@@ -81,7 +81,7 @@ - if (status == NotLoaded) { - - // resolve libicui18n -- QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT)); -+ QLibrary lib(QLatin1String("@icu@/lib/libicui18n"), QLatin1String(U_ICU_VERSION_SHORT)); - if (!lib.load()) { - qWarning() << "Unable to load library icui18n" << lib.errorString(); - status = ErrorLoading; -@@ -110,7 +110,7 @@ - } - - // resolve libicuuc -- QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT)); -+ QLibrary ucLib(QLatin1String("@icu@/lib/libicuuc"), QLatin1String(U_ICU_VERSION_SHORT)); - if (!ucLib.load()) { - qWarning() << "Unable to load library icuuc" << ucLib.errorString(); - status = ErrorLoading; ---- a/src/plugins/platforms/xlib/qxlibstatic.cpp 2011-12-08 09:06:02.000000000 +0400 -+++ b/src/plugins/platforms/xlib/qxlibstatic.cpp 2011-12-23 20:38:49.000000000 +0400 +diff -ru qt-everywhere-opensource-src-4.8.3-orig/src/plugins/platforms/xlib/qxlibstatic.cpp qt-everywhere-opensource-src-4.8.3/src/plugins/platforms/xlib/qxlibstatic.cpp +--- qt-everywhere-opensource-src-4.8.3-orig/src/plugins/platforms/xlib/qxlibstatic.cpp 2012-09-10 21:36:51.000000000 -0400 ++++ qt-everywhere-opensource-src-4.8.3/src/plugins/platforms/xlib/qxlibstatic.cpp 2012-09-28 18:08:26.601720488 -0400 @@ -242,7 +242,7 @@ } diff --git a/pkgs/development/libraries/qt-4.x/4.8/glib-2.32.patch b/pkgs/development/libraries/qt-4.x/4.8/glib-2.32.patch index f92d3430514..4593c1b4ba8 100644 --- a/pkgs/development/libraries/qt-4.x/4.8/glib-2.32.patch +++ b/pkgs/development/libraries/qt-4.x/4.8/glib-2.32.patch @@ -10,15 +10,3 @@ diff -Naur qt-everywhere-opensource-src-4.8.2-orig/src/3rdparty/javascriptcore/J typedef struct _GCond GCond; #endif -diff -Naur qt-everywhere-opensource-src-4.8.2-orig/src/3rdparty/webkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h qt-everywhere-opensource-src-4.8.2/src/3rdparty/webkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h ---- qt-everywhere-opensource-src-4.8.2-orig/src/3rdparty/webkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h 2012-04-26 15:46:14.000000000 -0400 -+++ qt-everywhere-opensource-src-4.8.2/src/3rdparty/webkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h 2012-07-14 22:46:24.671138454 -0400 -@@ -52,7 +52,7 @@ - typedef struct _GHashTable GHashTable; - typedef struct _GInputStream GInputStream; - typedef struct _GList GList; --typedef struct _GMutex GMutex; -+typedef union _GMutex GMutex; - typedef struct _GPatternSpec GPatternSpec; - typedef struct _GPollableOutputStream GPollableOutputStream; - typedef struct _GSocketClient GSocketClient;