From 042e4ad6338d3fea79ffd3ce2d6bbd16f58d5479 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sat, 7 Feb 2015 12:52:20 -0600 Subject: [PATCH] qt5split: add split submodule build of Qt 5.3 --- .gitignore | 1 + .../5.3-submodules/0001-dlopen-gtkstyle.patch | 63 ++++ .../0002-dlopen-webkit-nsplugin.patch | 53 +++ .../qt-5/5.3-submodules/0003-glib-2.32.patch | 25 ++ .../5.3-submodules/0004-dlopen-resolv.patch | 39 +++ .../qt-5/5.3-submodules/0005-dlopen-gl.patch | 25 ++ .../qt-5/5.3-submodules/0006-tzdir.patch | 52 +++ .../0007-dlopen-webkit-gtk.patch | 25 ++ .../0008-dlopen-webkit-udev.patch | 31 ++ .../0009-dlopen-serialport-udev.patch | 28 ++ .../0010-dlopen-libXcursor.patch | 29 ++ .../5.3-submodules/0011-dlopen-openssl.patch | 38 ++ .../5.3-submodules/0012-dlopen-dbus.patch | 25 ++ .../libraries/qt-5/5.3-submodules/default.nix | 330 ++++++++++++++++++ .../qt-5/5.3-submodules/manifest.nix | 166 +++++++++ .../libraries/qt-5/5.3-submodules/manifest.sh | 15 + .../qt-5/5.3-submodules/qt-submodule.nix | 62 ++++ .../libraries/qt-5/5.3-submodules/qtbase.nix | 174 +++++++++ pkgs/top-level/all-packages.nix | 2 + 19 files changed, 1183 insertions(+) create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0001-dlopen-gtkstyle.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0002-dlopen-webkit-nsplugin.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0003-glib-2.32.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0004-dlopen-resolv.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0005-dlopen-gl.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0006-tzdir.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0007-dlopen-webkit-gtk.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0008-dlopen-webkit-udev.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0009-dlopen-serialport-udev.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0010-dlopen-libXcursor.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0011-dlopen-openssl.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/0012-dlopen-dbus.patch create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/default.nix create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/manifest.nix create mode 100755 pkgs/development/libraries/qt-5/5.3-submodules/manifest.sh create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/qt-submodule.nix create mode 100644 pkgs/development/libraries/qt-5/5.3-submodules/qtbase.nix diff --git a/.gitignore b/.gitignore index 337672a92dd7..a20a02b9a67b 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,5 @@ result-* /pkgs/applications/kde-apps-*/tmp/ /pkgs/development/libraries/kde-frameworks-*/tmp/ +/pkgs/development/libraries/qt-5/*-submodules/tmp/ /pkgs/desktops/plasma-*/tmp/ \ No newline at end of file diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0001-dlopen-gtkstyle.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0001-dlopen-gtkstyle.patch new file mode 100644 index 000000000000..3f411139f5be --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0001-dlopen-gtkstyle.patch @@ -0,0 +1,63 @@ +From 35d5995a58c86a6addbf0aaf0d1be64d39182872 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:21:58 -0600 +Subject: [PATCH] dlopen-gtkstyle + +--- + qtbase/src/widgets/styles/qgtk2painter.cpp | 2 +- + qtbase/src/widgets/styles/qgtkstyle_p.cpp | 12 ++++++------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/qtbase/src/widgets/styles/qgtk2painter.cpp b/qtbase/src/widgets/styles/qgtk2painter.cpp +index 7b9bd97..075947a 100644 +--- a/qtbase/src/widgets/styles/qgtk2painter.cpp ++++ b/qtbase/src/widgets/styles/qgtk2painter.cpp +@@ -104,7 +104,7 @@ static void initGtk() + static bool initialized = false; + if (!initialized) { + // enforce the "0" suffix, so we'll open libgtk-x11-2.0.so.0 +- QLibrary libgtk(QLS("gtk-x11-2.0"), 0, 0); ++ QLibrary libgtk(QLS("@gtk@/lib/libgtk-x11-2.0"), 0, 0); + + QGtk2PainterPrivate::gdk_pixmap_new = (Ptr_gdk_pixmap_new)libgtk.resolve("gdk_pixmap_new"); + QGtk2PainterPrivate::gdk_pixbuf_get_from_drawable = (Ptr_gdk_pixbuf_get_from_drawable)libgtk.resolve("gdk_pixbuf_get_from_drawable"); +diff --git a/qtbase/src/widgets/styles/qgtkstyle_p.cpp b/qtbase/src/widgets/styles/qgtkstyle_p.cpp +index 2c64225..3343d32 100644 +--- a/qtbase/src/widgets/styles/qgtkstyle_p.cpp ++++ b/qtbase/src/widgets/styles/qgtkstyle_p.cpp +@@ -334,7 +334,7 @@ void QGtkStylePrivate::gtkWidgetSetFocus(GtkWidget *widget, bool focus) + void QGtkStylePrivate::resolveGtk() const + { + // enforce the "0" suffix, so we'll open libgtk-x11-2.0.so.0 +- QLibrary libgtk(QLS("gtk-x11-2.0"), 0, 0); ++ QLibrary libgtk(QLS("@gtk@/lib/libgtk-x11-2.0"), 0, 0); + + gtk_init = (Ptr_gtk_init)libgtk.resolve("gtk_init"); + gtk_window_new = (Ptr_gtk_window_new)libgtk.resolve("gtk_window_new"); +@@ -432,8 +432,8 @@ void QGtkStylePrivate::resolveGtk() const + pango_font_description_get_family = (Ptr_pango_font_description_get_family)libgtk.resolve("pango_font_description_get_family"); + pango_font_description_get_style = (Ptr_pango_font_description_get_style)libgtk.resolve("pango_font_description_get_style"); + +- gnome_icon_lookup_sync = (Ptr_gnome_icon_lookup_sync)QLibrary::resolve(QLS("gnomeui-2"), 0, "gnome_icon_lookup_sync"); +- gnome_vfs_init= (Ptr_gnome_vfs_init)QLibrary::resolve(QLS("gnomevfs-2"), 0, "gnome_vfs_init"); ++ gnome_icon_lookup_sync = (Ptr_gnome_icon_lookup_sync)QLibrary::resolve(QLS("@libgnomeui@/lib/libgnomeui-2"), 0, "gnome_icon_lookup_sync"); ++ gnome_vfs_init= (Ptr_gnome_vfs_init)QLibrary::resolve(QLS("@gnome_vfs@/lib/libgnomevfs-2"), 0, "gnome_vfs_init"); + } + + /* \internal +@@ -601,9 +601,9 @@ void QGtkStylePrivate::cleanupGtkWidgets() + static bool resolveGConf() + { + if (!QGtkStylePrivate::gconf_client_get_default) { +- QGtkStylePrivate::gconf_client_get_default = (Ptr_gconf_client_get_default)QLibrary::resolve(QLS("gconf-2"), 4, "gconf_client_get_default"); +- QGtkStylePrivate::gconf_client_get_string = (Ptr_gconf_client_get_string)QLibrary::resolve(QLS("gconf-2"), 4, "gconf_client_get_string"); +- QGtkStylePrivate::gconf_client_get_bool = (Ptr_gconf_client_get_bool)QLibrary::resolve(QLS("gconf-2"), 4, "gconf_client_get_bool"); ++ QGtkStylePrivate::gconf_client_get_default = (Ptr_gconf_client_get_default)QLibrary::resolve(QLS("@gconf@/lib/libgconf-2"), 4, "gconf_client_get_default"); ++ QGtkStylePrivate::gconf_client_get_string = (Ptr_gconf_client_get_string)QLibrary::resolve(QLS("@gconf@/lib/libgconf-2"), 4, "gconf_client_get_string"); ++ QGtkStylePrivate::gconf_client_get_bool = (Ptr_gconf_client_get_bool)QLibrary::resolve(QLS("@gconf@/lib/libgconf-2"), 4, "gconf_client_get_bool"); + } + return (QGtkStylePrivate::gconf_client_get_default !=0); + } +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0002-dlopen-webkit-nsplugin.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0002-dlopen-webkit-nsplugin.patch new file mode 100644 index 000000000000..0752cdcf4793 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0002-dlopen-webkit-nsplugin.patch @@ -0,0 +1,53 @@ +From 8c30f72dbe11752e8ed25f292c6e5695d7733f72 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:22:23 -0600 +Subject: [PATCH] dlopen-webkit-nsplugin + +--- + qtwebkit/Source/WebCore/plugins/qt/PluginPackageQt.cpp | 2 +- + qtwebkit/Source/WebCore/plugins/qt/PluginViewQt.cpp | 2 +- + .../WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/qtwebkit/Source/WebCore/plugins/qt/PluginPackageQt.cpp b/qtwebkit/Source/WebCore/plugins/qt/PluginPackageQt.cpp +index 679480b..2c373cc 100644 +--- a/qtwebkit/Source/WebCore/plugins/qt/PluginPackageQt.cpp ++++ b/qtwebkit/Source/WebCore/plugins/qt/PluginPackageQt.cpp +@@ -132,7 +132,7 @@ static void initializeGtk(QLibrary* module = 0) + } + } + +- QLibrary library(QLatin1String("libgtk-x11-2.0"), 0); ++ QLibrary library(QLatin1String("@gtk@/lib/libgtk-x11-2.0"), 0); + if (library.load()) { + typedef void *(*gtk_init_check_ptr)(int*, char***); + gtk_init_check_ptr gtkInitCheck = (gtk_init_check_ptr)library.resolve("gtk_init_check"); +diff --git a/qtwebkit/Source/WebCore/plugins/qt/PluginViewQt.cpp b/qtwebkit/Source/WebCore/plugins/qt/PluginViewQt.cpp +index de06a2f..363bde5 100644 +--- a/qtwebkit/Source/WebCore/plugins/qt/PluginViewQt.cpp ++++ b/qtwebkit/Source/WebCore/plugins/qt/PluginViewQt.cpp +@@ -697,7 +697,7 @@ static Display *getPluginDisplay() + // support gdk based plugins (like flash) that use a different X connection. + // The code below has the same effect as this one: + // Display *gdkDisplay = gdk_x11_display_get_xdisplay(gdk_display_get_default()); +- QLibrary library(QLatin1String("libgdk-x11-2.0"), 0); ++ QLibrary library(QLatin1String("@gdk_pixbuf@/lib/libgdk-x11-2.0"), 0); + if (!library.load()) + return 0; + +diff --git a/qtwebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp b/qtwebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp +index d734ff6..62a2197 100644 +--- a/qtwebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp ++++ b/qtwebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp +@@ -64,7 +64,7 @@ static Display* getPluginDisplay() + // The code below has the same effect as this one: + // Display *gdkDisplay = gdk_x11_display_get_xdisplay(gdk_display_get_default()); + +- QLibrary library(QLatin1String("libgdk-x11-2.0"), 0); ++ QLibrary library(QLatin1String("@gdk_pixbuf@/libgdk-x11-2.0"), 0); + if (!library.load()) + return 0; + +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0003-glib-2.32.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0003-glib-2.32.patch new file mode 100644 index 000000000000..4abb69da4d85 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0003-glib-2.32.patch @@ -0,0 +1,25 @@ +From a41c3e3a3a1ce4b373b1bbb98f3a835e9e8a0718 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:22:39 -0600 +Subject: [PATCH] glib-2.32 + +--- + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h +index 1f6d25e..087c3fb 100644 +--- a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h ++++ b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h +@@ -81,7 +81,7 @@ + #include + #elif PLATFORM(GTK) + #include +-typedef struct _GMutex GMutex; ++typedef union _GMutex GMutex; + typedef struct _GCond GCond; + #endif + +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0004-dlopen-resolv.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0004-dlopen-resolv.patch new file mode 100644 index 000000000000..e6b921b771d3 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0004-dlopen-resolv.patch @@ -0,0 +1,39 @@ +From 63af41c6eeca28c911c13b1a77afeaf860863c2d Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:22:55 -0600 +Subject: [PATCH] dlopen-resolv + +--- + qtbase/src/network/kernel/qdnslookup_unix.cpp | 2 +- + qtbase/src/network/kernel/qhostinfo_unix.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/qtbase/src/network/kernel/qdnslookup_unix.cpp b/qtbase/src/network/kernel/qdnslookup_unix.cpp +index 8c5a0eb..27ebf16 100644 +--- a/qtbase/src/network/kernel/qdnslookup_unix.cpp ++++ b/qtbase/src/network/kernel/qdnslookup_unix.cpp +@@ -87,7 +87,7 @@ static void resolveLibrary() + if (!lib.load()) + #endif + { +- lib.setFileName(QLatin1String("resolv")); ++ lib.setFileName(QLatin1String("@glibc/lib/resolv")); + if (!lib.load()) + return; + } +diff --git a/qtbase/src/network/kernel/qhostinfo_unix.cpp b/qtbase/src/network/kernel/qhostinfo_unix.cpp +index df8c8b1..613d0e0 100644 +--- a/qtbase/src/network/kernel/qhostinfo_unix.cpp ++++ b/qtbase/src/network/kernel/qhostinfo_unix.cpp +@@ -103,7 +103,7 @@ static void resolveLibrary() + if (!lib.load()) + #endif + { +- lib.setFileName(QLatin1String("resolv")); ++ lib.setFileName(QLatin1String("@glibc@/lib/libresolv")); + if (!lib.load()) + return; + } +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0005-dlopen-gl.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0005-dlopen-gl.patch new file mode 100644 index 000000000000..d112427bdd63 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0005-dlopen-gl.patch @@ -0,0 +1,25 @@ +From 6aaf6858bf817172a4c503158e1701c4837ee790 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:23:08 -0600 +Subject: [PATCH] dlopen-gl + +--- + qtbase/src/plugins/platforms/xcb/qglxintegration.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp b/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp +index 67235e0..2220a2e 100644 +--- a/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp ++++ b/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp +@@ -434,7 +434,7 @@ void (*QGLXContext::getProcAddress(const QByteArray &procName)) () + { + extern const QString qt_gl_library_name(); + // QLibrary lib(qt_gl_library_name()); +- QLibrary lib(QLatin1String("GL")); ++ QLibrary lib(QLatin1String("@openglDriver@/lib/libGL")); + glXGetProcAddressARB = (qt_glXGetProcAddressARB) lib.resolve("glXGetProcAddressARB"); + } + } +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0006-tzdir.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0006-tzdir.patch new file mode 100644 index 000000000000..d5a74b25fb38 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0006-tzdir.patch @@ -0,0 +1,52 @@ +From 775fd74351faaabd45f6751618b28e2b05812d05 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:23:22 -0600 +Subject: [PATCH] tzdir + +--- + qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp | 21 +++++++++++++++------ + 1 file changed, 15 insertions(+), 6 deletions(-) + +diff --git a/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp b/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp +index b4ea91e..a56a245 100644 +--- a/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp ++++ b/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp +@@ -68,7 +68,10 @@ typedef QHash QTzTimeZoneHash; + // Parse zone.tab table, assume lists all installed zones, if not will need to read directories + static QTzTimeZoneHash loadTzTimeZones() + { +- QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); ++ QString path = qgetenv("TZDIR"); ++ path += "/zone.tab"; ++ if (!QFile::exists(path)) ++ path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); + if (!QFile::exists(path)) + path = QStringLiteral("/usr/lib/zoneinfo/zone.tab"); + +@@ -559,12 +562,18 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId) + if (!tzif.open(QIODevice::ReadOnly)) + return; + } else { +- // Open named tz, try modern path first, if fails try legacy path +- tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ // Try TZDIR first ++ QString zoneinfoDir = qgetenv("TZDIR"); ++ zoneinfoDir += "/" + QString::fromLocal8Bit(ianaId); ++ tzif.setFileName(zoneinfoDir); + if (!tzif.open(QIODevice::ReadOnly)) { +- tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); +- if (!tzif.open(QIODevice::ReadOnly)) +- return; ++ // Open named tz, try modern path first, if fails try legacy path ++ tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ if (!tzif.open(QIODevice::ReadOnly)) { ++ tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ if (!tzif.open(QIODevice::ReadOnly)) ++ return; ++ } + } + } + +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0007-dlopen-webkit-gtk.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0007-dlopen-webkit-gtk.patch new file mode 100644 index 000000000000..9582b714c903 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0007-dlopen-webkit-gtk.patch @@ -0,0 +1,25 @@ +From 089db8835c80bf2b7dd91a97a5c6eb26636b6ab9 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:26:39 -0600 +Subject: [PATCH] dlopen-webkit-gtk + +--- + qtwebkit/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/qtwebkit/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp b/qtwebkit/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp +index 8de6521..0b25748 100644 +--- a/qtwebkit/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp ++++ b/qtwebkit/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp +@@ -53,7 +53,7 @@ static void messageHandler(QtMsgType type, const QMessageLogContext&, const QStr + + static bool initializeGtk() + { +- QLibrary gtkLibrary(QLatin1String("libgtk-x11-2.0"), 0); ++ QLibrary gtkLibrary(QLatin1String("@gtk@/lib/libgtk-x11-2.0"), 0); + if (!gtkLibrary.load()) + return false; + typedef void* (*gtk_init_ptr)(void*, void*); +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0008-dlopen-webkit-udev.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0008-dlopen-webkit-udev.patch new file mode 100644 index 000000000000..e8a4ba6a2151 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0008-dlopen-webkit-udev.patch @@ -0,0 +1,31 @@ +From 25d2922cce383fcaa4c138e0cc6c8d92328eeacb Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:30:41 -0600 +Subject: [PATCH] dlopen-webkit-udev + +--- + qtwebkit/Source/WebCore/platform/qt/GamepadsQt.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/qtwebkit/Source/WebCore/platform/qt/GamepadsQt.cpp b/qtwebkit/Source/WebCore/platform/qt/GamepadsQt.cpp +index 60ff317..da8ac69 100644 +--- a/qtwebkit/Source/WebCore/platform/qt/GamepadsQt.cpp ++++ b/qtwebkit/Source/WebCore/platform/qt/GamepadsQt.cpp +@@ -111,12 +111,12 @@ private: + bool load() + { + m_libUdev.setLoadHints(QLibrary::ResolveAllSymbolsHint); +- m_libUdev.setFileNameAndVersion(QStringLiteral("udev"), 1); ++ m_libUdev.setFileNameAndVersion(QStringLiteral("@udev@/lib/libudev"), 1); + m_loaded = m_libUdev.load(); + if (resolveMethods()) + return true; + +- m_libUdev.setFileNameAndVersion(QStringLiteral("udev"), 0); ++ m_libUdev.setFileNameAndVersion(QStringLiteral("@udev@/lib/libudev"), 0); + m_loaded = m_libUdev.load(); + return resolveMethods(); + } +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0009-dlopen-serialport-udev.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0009-dlopen-serialport-udev.patch new file mode 100644 index 000000000000..e1e66a3ce95a --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0009-dlopen-serialport-udev.patch @@ -0,0 +1,28 @@ +From 17c7257e54c00ea2121f2cf95fb2be5e5db6b4ad Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:31:03 -0600 +Subject: [PATCH] dlopen-serialport-udev + +--- + qtserialport/src/serialport/qtudev_p.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/qtserialport/src/serialport/qtudev_p.h b/qtserialport/src/serialport/qtudev_p.h +index 09940ab..45460f9 100644 +--- a/qtserialport/src/serialport/qtudev_p.h ++++ b/qtserialport/src/serialport/qtudev_p.h +@@ -119,9 +119,9 @@ inline void *resolveSymbol(QLibrary *udevLibrary, const char *symbolName) + inline bool resolveSymbols(QLibrary *udevLibrary) + { + if (!udevLibrary->isLoaded()) { +- udevLibrary->setFileNameAndVersion(QStringLiteral("udev"), 1); ++ udevLibrary->setFileNameAndVersion(QStringLiteral("@udev@/lib/libudev"), 1); + if (!udevLibrary->load()) { +- udevLibrary->setFileNameAndVersion(QStringLiteral("udev"), 0); ++ udevLibrary->setFileNameAndVersion(QStringLiteral("@udev@/lib/libudev"), 0); + if (!udevLibrary->load()) { + qWarning("Failed to load the library: %s, supported version(s): %i and %i", qPrintable(udevLibrary->fileName()), 1, 0); + return false; +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0010-dlopen-libXcursor.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0010-dlopen-libXcursor.patch new file mode 100644 index 000000000000..49ade86fae3f --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0010-dlopen-libXcursor.patch @@ -0,0 +1,29 @@ +From b56e3737ca97e3de664603976989da4419297eb3 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:33:51 -0600 +Subject: [PATCH] dlopen-libXcursor + +--- + qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp b/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp +index 6dbac90..4b23fc2 100644 +--- a/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp ++++ b/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp +@@ -305,10 +305,10 @@ QXcbCursor::QXcbCursor(QXcbConnection *conn, QXcbScreen *screen) + #ifdef XCB_USE_XLIB + static bool function_ptrs_not_initialized = true; + if (function_ptrs_not_initialized) { +- QLibrary xcursorLib(QLatin1String("Xcursor"), 1); ++ QLibrary xcursorLib(QLatin1String("@libXcursor@/lib/libXcursor"), 1); + bool xcursorFound = xcursorLib.load(); + if (!xcursorFound) { // try without the version number +- xcursorLib.setFileName(QLatin1String("Xcursor")); ++ xcursorLib.setFileName(QLatin1String("@libXcursor@/lib/Xcursor")); + xcursorFound = xcursorLib.load(); + } + if (xcursorFound) { +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0011-dlopen-openssl.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0011-dlopen-openssl.patch new file mode 100644 index 000000000000..d08061dd5dd6 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0011-dlopen-openssl.patch @@ -0,0 +1,38 @@ +From 99d458c93698b2d4f16ff164ed54237279ffbb64 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:35:21 -0600 +Subject: [PATCH] dlopen-openssl + +--- + qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp b/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp +index 4e6200f..d9c3e7d 100644 +--- a/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp ++++ b/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp +@@ -585,8 +585,8 @@ static QPair loadOpenSsl() + #endif + #if defined(SHLIB_VERSION_NUMBER) && !defined(Q_OS_QNX) // on QNX, the libs are always libssl.so and libcrypto.so + // first attempt: the canonical name is libssl.so. +- libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String(SHLIB_VERSION_NUMBER)); +- libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String(SHLIB_VERSION_NUMBER)); ++ libssl->setFileNameAndVersion(QLatin1String("@openssl@/lib/libssl"), QLatin1String(SHLIB_VERSION_NUMBER)); ++ libcrypto->setFileNameAndVersion(QLatin1String("@openssl@/lib/libcrypto"), QLatin1String(SHLIB_VERSION_NUMBER)); + if (libcrypto->load() && libssl->load()) { + // libssl.so. and libcrypto.so. found + return pair; +@@ -597,8 +597,8 @@ static QPair loadOpenSsl() + #endif + + // second attempt: find the development files libssl.so and libcrypto.so +- libssl->setFileNameAndVersion(QLatin1String("ssl"), -1); +- libcrypto->setFileNameAndVersion(QLatin1String("crypto"), -1); ++ libssl->setFileNameAndVersion(QLatin1String("@openssl@/lib/libssl"), -1); ++ libcrypto->setFileNameAndVersion(QLatin1String("@openssl@/lib/libcrypto"), -1); + if (libcrypto->load() && libssl->load()) { + // libssl.so.0 and libcrypto.so.0 found + return pair; +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/0012-dlopen-dbus.patch b/pkgs/development/libraries/qt-5/5.3-submodules/0012-dlopen-dbus.patch new file mode 100644 index 000000000000..f32386e114b7 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/0012-dlopen-dbus.patch @@ -0,0 +1,25 @@ +From eec8a79c6cc9e2c65fd43db48ca2347de3ae0c5e Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel +Date: Mon, 1 Dec 2014 17:38:04 -0600 +Subject: [PATCH] dlopen-dbus + +--- + qtbase/src/dbus/qdbus_symbols.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/qtbase/src/dbus/qdbus_symbols.cpp b/qtbase/src/dbus/qdbus_symbols.cpp +index a7a1b67..661baf1 100644 +--- a/qtbase/src/dbus/qdbus_symbols.cpp ++++ b/qtbase/src/dbus/qdbus_symbols.cpp +@@ -93,7 +93,7 @@ bool qdbus_loadLibDBus() + + static int majorversions[] = { 3, 2, -1 }; + lib->unload(); +- lib->setFileName(QLatin1String("dbus-1")); ++ lib->setFileName(QLatin1String("@dbus_libs@/lib/libdbus-1")); + for (uint i = 0; i < sizeof(majorversions) / sizeof(majorversions[0]); ++i) { + lib->setFileNameAndVersion(lib->fileName(), majorversions[i]); + if (lib->load() && lib->resolve("dbus_connection_open_private")) +-- +2.1.3 + diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/default.nix b/pkgs/development/libraries/qt-5/5.3-submodules/default.nix new file mode 100644 index 000000000000..607da4f589a5 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/default.nix @@ -0,0 +1,330 @@ +{ autonix, fetchurl, newScope, stdenv + +, bison2 +, mesa_noglu +, cups +, gnome + +# options +, developerBuild ? false +}: + +with autonix; +with stdenv.lib; + +let + manifest = + importManifest ./manifest.nix { mirror = "http://download.qt.io"; }; + srcs = + mapAttrs (name: src: fetchurl { inherit (src) url sha256 name; }) manifest; + + version = "5.3.2"; + + callPackage = newScope (self // { inherit qtSubmodule; }); + + qtSubmodule = callPackage ./qt-submodule.nix { + inherit srcs version; + inherit (stdenv) mkDerivation; + }; + + self = + { + + activeqt = callPackage + ( + { qtSubmodule, base }: + + qtSubmodule { + name = "qtactiveqt"; + qtInputs = [ base ]; + } + ) + {}; + + base = callPackage ./qtbase.nix { + mesa = mesa_noglu; + cups = if stdenv.isLinux then cups else null; + # GNOME dependencies are not used unless gtkStyle == true + inherit (gnome) libgnomeui GConf gnome_vfs; + bison = bison2; # error: too few arguments to function 'int yylex(... + inherit developerBuild srcs version; + }; + + connectivity = callPackage + ( + { qtSubmodule, base, declarative }: + + qtSubmodule { + name = "qtconnectivity"; + qtInputs = [ base declarative ]; + } + ) + {}; + + declarative = callPackage + ( + { qtSubmodule, python, base, svg, xmlpatterns }: + + qtSubmodule { + name = "qtdeclarative"; + qtInputs = [ base svg xmlpatterns ]; + nativeBuildInputs = [ python ]; + } + ) + {}; + + doc = callPackage + ( + { qtSubmodule, declarative }: + + qtSubmodule { + name = "qtdoc"; + qtInputs = [ declarative ]; + } + ) + {}; + + enginio = callPackage + ( + { qtSubmodule, declarative }: + + qtSubmodule { + name = "qtenginio"; + qtInputs = [ declarative ]; + } + ) + {}; + + graphicaleffects = callPackage + ( + { qtSubmodule, declarative }: + + qtSubmodule { + name = "qtgraphicaleffects"; + qtInputs = [ declarative ]; + } + ) + {}; + + imageformats = callPackage + ( + { qtSubmodule, base }: + + qtSubmodule { + name = "qtimageformats"; + qtInputs = [ base ]; + } + ) + {}; + + location = callPackage + ( + { qtSubmodule, base, multimedia }: + + qtSubmodule { + name = "qtlocation"; + qtInputs = [ base multimedia ]; + } + ) + {}; + + multimedia = callPackage + ( + { qtSubmodule, base, declarative + , alsaLib, gstreamer, gst_plugins_base, pulseaudio + }: + + qtSubmodule { + name = "qtmultimedia"; + qtInputs = [ base declarative ]; + buildInputs = [ + alsaLib gstreamer gst_plugins_base pulseaudio + ]; + } + ) + {}; + + quick1 = callPackage + ( + { qtSubmodule, script, svg, webkit, xmlpatterns }: + + qtSubmodule { + name = "qtquick1"; + qtInputs = [ script svg webkit xmlpatterns ]; + } + ) + {}; + + quickcontrols = callPackage + ( + { qtSubmodule, declarative }: + + qtSubmodule { + name = "qtquickcontrols"; + qtInputs = [ declarative ]; + } + ) + {}; + + script = callPackage + ( + { qtSubmodule, base, tools }: + + qtSubmodule { + name = "qtscript"; + qtInputs = [ base tools ]; + patchFlags = "-p2"; # patches originally for monolithic build + patches = [ ./0003-glib-2.32.patch ]; + } + ) + {}; + + sensors = callPackage + ( + { qtSubmodule, base, declarative }: + + qtSubmodule { + name = "qtsensors"; + qtInputs = [ base declarative ]; + } + ) + {}; + + serialport = callPackage + ( + { qtSubmodule, base }: + + qtSubmodule { + name = "qtserialport"; + qtInputs = [ base ]; + patchFlags = "-p2"; # patches originally for monolithic build + patches = [ ./0009-dlopen-serialport-udev.patch ]; + } + ) + {}; + + svg = callPackage + ( + { qtSubmodule, base }: + + qtSubmodule { + name = "qtsvg"; + qtInputs = [ base ]; + } + ) + {}; + + tools = callPackage + ( + { qtSubmodule, activeqt, base, declarative, webkit }: + + qtSubmodule { + name = "qttools"; + qtInputs = [ activeqt base declarative webkit ]; + } + ) + {}; + + translations = callPackage + ( + { qtSubmodule, tools }: + + qtSubmodule { + name = "qttranslations"; + qtInputs = [ tools ]; + } + ) + {}; + + webkit = callPackage + ( + { qtSubmodule, declarative, location, multimedia, sensors + , fontconfig, gdk_pixbuf, gtk, libwebp, libxml2, libxslt + , sqlite, udev + , bison2, flex, gdb, gperf, perl, pkgconfig, python, ruby + , substituteAll + , flashplayerFix ? false + }: + + qtSubmodule { + name = "qtwebkit"; + qtInputs = [ declarative location multimedia sensors ]; + buildInputs = [ fontconfig libwebp libxml2 libxslt sqlite ]; + nativeBuildInputs = [ + bison2 flex gdb gperf perl pkgconfig python ruby + ]; + patchFlags = "-p2"; # patches originally for monolithic build + patches = + optional flashplayerFix + (substituteAll + { + src = ./0002-dlopen-webkit-nsplugin.patch; + inherit gtk gdk_pixbuf; + } + ) + ++ optional flashplayerFix + (substituteAll + { + src = ./0007-dlopen-webkit-gtk.patch; + inherit gtk; + } + ) + ++ [ + (substituteAll + { + src = ./0008-dlopen-webkit-udev.patch; + inherit udev; + } + ) + ]; + } + ) + {}; + + webkit-examples = callPackage + ( + { qtSubmodule, tools, webkit }: + + qtSubmodule { + name = "qtwebkit-examples"; + qtInputs = [ tools webkit ]; + } + ) + {}; + + websockets = callPackage + ( + { qtSubmodule, base, declarative }: + + qtSubmodule { + name = "qtwebsockets"; + qtInputs = [ base declarative ]; + } + ) + {}; + + x11extras = callPackage + ( + { qtSubmodule, base }: + + qtSubmodule { + name = "qtx11extras"; + qtInputs = [ base ]; + } + ) + {}; + + xmlpatterns = callPackage + ( + { qtSubmodule, base }: + + qtSubmodule { + name = "qtxmlpatterns"; + qtInputs = [ base ]; + } + ) + {}; + + }; + +in self diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/manifest.nix b/pkgs/development/libraries/qt-5/5.3-submodules/manifest.nix new file mode 100644 index 000000000000..72e67575b00f --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/manifest.nix @@ -0,0 +1,166 @@ +# This file is generated automatically. DO NOT EDIT! +{ mirror }: +[ + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qttranslations-opensource-src-5.3.2.tar.xz"; + sha256 = "1kf52crdg4a0p2pvm15slr2akiv5vcaj2g4f9iqqirg90pq4idi9"; + name = "qttranslations-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/b49c2shv2x09l8887x9xd78j30azaihg-qttranslations-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtconnectivity-opensource-src-5.3.2.tar.xz"; + sha256 = "0vq9v7dw8d3p2x45zzm96wvp8l1n76af3xzjs8p7bscpasw75f9f"; + name = "qtconnectivity-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/7282a9bbvk9yvbp47yp3rh708cc6a2ic-qtconnectivity-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtwinextras-opensource-src-5.3.2.tar.xz"; + sha256 = "06g5ny3vfwfvh8aa6dhgypy446bj486ks6a3hwah2mzz911ywfgn"; + name = "qtwinextras-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/iy9p8g3x5jl4ysxsm0zac8ac32x8xh45-qtwinextras-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtmultimedia-opensource-src-5.3.2.tar.xz"; + sha256 = "02qf98kv48bvpff85sz49y965if7jlfx98vxf0y78crzr5kaqpr5"; + name = "qtmultimedia-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/q7nvs99p642dwv1lzxay1hws4x5apsf8-qtmultimedia-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtquick1-opensource-src-5.3.2.tar.xz"; + sha256 = "1yvkcbgcccy4bzf6xglnbjh23l5p9785lysfxphy7r40a64jwywv"; + name = "qtquick1-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/baqff20xa58d4njisddi6s97g4pjhfki-qtquick1-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtgraphicaleffects-opensource-src-5.3.2.tar.xz"; + sha256 = "1z3zpa3lj2kx9999ycg0ixffwr3k0g5wlnizgm41ja9xl5c2d3v8"; + name = "qtgraphicaleffects-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/vkm87abgwl8hpvfamjnnn6cj5gpxzqrf-qtgraphicaleffects-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qttools-opensource-src-5.3.2.tar.xz"; + sha256 = "0glq97mivf5mwqxanbg2j4n2nky2lpcigr8p8naizbj37p3csfax"; + name = "qttools-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/l9gccd50sxj01bsz30z6ncby9s24bf3y-qttools-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtimageformats-opensource-src-5.3.2.tar.xz"; + sha256 = "1m7283m1py4h11qj0rgz8bi7f474n2bnppnvrz0fsx1pnz7cn0yk"; + name = "qtimageformats-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/ikpxw4qp50w7cs54f90njz5llv0xza2l-qtimageformats-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtsvg-opensource-src-5.3.2.tar.xz"; + sha256 = "03z33bkkaxcnpnmk4klb775c1nrp835c4bf8r0678mgf0zrw5i8y"; + name = "qtsvg-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/wkp9660hiqavzimc88birm0ww7x5yycx-qtsvg-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtwebkit-opensource-src-5.3.2.tar.xz"; + sha256 = "0nrfv57xpzgjk5420jhk2mr46mn0mjdxhg0vw4rcrqg82pnj4wg4"; + name = "qtwebkit-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/9zvifykqvxic9f10672n7lxwxkl90886-qtwebkit-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtsensors-opensource-src-5.3.2.tar.xz"; + sha256 = "1r1sjl41v8yij5b5lph7jkb2yxxaj1p8dyx1qzp0awdx5z29sdgr"; + name = "qtsensors-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/x551nn8q8cflm99v2q3gk78vhayqb0bb-qtsensors-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtmacextras-opensource-src-5.3.2.tar.xz"; + sha256 = "023q4v6drichy6s6mn3jd2lxzj2cma7y35wyzx3wa7rhvznplzlb"; + name = "qtmacextras-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/kfb05hiq7dc1djiy92nxvskshfjzyydx-qtmacextras-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtlocation-opensource-src-5.3.2.tar.xz"; + sha256 = "1mqlk09kccjxzrxxd5kv2w343kmnk8jxgfyb7adkhd8wacmhgd1p"; + name = "qtlocation-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/pcfivvnnw5j5p3gk5r3gdf4iv974l323-qtlocation-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtscript-opensource-src-5.3.2.tar.xz"; + sha256 = "1gnpsvlkqfws3rsgzlxnd63w2h9f142hfg4bsb3h4d4rihn0063f"; + name = "qtscript-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/fjsvvkw7a39v85r8mwbpvki9zps1qcms-qtscript-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtquickcontrols-opensource-src-5.3.2.tar.xz"; + sha256 = "0knryszjfhk2x7h5d9b07cil0mzqn4hlp5d8maq42w889l0hz2az"; + name = "qtquickcontrols-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/2mlnavd1zjsp1vwnvi2gwgvw6wl3fpgc-qtquickcontrols-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtactiveqt-opensource-src-5.3.2.tar.xz"; + sha256 = "07sbgibmj4m9jywdz3ilmz1s6zh57himqhc2a62k78r0xx48chz1"; + name = "qtactiveqt-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/x1zpipa51v97w16dphdbbxn1mg096g2g-qtactiveqt-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qt5-opensource-src-5.3.2.tar.xz"; + sha256 = "0xj18bbamg921y8y8pzjxs2sciyrwvvr7wzh43pjpkiacs13r08a"; + name = "qt5-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/y1gks060bhnzan3af703i00l50kbmn4z-qt5-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtxmlpatterns-opensource-src-5.3.2.tar.xz"; + sha256 = "1fqsxkbzf2iwzc2m5qccw1gan2ddbr15xjgjr9sp84cy0c3h7axc"; + name = "qtxmlpatterns-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/z4g2py09bn400hfxh9n6ssqn9xnr5g7g-qtxmlpatterns-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtdoc-opensource-src-5.3.2.tar.xz"; + sha256 = "17ahdsj8hssi1dfwxbxq11mi0lpy75c3z5mwswd13l9lnvpm6d0b"; + name = "qtdoc-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/78sa59m008x9vcpiky2i2maql6d20wa8-qtdoc-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtwebkit-examples-opensource-src-5.3.2.tar.xz"; + sha256 = "10k45492afbqffx5jab8784spp9ihclgxqn0kviy5n5pcc41l268"; + name = "qtwebkit-examples-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/39809byxmwz1wzchr6fd0b4qqd2p18mj-qtwebkit-examples-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtenginio-opensource-src-5.3.2.tar.xz"; + sha256 = "027pdbgiaf1ypcb054x1mgdn5r9ph6hr09p4h2rrsd3avib4df6m"; + name = "qtenginio-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/dmng42dg4s3sllzv27pz03gj8ys6i3a8-qtenginio-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtwebsockets-opensource-src-5.3.2.tar.xz"; + sha256 = "1hiq7bkpffjpmx4kvp4xldgq8sm7r9xyfak410g7p8hg7d0kslv0"; + name = "qtwebsockets-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/74gkwn4mqmq8if54492fk3mv0bgjjs12-qtwebsockets-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtandroidextras-opensource-src-5.3.2.tar.xz"; + sha256 = "0a66f8s4wgb9s0k5bqc98kd5qf6qypxn1qhzcwqc3qqrfv69pwmy"; + name = "qtandroidextras-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/0121pysghq6bxjx0l0isjfhjc283ncci-qtandroidextras-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtserialport-opensource-src-5.3.2.tar.xz"; + sha256 = "0jsszlv4v45wx8m9rj0398c6i534dwfcjvb7b1wyaq5y135y11m8"; + name = "qtserialport-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/7xkgwk3l565bvcmzadywjcpbydgbv688-qtserialport-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtx11extras-opensource-src-5.3.2.tar.xz"; + sha256 = "0lbjq6014nz68xhg0mzmm92pm9r45jgaw82a1c41igz0bg4jhsna"; + name = "qtx11extras-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/93rdyp4p1qz8cd7cn7gixjch23m71xqf-qtx11extras-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtdeclarative-opensource-src-5.3.2.tar.xz"; + sha256 = "10i3id206vzvxc3rwa4mykwmbxc13mf8psapq6a06b34p69q2404"; + name = "qtdeclarative-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/kf843n3710cancfcdicb17s8hxg628yr-qtdeclarative-opensource-src-5.3.2.tar.xz"; + } + { + url = "${mirror}/official_releases/qt/5.3/5.3.2/submodules/qtbase-opensource-src-5.3.2.tar.xz"; + sha256 = "1f3chbblfwyhj4qll6gd05jw7qgvcmqc12xbvpb9kbkdqid0j5ls"; + name = "qtbase-opensource-src-5.3.2.tar.xz"; + store = "/nix/store/l38yd5yrm35r812pdigxczqzv2h3k7r9-qtbase-opensource-src-5.3.2.tar.xz"; + } +] diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/manifest.sh b/pkgs/development/libraries/qt-5/5.3-submodules/manifest.sh new file mode 100755 index 000000000000..6f7135115312 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/manifest.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +if [ $# -eq 0 ]; then + + # The extra slash at the end of the URL is necessary to stop wget + # from recursing over the whole server! (No, it's not a bug.) + $(nix-build ../../../../.. -A autonix.manifest) \ + http://download.qt.io/official_releases/qt/5.3/5.3.2/submodules/ \ + -A '*.tar.xz' + +else + + $(nix-build ../../../.. -A autonix.manifest) -A '*.tar.xz' "$@" + +fi diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/qt-submodule.nix b/pkgs/development/libraries/qt-5/5.3-submodules/qt-submodule.nix new file mode 100644 index 000000000000..6f9278e98fff --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/qt-submodule.nix @@ -0,0 +1,62 @@ +{ stdenv, mkDerivation +, srcs, version +, lndir +, base +}: + +with stdenv.lib; + +args: + +mkDerivation (args // { + + name = "${args.name}-${version}"; + inherit version; + + srcs = args.srcs or [srcs."${args.name}-opensource-src"]; + + preConfigure = '' + mkdir -p "$out" + + for qtInput in ${concatStringsSep " " args.qtInputs}; do + lndir "$qtInput" "$out" + done + + # Only this package's nix-support files go in $out + rm -fr $out/nix-support + + # Override hardcoded paths in qmake + rm -f $out/bin/qmake + cp "${base}/bin/qmake" "$out/bin/qmake" + rm -f $out/bin/qt.conf + cat <$out/bin/qt.conf +[Paths] +Prefix = $out +EOF + export PATH=$out/bin:$PATH + '' + (args.preConfigure or ""); + + dontAddPrefix = args.dontAddPrefix or true; + dontFixLibtool = args.dontFixLibtool or true; + configureScript = args.configureScript or "qmake"; + + postInstall = '' + rm "$out/bin/qmake" "$out/bin/qt.conf" + ''; + + propagatedBuildInputs = args.qtInputs ++ (args.propagatedBuildInputs or []); + + nativeBuildInputs = [ lndir ] ++ (args.nativeBuildInputs or []); + + enableParallelBuilding = + args.enableParallelBuilding or true; # often fails on Hydra, as well as qt4 + + meta = args.meta or { + homepage = http://qt-project.org; + description = "A cross-platform application framework for C++"; + license = "GPL/LGPL"; + maintainers = with maintainers; [ bbenoist qknight ttuegel ]; + platforms = platforms.linux; + }; + +}) diff --git a/pkgs/development/libraries/qt-5/5.3-submodules/qtbase.nix b/pkgs/development/libraries/qt-5/5.3-submodules/qtbase.nix new file mode 100644 index 000000000000..40f29f2d3fed --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.3-submodules/qtbase.nix @@ -0,0 +1,174 @@ +{ stdenv, substituteAll +, srcs, version + +, xlibs, libX11, libxcb, libXcursor, libXext, libXrender, libXi +, xcbutil, xcbutilimage, xcbutilkeysyms, xcbutilwm, libxkbcommon +, fontconfig, freetype, openssl, dbus, glib, udev, libxml2, libxslt, pcre +, zlib, libjpeg, libpng, libtiff, sqlite, icu + +, coreutils, bison, flex, gdb, gperf, ruby +, python, perl, pkgconfig + +# optional dependencies +, cups ? null +, mysql ? null, postgresql ? null + +# options +, mesaSupported, mesa, mesa_glu +, buildDocs ? false +, buildExamples ? false +, buildTests ? false +, developerBuild ? false +, gtkStyle ? false, libgnomeui, GConf, gnome_vfs, gtk +}: + +with stdenv.lib; + +stdenv.mkDerivation { + + name = "qtbase-${version}"; + inherit version; + + srcs = with srcs; [ qt5-opensource-src qtbase-opensource-src ]; + sourceRoot = "qt-everywhere-opensource-src-${version}"; + + postUnpack = '' + mv qtbase-opensource-src-${version} ./qt-everywhere-opensource-src-${version}/qtbase + ''; + + prePatch = '' + substituteInPlace configure --replace /bin/pwd pwd + substituteInPlace qtbase/configure --replace /bin/pwd pwd + substituteInPlace qtbase/src/corelib/global/global.pri --replace /bin/ls ${coreutils}/bin/ls + substituteInPlace qtbase/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp \ + --replace /usr/share/X11/locale ${libX11}/share/X11/locale \ + --replace /usr/lib/X11/locale ${libX11}/share/X11/locale + sed -e 's@/\(usr\|opt\)/@/var/empty/@g' -i config.tests/*/*.test -i qtbase/mkspecs/*/*.conf + ''; + + patches = + optional gtkStyle + (substituteAll { + src = ./0001-dlopen-gtkstyle.patch; + # substituteAll ignores env vars starting with capital letter + gconf = GConf; + inherit gnome_vfs libgnomeui gtk; + }) + ++ [ + (substituteAll { + src = ./0004-dlopen-resolv.patch; + glibc = stdenv.cc.libc; + }) + (substituteAll { + src = ./0005-dlopen-gl.patch; + openglDriver = if mesaSupported then mesa.driverLink else "/no-such-path"; + }) + ./0006-tzdir.patch + (substituteAll { src = ./0010-dlopen-libXcursor.patch; inherit libXcursor; }) + (substituteAll { src = ./0011-dlopen-openssl.patch; inherit openssl; }) + (substituteAll { src = ./0012-dlopen-dbus.patch; dbus_libs = dbus; }) + ]; + + preConfigure = '' + export LD_LIBRARY_PATH="$PWD/qtbase/lib:$PWD/qtbase/plugins/platforms:$PWD/qttools/lib:$LD_LIBRARY_PATH" + export MAKEFLAGS=-j$NIX_BUILD_CORES + ''; + + prefixKey = "-prefix "; + + # -no-eglfs, -no-directfb, -no-linuxfb and -no-kms because of the current minimalist mesa + # TODO Remove obsolete and useless flags once the build will be totally mastered + configureFlags = '' + -verbose + -confirm-license + -opensource + + -release + -shared + -c++11 + ${optionalString developerBuild "-developer-build"} + -largefile + -accessibility + -rpath + -optimized-qmake + -strip + -reduce-relocations + -system-proxies + + -gui + -widgets + -opengl desktop + -qml-debug + -nis + -iconv + -icu + -pch + -glib + -xcb + -qpa xcb + -${optionalString (cups == null) "no-"}cups + + -no-eglfs + -no-directfb + -no-linuxfb + -no-kms + + -system-zlib + -system-libpng + -system-libjpeg + -system-xcb + -system-xkbcommon + -openssl-linked + -dbus-linked + + -system-sqlite + -${if mysql != null then "plugin" else "no"}-sql-mysql + -${if postgresql != null then "plugin" else "no"}-sql-psql + + -make libs + -make tools + -${optionalString (buildExamples == false) "no"}make examples + -${optionalString (buildTests == false) "no"}make tests + ''; + + propagatedBuildInputs = [ + xlibs.libXcomposite libX11 libxcb libXext libXrender libXi + fontconfig freetype openssl dbus.libs glib udev libxml2 libxslt pcre + zlib libjpeg libpng libtiff sqlite icu + xcbutil xcbutilimage xcbutilkeysyms xcbutilwm libxkbcommon + ] + # 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 + ++ optionals mesaSupported [ mesa mesa_glu ] + ++ optional (cups != null) cups + ++ optional (mysql != null) mysql + ++ optional (postgresql != null) postgresql; + + buildInputs = [ gdb bison flex gperf ruby ]; + + nativeBuildInputs = [ python perl pkgconfig ]; + + # freetype-2.5.4 changed signedness of some struct fields + NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare"; + + postInstall = + '' + ${optionalString buildDocs '' + make docs && make install_docs + ''} + + # Don't retain build-time dependencies like gdb and ruby. + sed '/QMAKE_DEFAULT_.*DIRS/ d' -i $out/mkspecs/qconfig.pri + ''; + + enableParallelBuilding = true; # often fails on Hydra, as well as qt4 + + meta = { + homepage = http://qt-project.org; + description = "A cross-platform application framework for C++"; + license = "GPL/LGPL"; + maintainers = with maintainers; [ bbenoist qknight ttuegel ]; + platforms = platforms.linux; + }; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5686b9298c7f..ae61e5b0aaa8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7030,6 +7030,8 @@ let bison = bison2; # error: too few arguments to function 'int yylex(... }; + qt5split = callPackage ../development/libraries/qt-5/5.3-submodules {}; + qt5Full = appendToName "full" (qt5.override { buildDocs = true; buildExamples = true;