qt54: backport Qt infrastructure changes from Qt 5.5

This commit is contained in:
Thomas Tuegel 2015-12-19 16:20:27 -06:00
parent 5958deb7d8
commit 1402c20bfd
60 changed files with 1225 additions and 1243 deletions

View File

@ -1,25 +0,0 @@
From a41c3e3a3a1ce4b373b1bbb98f3a835e9e8a0718 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
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 <pthread.h>
#elif PLATFORM(GTK)
#include <wtf/gtk/GOwnPtr.h>
-typedef struct _GMutex GMutex;
+typedef union _GMutex GMutex;
typedef struct _GCond GCond;
#endif
--
2.1.3

View File

@ -1,39 +0,0 @@
From 63af41c6eeca28c911c13b1a77afeaf860863c2d Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
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

View File

@ -1,25 +0,0 @@
From 6aaf6858bf817172a4c503158e1701c4837ee790 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
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

View File

@ -1,29 +0,0 @@
From b56e3737ca97e3de664603976989da4419297eb3 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
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

View File

@ -1,13 +0,0 @@
diff --git a/qtbase/src/dbus/qdbus_symbols.cpp b/qtbase/src/dbus/qdbus_symbols.cpp
index 6764309..33f25f9 100644
--- a/qtbase/src/dbus/qdbus_symbols.cpp
+++ b/qtbase/src/dbus/qdbus_symbols.cpp
@@ -88,7 +88,7 @@ bool qdbus_loadLibDBus()
#ifdef Q_OS_WIN
QLatin1String("dbus-1"),
#endif
- QLatin1String("libdbus-1")
+ QLatin1String("@dbus_libs@/lib/libdbus-1")
};
lib->unload();

View File

@ -1,17 +0,0 @@
Ensure Qt knows where libGL is.
Author: Bjørn Forsman <bjorn.forsman@gmail.com>
diff -uNr qt-everywhere-opensource-src-5.3.2.orig/qtbase/mkspecs/common/linux.conf qt-everywhere-opensource-src-5.3.2/qtbase/mkspecs/common/linux.conf
--- qt-everywhere-opensource-src-5.3.2.orig/qtbase/mkspecs/common/linux.conf 2014-09-11 12:48:07.000000000 +0200
+++ qt-everywhere-opensource-src-5.3.2/qtbase/mkspecs/common/linux.conf 2015-08-23 13:03:30.617473019 +0200
@@ -12,8 +12,8 @@
QMAKE_LIBDIR =
QMAKE_INCDIR_X11 =
QMAKE_LIBDIR_X11 =
-QMAKE_INCDIR_OPENGL =
-QMAKE_LIBDIR_OPENGL =
+QMAKE_INCDIR_OPENGL = @mesa@/include
+QMAKE_LIBDIR_OPENGL = @mesa@/lib
QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_EGL =

View File

@ -1,13 +0,0 @@
diff --git a/qtbase/src/network/ssl/qsslsocket_openssl.cpp b/qtbase/src/network/ssl/qsslsocket_openssl.cpp
index 8833e3f..c56d381 100644
--- a/qtbase/src/network/ssl/qsslsocket_openssl.cpp
+++ b/qtbase/src/network/ssl/qsslsocket_openssl.cpp
@@ -47,7 +47,7 @@
****************************************************************************/
//#define QSSLSOCKET_DEBUG
-//#define QT_DECRYPT_SSL_TRAFFIC
+#define QT_DECRYPT_SSL_TRAFFIC
#include "qssl_p.h"
#include "qsslsocket_openssl_p.h"

View File

@ -1,8 +1,8 @@
# Maintainer's Notes:
#
# Minor updates:
# 1. Edit ./manifest.sh to point to the updated URL.
# 2. Run ./manifest.sh.
# 1. Edit ./fetchsrcs.sh to point to the updated URL.
# 2. Run ./fetchsrcs.sh.
# 3. Build and enjoy.
#
# Major updates:
@ -11,350 +11,98 @@
# if it exists. Then follow the minor update instructions. Be sure to check if
# any new components have been added and package them as necessary.
{ autonix, fetchurl, newScope, stdenv
, bison2
, mesa_noglu
, cups
, gnome
{ pkgs
# options
, developerBuild ? false
, decryptSslTraffic ? false
}:
with autonix;
let inherit (pkgs) makeSetupHook makeWrapper stdenv; in
with stdenv.lib;
let
srcs =
mirror = "http://download.qt.io";
srcs = import ./srcs.nix { inherit mirror; inherit (pkgs) fetchurl; };
qtSubmodule = args:
let
manifest = builtins.fromJSON (builtins.readFile ./manifest.json);
mirror = "http://download.qt.io";
fetch = src: fetchurl (src // { url = "${mirror}/${src.url}"; });
mkPair = pkg: nameValuePair (builtins.parseDrvName pkg.name).name (fetch pkg.src);
pairs = map mkPair manifest;
in listToAttrs pairs;
inherit (args) name;
inherit (srcs."${args.name}") version src;
inherit (pkgs.stdenv) mkDerivation;
in mkDerivation (args // {
name = "${name}-${version}";
inherit src;
version = "5.4.2";
propagatedBuildInputs = args.qtInputs ++ (args.propagatedBuildInputs or []);
callPackage = newScope (self // { inherit qtSubmodule; });
NIX_QT_SUBMODULE = args.NIX_QT_SUBMODULE or true;
dontAddPrefix = args.dontAddPrefix or true;
dontFixLibtool = args.dontFixLibtool or true;
configureScript = args.configureScript or "qmake";
qtSubmodule = callPackage ./qt-submodule.nix {
inherit srcs version;
inherit (stdenv) mkDerivation;
};
enableParallelBuilding = args.enableParallelBuilding or true;
self =
{
meta = {
homepage = http://qt-project.org;
description = "A cross-platform application framework for C++";
license = with licenses; [ fdl13 gpl2 lgpl21 lgpl3 ];
maintainers = with maintainers; [ bbenoist qknight ttuegel ];
platforms = platforms.linux;
} // (args.meta or {});
});
activeqt = callPackage
(
{ qtSubmodule, base }:
addPackages = self: with self;
let
callPackage = self.newScope { inherit qtSubmodule srcs; };
in {
qtSubmodule {
name = "qtactiveqt";
qtInputs = [ base ];
}
)
{};
/* androidextras = not packaged */
base = callPackage ./qtbase.nix {
mesa = mesa_noglu;
cups = if stdenv.isLinux then cups else null;
qtbase = callPackage ./qtbase {
mesa = pkgs.mesa_noglu;
cups = if stdenv.isLinux then pkgs.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 decryptSslTraffic;
inherit (pkgs.gnome) libgnomeui GConf gnome_vfs;
bison = pkgs.bison2; # error: too few arguments to function 'int yylex(...
inherit developerBuild decryptSslTraffic;
};
connectivity = callPackage
(
{ qtSubmodule, base, declarative }:
/* qt3d = not packaged */
/* qtactiveqt = not packaged */
/* qtandroidextras = not packaged */
/* qtcanvas3d = not packaged */
qtconnectivity = callPackage ./qtconnectivity.nix {};
qtdeclarative = callPackage ./qtdeclarative {};
qtdoc = callPackage ./qtdoc.nix {};
qtenginio = callPackage ./qtenginio.nix {};
qtgraphicaleffects = callPackage ./qtgraphicaleffects.nix {};
qtimageformats = callPackage ./qtimageformats.nix {};
qtlocation = callPackage ./qtlocation.nix {};
/* qtmacextras = not packaged */
qtmultimedia = callPackage ./qtmultimedia.nix {
inherit (pkgs.gst_all_1) gstreamer gst-plugins-base;
};
qtquick1 = callPackage ./qtquick1 {};
qtquickcontrols = callPackage ./qtquickcontrols.nix {};
qtscript = callPackage ./qtscript {};
qtsensors = callPackage ./qtsensors.nix {};
qtserialport = callPackage ./qtserialport {};
qtsvg = callPackage ./qtsvg.nix {};
qttools = callPackage ./qttools.nix {};
qttranslations = callPackage ./qttranslations.nix {};
/* qtwayland = not packaged */
/* qtwebchannel = not packaged */
/* qtwebengine = not packaged */
qtwebkit = callPackage ./qtwebkit {};
qtwebkit-examples = callPackage ./qtwebkit-examples.nix {};
qtwebsockets = callPackage ./qtwebsockets.nix {};
/* qtwinextras = not packaged */
qtx11extras = callPackage ./qtx11extras.nix {};
qtxmlpatterns = callPackage ./qtxmlpatterns.nix {};
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 ];
}
)
{};
/* macextras = not packaged */
multimedia = callPackage
(
{ qtSubmodule, base, declarative, pkgconfig
, alsaLib, gstreamer, gst_plugins_base, libpulseaudio
}:
qtSubmodule {
name = "qtmultimedia";
qtInputs = [ base declarative ];
buildInputs = [
pkgconfig alsaLib gstreamer gst_plugins_base libpulseaudio
];
}
)
{};
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 ];
}
)
{};
/* wayland = not packaged */
/* webchannel = not packaged */
/* webengine = not packaged */
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 ];
}
)
{};
/* winextras = not packaged */
x11extras = callPackage
(
{ qtSubmodule, base }:
qtSubmodule {
name = "qtx11extras";
qtInputs = [ base ];
}
)
{};
xmlpatterns = callPackage
(
{ qtSubmodule, base }:
qtSubmodule {
name = "qtxmlpatterns";
qtInputs = [ base ];
}
)
{};
makeQtWrapper = makeSetupHook { deps = [ makeWrapper ]; } ./make-qt-wrapper.sh;
};
in self
in makeScope pkgs.newScope addPackages

View File

@ -0,0 +1,47 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p coreutils findutils gnused nix wget
set -x
# The trailing slash at the end is necessary!
RELEASE_URL="http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/"
EXTRA_WGET_ARGS='-A *.tar.xz'
mkdir tmp; cd tmp
wget -nH -r -c --no-parent $RELEASE_URL $EXTRA_WGET_ARGS
cat >../srcs.nix <<EOF
# DO NOT EDIT! This file is generated automatically by manifest.sh
{ fetchurl, mirror }:
{
EOF
workdir=$(pwd)
find . | while read src; do
if [[ -f "${src}" ]]; then
url="${src:2}"
# Sanitize file name
filename=$(basename "$src" | tr '@' '_')
nameversion="${filename%.tar.*}"
name=$(echo "$nameversion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,')
version=$(echo "$nameversion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
sha256=$(nix-hash --type sha256 --base32 --flat "$src")
cat >>../srcs.nix <<EOF
$name = {
version = "$version";
src = fetchurl {
url = "\${mirror}/$url";
sha256 = "$sha256";
name = "$filename";
};
};
EOF
fi
done
echo "}" >>../srcs.nix
cd ..

View File

@ -0,0 +1,42 @@
addQtDependency() {
addToSearchPath QT_PLUGIN_PATH "$1/lib/qt5/plugins"
addToSearchPath QML_IMPORT_PATH "$1/lib/qt5/imports"
addToSearchPath QML2_IMPORT_PATH "$1/lib/qt5/qml"
addToSearchPath XDG_CONFIG_DIRS "$1/etc/xdg"
addToSearchPath XDG_DATA_DIRS "$1/share"
}
wrapQtProgram() {
local prog="$1"
shift
wrapProgram "$prog" \
--prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \
--prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \
--prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \
--prefix XDG_CONFIG_DIRS : "$XDG_CONFIG_DIRS" \
--prefix XDG_DATA_DIRS : "$XDG_DATA_DIRS" \
"$@"
}
makeQtWrapper() {
local old="$1"
local new="$2"
shift
shift
makeWrapper "$old" "$new" \
--prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \
--prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \
--prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \
--prefix XDG_CONFIG_DIRS : "$XDG_CONFIG_DIRS" \
--prefix XDG_DATA_DIRS : "$XDG_DATA_DIRS" \
"$@"
}
# cannot use addToSearchPath because these directories may not exist yet
export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}$out/lib/qt5/plugins"
export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}$out/lib/qt5/imports"
export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}$out/lib/qt5/qml"
export XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}$out/etc/xdg"
export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}$out/share"
envHooks+=(addQtDependency)

View File

@ -1,301 +0,0 @@
[
{
"name": "qtbase-opensource-src-5.4.2",
"store": "/nix/store/60xy2xnsl5kwraqkgh8d950nj1pk3kmi-qtbase-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtbase-opensource-src-5.4.2.tar.xz",
"sha256": "0x2szpjjvsrpcqw0dd3gsim7b1jv9p716pnllzjbia5mp0hggi4z",
"name": "qtbase-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtenginio-opensource-src-5.4.2",
"store": "/nix/store/4iprnq6sm0b1pnxmxb5krip7kk40xqmr-qtenginio-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtenginio-opensource-src-5.4.2.tar.xz",
"sha256": "082i3fapjw6xs0jkz7x529dn3pb6w1pfli3cjrgvggff86gwlgwn",
"name": "qtenginio-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtserialport-opensource-src-5.4.2",
"store": "/nix/store/l9k1v23ddnhjch5b2p3l28xbqkhz63yl-qtserialport-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtserialport-opensource-src-5.4.2.tar.xz",
"sha256": "1h6p5rb0ldxgzd4md3n79gy0j9blhj736670xqjd9vlvh1743kck",
"name": "qtserialport-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtscript-opensource-src-5.4.2",
"store": "/nix/store/n4ixnakw3fiflyimshkp43h7ijlpiif6-qtscript-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtscript-opensource-src-5.4.2.tar.xz",
"sha256": "0izsmy0cr8iii78r10ndkidyljxqd2k9g03f5xb9nxacvr2f8hp0",
"name": "qtscript-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtwebchannel-opensource-src-5.4.2",
"store": "/nix/store/qbkqkn4ck0fqbndl9fzp7iaz6c475xq8-qtwebchannel-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtwebchannel-opensource-src-5.4.2.tar.xz",
"sha256": "0vy1zjbghfa1wirxd8fd2n2n8yryykzr09913qm2nlfbcxdsgqsn",
"name": "qtwebchannel-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtwinextras-opensource-src-5.4.2",
"store": "/nix/store/9kmig3lg8d8s5r1jl3xj5q3jrkp3p8sx-qtwinextras-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtwinextras-opensource-src-5.4.2.tar.xz",
"sha256": "0sgybvr1y2xsddlqc95ninxj3rfmd4gv7a8f7rqcxdynjan5gij0",
"name": "qtwinextras-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtwebsockets-opensource-src-5.4.2",
"store": "/nix/store/zk4s5pgp3mh6xdq6z3svi305vn0pli27-qtwebsockets-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtwebsockets-opensource-src-5.4.2.tar.xz",
"sha256": "0lv1la8333qnirxmscs42xnnra0xry1gjbhi3bxrf1hrfs2im9j4",
"name": "qtwebsockets-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtmultimedia-opensource-src-5.4.2",
"store": "/nix/store/n8wpy6b8jw1rf51z1qhxbbym7j8rr8ay-qtmultimedia-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtmultimedia-opensource-src-5.4.2.tar.xz",
"sha256": "0h29cs8ajnjarhjx1aczdnxqwvg6pqs9s8w28hw488s149wqqrnj",
"name": "qtmultimedia-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtgraphicaleffects-opensource-src-5.4.2",
"store": "/nix/store/2q2vk530mf32zzd1v8bpax8iixviw6q5-qtgraphicaleffects-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtgraphicaleffects-opensource-src-5.4.2.tar.xz",
"sha256": "02p8xm5ajicjam30ry3g1lm2p4nja2q0sls8dzimqrxhw5xlg3xs",
"name": "qtgraphicaleffects-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtxmlpatterns-opensource-src-5.4.2",
"store": "/nix/store/3fqgpa668hb1xmwjw056cw58qzb3r0g4-qtxmlpatterns-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtxmlpatterns-opensource-src-5.4.2.tar.xz",
"sha256": "0ar7znqp1i02ha5ngy2kzk3hlgkafjbn2xa8j2k78gzmwsmdhzxa",
"name": "qtxmlpatterns-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qttranslations-opensource-src-5.4.2",
"store": "/nix/store/mg9b5z2nznzxrz501hm06b7l27jjwaca-qttranslations-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qttranslations-opensource-src-5.4.2.tar.xz",
"sha256": "0b4l69c16z8gjd4mq75zz3lj2gxarr9wyk0vk60jg1mi62vxvdls",
"name": "qttranslations-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtdeclarative-opensource-src-5.4.2",
"store": "/nix/store/bjmv4fgphx9bggzcwy4lcdas9phbwjsg-qtdeclarative-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtdeclarative-opensource-src-5.4.2.tar.xz",
"sha256": "1bj1wwms6lpj8s70y8by3j0hjsw6g9v8m6fybx68krzzizbj2c5p",
"name": "qtdeclarative-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtwebkit-opensource-src-5.4.2",
"store": "/nix/store/pfhq8ask8jhzdh2x882d014b10ddywma-qtwebkit-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtwebkit-opensource-src-5.4.2.tar.xz",
"sha256": "0vffbpiczag2n2hp5gc0nii8n7vkidr8f8pp8a47px0183hl6hiy",
"name": "qtwebkit-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtquick1-opensource-src-5.4.2",
"store": "/nix/store/n807cxddkvhbzw3ciqs29zc5mw47z2qs-qtquick1-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtquick1-opensource-src-5.4.2.tar.xz",
"sha256": "0178z15a31fw3l6933fwxs7sk0csifpwckydp3rqnn3fg5f2fwvp",
"name": "qtquick1-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtquickcontrols-opensource-src-5.4.2",
"store": "/nix/store/gq8afk8zr2vrrsfmp4caqv02209qk9xb-qtquickcontrols-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtquickcontrols-opensource-src-5.4.2.tar.xz",
"sha256": "137z3c3drxlvkdfc7zgcl0xqmavw0ladzqy0i3bq51h756qdc877",
"name": "qtquickcontrols-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtimageformats-opensource-src-5.4.2",
"store": "/nix/store/cmpx0338z1j0wzk6scfpay5k10023d46-qtimageformats-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtimageformats-opensource-src-5.4.2.tar.xz",
"sha256": "1nny6j9pm5ri3n1vwl5lrfrdz0fl81rx127wa49rkg2rjai2aawb",
"name": "qtimageformats-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtdoc-opensource-src-5.4.2",
"store": "/nix/store/jv4wgs6pz9xqmin9m4q4mifr2vfcjn3h-qtdoc-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtdoc-opensource-src-5.4.2.tar.xz",
"sha256": "15lamv6jvd7v33ldpcrazcdksv6qibdcgh4ncbyh774k8avgrlh8",
"name": "qtdoc-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtwayland-opensource-src-5.4.2",
"store": "/nix/store/qa3yi9lyx2dm4wqzb3qzvzba1sgnj74z-qtwayland-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtwayland-opensource-src-5.4.2.tar.xz",
"sha256": "14pmpkfq70plw07igxjaiji4vnjg5kg7izlb0wwym1lisg7bwkg0",
"name": "qtwayland-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtmacextras-opensource-src-5.4.2",
"store": "/nix/store/wdq1z3bzr9n11yln8avx10sgzgyvp8cl-qtmacextras-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtmacextras-opensource-src-5.4.2.tar.xz",
"sha256": "0h0p3s0rvd3g9rgr4hwcggdbsav2g30vijqwmdxgxd8c00yply80",
"name": "qtmacextras-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtactiveqt-opensource-src-5.4.2",
"store": "/nix/store/0ik7vc3zwdjvrp4fpyqf1zpyqdxvvqvq-qtactiveqt-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtactiveqt-opensource-src-5.4.2.tar.xz",
"sha256": "014kwficqydciwdm1yw88yms81qm8pmi6xfhhfpbc9k85pc6jlla",
"name": "qtactiveqt-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtlocation-opensource-src-5.4.2",
"store": "/nix/store/sa4dawsw2wv45ld3afbz9nfc64qkyx1s-qtlocation-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtlocation-opensource-src-5.4.2.tar.xz",
"sha256": "1v43hl2zzi90vaw11y8dvsksrjn0r2v0br7pw6njl8lqadpg4jnw",
"name": "qtlocation-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtconnectivity-opensource-src-5.4.2",
"store": "/nix/store/v2aiscvf582azyzg696rglway56l7xl2-qtconnectivity-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtconnectivity-opensource-src-5.4.2.tar.xz",
"sha256": "1nj68bzgm3r1gg171kj0acnifzb3jx0m5pf4f81xb7zl4hfxasrs",
"name": "qtconnectivity-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtx11extras-opensource-src-5.4.2",
"store": "/nix/store/nz62qld9h96z5a0b7fg52fsh5d6q0kqw-qtx11extras-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtx11extras-opensource-src-5.4.2.tar.xz",
"sha256": "0jgyywjxavfpiz8202g3s0g9izfl185mmak4fs9h80w1i3gn5zzn",
"name": "qtx11extras-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qttools-opensource-src-5.4.2",
"store": "/nix/store/i8n6xrhalg3z4i0min4w79rq9h9hch0x-qttools-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qttools-opensource-src-5.4.2.tar.xz",
"sha256": "1d5nx01r7wxhdg9f1i9xhsvsbwgaz3yv516s068riy970bhdgwzd",
"name": "qttools-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtsensors-opensource-src-5.4.2",
"store": "/nix/store/0ar28gp8klqxynjnc1r4kj9x7g8cknk2-qtsensors-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtsensors-opensource-src-5.4.2.tar.xz",
"sha256": "1yawvjbdymgw8af7ir9zcin89xxck9dm2l6hnc43lwrky0frcvcf",
"name": "qtsensors-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtwebengine-opensource-src-5.4.2",
"store": "/nix/store/ikr8cc3bn62jlv9afpzhxvqs5qhsc2yc-qtwebengine-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtwebengine-opensource-src-5.4.2.tar.xz",
"sha256": "06cyl733prakniqrn8sd807lclk5im2vmysjdcijry2mcyah2ih8",
"name": "qtwebengine-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtsvg-opensource-src-5.4.2",
"store": "/nix/store/0llm31zpiaqig940a8dsp1dk2npxsnjc-qtsvg-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtsvg-opensource-src-5.4.2.tar.xz",
"sha256": "1dsyncp154xvb7d82nmnfjm0ngymnhqmliq58ljwxsjmpjlncakz",
"name": "qtsvg-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qt5-opensource-src-5.4.2",
"store": "/nix/store/0jrx1clg8vqid9b2n9z8f0xbwjm0yynr-qt5-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qt5-opensource-src-5.4.2.tar.xz",
"sha256": "17a0pybr4bpyv9pj7cr5hl4g31biv89bjr8zql723h0b12ql1w44",
"name": "qt5-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtwebkit-examples-opensource-src-5.4.2",
"store": "/nix/store/6pmmi9bjbdxkbw2xkkc1srk5ambnjcxv-qtwebkit-examples-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtwebkit-examples-opensource-src-5.4.2.tar.xz",
"sha256": "0pm9ik1j09jfb5xflc16449nff2xsfyfms7vxlcdjg4dhcqfmll8",
"name": "qtwebkit-examples-opensource-src-5.4.2.tar.xz"
}
}
,
{
"name": "qtandroidextras-opensource-src-5.4.2",
"store": "/nix/store/grrsklibvplaj5pdwjp2zirxmqnq10hf-qtandroidextras-opensource-src-5.4.2.tar.xz",
"src": {
"url": "official_releases/qt/5.4/5.4.2/submodules/qtandroidextras-opensource-src-5.4.2.tar.xz",
"sha256": "0krfm0wg26x7575p8isswdhrkb0jxyp169grwklil7mfw8yg3xhx",
"name": "qtandroidextras-opensource-src-5.4.2.tar.xz"
}
}
]

View File

@ -1,9 +0,0 @@
#!/bin/sh
set -x
# 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 ../../../../.. --no-out-link -A autonix.manifest) \
http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/ \
-A '*.tar.xz'

View File

@ -1,54 +0,0 @@
{ 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"];
qtSubmodule = args.qtSubmodule or true;
dontAddPrefix = args.dontAddPrefix or true;
dontFixLibtool = args.dontFixLibtool or true;
configureScript = args.configureScript or "qmake";
postInstall = ''
rm "$out/bin/qmake" "$out/bin/qt.conf"
cat "$out/nix-support/qt-inputs" | while read file; do
if [[ -h "$out/$file" ]]; then
rm "$out/$file"
fi
done
cat "$out/nix-support/qt-inputs" | while read file; do
if [[ -d "$out/$file" ]]; then
rmdir --ignore-fail-on-non-empty -p "$out/$file"
fi
done
rm "$out/nix-support/qt-inputs"
'';
propagatedBuildInputs = args.qtInputs ++ (args.propagatedBuildInputs 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;
};
})

View File

@ -1,211 +0,0 @@
{ stdenv, substituteAll
, srcs, version
, xorg, 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, lndir, 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
, decryptSslTraffic ? false
}:
with stdenv.lib;
let system-x86_64 = elem stdenv.system platforms.x86_64; in
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; })
./0013-xdg_config_dirs.patch
] ++ optional mesaSupported
(substituteAll { src = ./0014-mkspecs-libgl.patch; inherit mesa; })
++ (optional decryptSslTraffic ./0100-ssl.patch);
preConfigure = ''
export LD_LIBRARY_PATH="$PWD/qtbase/lib:$PWD/qtbase/plugins/platforms:$PWD/qttools/lib:$LD_LIBRARY_PATH"
export MAKEFLAGS=-j$NIX_BUILD_CORES
sed -i 's/PATHS.*NO_DEFAULT_PATH//' "qtbase/src/corelib/Qt5Config.cmake.in"
sed -i 's/PATHS.*NO_DEFAULT_PATH//' "qtbase/src/corelib/Qt5CoreMacros.cmake"
sed -i 's/NO_DEFAULT_PATH//' "qtbase/src/gui/Qt5GuiConfigExtras.cmake.in"
sed -i 's/PATHS.*NO_DEFAULT_PATH//' "qtbase/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in"
export configureFlags+="-plugindir $out/lib/qt5/plugins -importdir $out/lib/qt5/imports -qmldir $out/lib/qt5/qml"
export configureFlags+=" -docdir $out/share/doc/qt5"
'';
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
-pkg-config
-gui
-widgets
-opengl desktop
-qml-debug
-nis
-iconv
-icu
-pch
-glib
-xcb
-qpa xcb
-${optionalString (cups == null) "no-"}cups
-${optionalString (!gtkStyle) "no-"}gtkstyle
-no-eglfs
-no-directfb
-no-linuxfb
-no-kms
${optionalString (!system-x86_64) "-no-sse2"}
-no-sse3
-no-ssse3
-no-sse4.1
-no-sse4.2
-no-avx
-no-avx2
-no-mips_dsp
-no-mips_dspr2
-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
'';
# PostgreSQL autodetection fails sporadically because Qt omits the "-lpq" flag
# if dependency paths contain the string "pq", which can occur in the hash.
# To prevent these failures, we need to override PostgreSQL detection.
PSQL_LIBS = optionalString (postgresql != null) "-L${postgresql}/lib -lpq";
propagatedBuildInputs = [
xorg.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.lib
++ optional (postgresql != null) postgresql
++ optionals gtkStyle [gnome_vfs libgnomeui gtk GConf];
buildInputs =
[ bison flex gperf ruby ]
++ optional developerBuild gdb;
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
'';
inherit lndir;
setupHook = ./setup-hook.sh;
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;
};
}

View File

@ -0,0 +1,16 @@
Index: qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
===================================================================
--- qt-everywhere-opensource-src-5.5.1.orig/qtbase/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
+++ qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
@@ -68,10 +68,7 @@ void TableGenerator::initPossibleLocatio
// the QTCOMPOSE environment variable
if (qEnvironmentVariableIsSet("QTCOMPOSE"))
m_possibleLocations.append(QString::fromLocal8Bit(qgetenv("QTCOMPOSE")));
- m_possibleLocations.append(QStringLiteral("/usr/share/X11/locale"));
- m_possibleLocations.append(QStringLiteral("/usr/local/share/X11/locale"));
- m_possibleLocations.append(QStringLiteral("/usr/lib/X11/locale"));
- m_possibleLocations.append(QStringLiteral("/usr/local/lib/X11/locale"));
+ m_possibleLocations.append(QStringLiteral("${libX11}/share/X11/locale"));
m_possibleLocations.append(QStringLiteral(X11_PREFIX "/share/X11/locale"));
m_possibleLocations.append(QStringLiteral(X11_PREFIX "/lib/X11/locale"));
}

View File

@ -0,0 +1,13 @@
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/network/ssl/qsslsocket_openssl.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/network/ssl/qsslsocket_openssl.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/network/ssl/qsslsocket_openssl.cpp
@@ -47,7 +47,7 @@
****************************************************************************/
//#define QSSLSOCKET_DEBUG
-//#define QT_DECRYPT_SSL_TRAFFIC
+#define QT_DECRYPT_SSL_TRAFFIC
#include "qssl_p.h"
#include "qsslsocket_openssl_p.h"

View File

@ -0,0 +1,224 @@
{ stdenv, lib, fetchurl, copyPathsToStore, makeWrapper
, srcs
, 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, lndir, 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
, decryptSslTraffic ? false
}:
let
inherit (srcs.qt5) version;
system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
in
stdenv.mkDerivation {
name = "qtbase-${version}";
inherit version;
srcs = with srcs; [ qt5.src qtbase.src ];
sourceRoot = "qt-everywhere-opensource-src-${version}";
postUnpack = ''
mv qtbase-opensource-src-${version} ./qt-everywhere-opensource-src-${version}/qtbase
'';
patches =
copyPathsToStore (lib.readPathsFromFile ./. ./series)
++ lib.optional gtkStyle ./dlopen-gtkstyle.patch
++ lib.optional decryptSslTraffic ./decrypt-ssl-traffic.patch
++ lib.optional mesaSupported [ ./dlopen-gl.patch ./mkspecs-libgl.patch ];
postPatch =
''
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
sed -e 's@/\(usr\|opt\)/@/var/empty/@g' -i config.tests/*/*.test -i qtbase/mkspecs/*/*.conf
sed -i 's/PATHS.*NO_DEFAULT_PATH//' "qtbase/src/corelib/Qt5Config.cmake.in"
sed -i 's/PATHS.*NO_DEFAULT_PATH//' "qtbase/src/corelib/Qt5CoreMacros.cmake"
sed -i 's/NO_DEFAULT_PATH//' "qtbase/src/gui/Qt5GuiConfigExtras.cmake.in"
sed -i 's/PATHS.*NO_DEFAULT_PATH//' "qtbase/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in"
substituteInPlace qtbase/src/network/kernel/qdnslookup_unix.cpp \
--replace "@glibc@" "${stdenv.cc.libc}"
substituteInPlace qtbase/src/network/kernel/qhostinfo_unix.cpp \
--replace "@glibc@" "${stdenv.cc.libc}"
substituteInPlace qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp \
--replace "@libXcursor@" "${libXcursor}"
substituteInPlace qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp \
--replace "@openssl@" "${openssl}"
substituteInPlace qtbase/src/dbus/qdbus_symbols.cpp \
--replace "@dbus_libs@" "${dbus}"
substituteInPlace \
qtbase/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp \
--replace "@libX11@" "${libX11}"
''
+ lib.optionalString gtkStyle ''
substituteInPlace qtbase/src/widgets/styles/qgtk2painter.cpp --replace "@gtk@" "${gtk}"
substituteInPlace qtbase/src/widgets/styles/qgtkstyle_p.cpp \
--replace "@gtk@" "${gtk}" \
--replace "@gnome_vfs@" "${gnome_vfs}" \
--replace "@libgnomeui@" "${libgnomeui}" \
--replace "@gconf@" "${GConf}"
''
+ lib.optionalString mesaSupported ''
substituteInPlace \
qtbase/src/plugins/platforms/xcb/qglxintegration.cpp \
--replace "@mesa@" "${mesa}"
substituteInPlace qtbase/mkspecs/common/linux.conf --replace "@mesa@" "${mesa}"
'';
preConfigure = ''
export LD_LIBRARY_PATH="$PWD/qtbase/lib:$PWD/qtbase/plugins/platforms:$LD_LIBRARY_PATH"
export MAKEFLAGS=-j$NIX_BUILD_CORES
export configureFlags+="-plugindir $out/lib/qt5/plugins -importdir $out/lib/qt5/imports -qmldir $out/lib/qt5/qml"
export configureFlags+=" -docdir $out/share/doc/qt5"
'';
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
${lib.optionalString developerBuild "-developer-build"}
-largefile
-accessibility
-rpath
-optimized-qmake
-strip
-reduce-relocations
-system-proxies
-pkg-config
-gui
-widgets
-opengl desktop
-qml-debug
-nis
-iconv
-icu
-pch
-glib
-xcb
-qpa xcb
-${lib.optionalString (cups == null) "no-"}cups
-${lib.optionalString (!gtkStyle) "no-"}gtkstyle
-no-eglfs
-no-directfb
-no-linuxfb
-no-kms
${lib.optionalString (!system-x86_64) "-no-sse2"}
-no-sse3
-no-ssse3
-no-sse4.1
-no-sse4.2
-no-avx
-no-avx2
-no-mips_dsp
-no-mips_dspr2
-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
-${lib.optionalString (buildExamples == false) "no"}make examples
-${lib.optionalString (buildTests == false) "no"}make tests
'';
# PostgreSQL autodetection fails sporadically because Qt omits the "-lpq" flag
# if dependency paths contain the string "pq", which can occur in the hash.
# To prevent these failures, we need to override PostgreSQL detection.
PSQL_LIBS = lib.optionalString (postgresql != null) "-L${postgresql}/lib -lpq";
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
++ lib.optionals mesaSupported [ mesa mesa_glu ]
++ lib.optional (cups != null) cups
++ lib.optional (mysql != null) mysql.lib
++ lib.optional (postgresql != null) postgresql
++ lib.optionals gtkStyle [gnome_vfs libgnomeui gtk GConf];
buildInputs =
[ bison flex gperf ruby ]
++ lib.optional developerBuild gdb;
nativeBuildInputs = [ python perl pkgconfig ];
propagatedNativeBuildInputs = [ makeWrapper ];
# freetype-2.5.4 changed signedness of some struct fields
NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare";
postInstall =
''
# Don't retain build-time dependencies like gdb and ruby.
sed '/QMAKE_DEFAULT_.*DIRS/ d' -i $out/mkspecs/qconfig.pri
''
+ lib.optionalString buildDocs ''
make docs && make install_docs
'';
inherit lndir;
setupHook = ./setup-hook.sh;
enableParallelBuilding = true;
meta = with lib; {
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;
};
}

View File

@ -0,0 +1,13 @@
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/dbus/qdbus_symbols.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/dbus/qdbus_symbols.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/dbus/qdbus_symbols.cpp
@@ -88,7 +88,7 @@ bool qdbus_loadLibDBus()
#ifdef Q_OS_WIN
QLatin1String("dbus-1"),
#endif
- QLatin1String("libdbus-1")
+ QLatin1String("@dbus_libs@/lib/libdbus-1")
};
lib->unload();

View File

@ -0,0 +1,17 @@
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp
@@ -560,7 +560,12 @@ void (*QGLXContext::getProcAddress(const
{
extern const QString qt_gl_library_name();
// QLibrary lib(qt_gl_library_name());
+ // Check system library paths first
QLibrary lib(QLatin1String("GL"));
+ if (!lib.load()) {
+ // Fallback to Mesa driver
+ lib.setFileName(QLatin1String("@mesa@/lib/libGL"));
+ }
glXGetProcAddressARB = (qt_glXGetProcAddressARB) lib.resolve("glXGetProcAddressARB");
}
}

View File

@ -1,18 +1,8 @@
From 35d5995a58c86a6addbf0aaf0d1be64d39182872 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
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()
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/widgets/styles/qgtk2painter.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/widgets/styles/qgtk2painter.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/widgets/styles/qgtk2painter.cpp
@@ -96,7 +96,7 @@ static void initGtk()
static bool initialized = false;
if (!initialized) {
// enforce the "0" suffix, so we'll open libgtk-x11-2.0.so.0
@ -21,11 +11,11 @@ index 7b9bd97..075947a 100644
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)
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/widgets/styles/qgtkstyle_p.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/widgets/styles/qgtkstyle_p.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/widgets/styles/qgtkstyle_p.cpp
@@ -326,7 +326,7 @@ void QGtkStylePrivate::gtkWidgetSetFocus
void QGtkStylePrivate::resolveGtk() const
{
// enforce the "0" suffix, so we'll open libgtk-x11-2.0.so.0
@ -34,7 +24,7 @@ index 2c64225..3343d32 100644
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
@@ -424,8 +424,8 @@ void QGtkStylePrivate::resolveGtk() cons
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");
@ -45,7 +35,7 @@ index 2c64225..3343d32 100644
}
/* \internal
@@ -601,9 +601,9 @@ void QGtkStylePrivate::cleanupGtkWidgets()
@@ -593,9 +593,9 @@ void QGtkStylePrivate::cleanupGtkWidgets
static bool resolveGConf()
{
if (!QGtkStylePrivate::gconf_client_get_default) {
@ -58,6 +48,3 @@ index 2c64225..3343d32 100644
}
return (QGtkStylePrivate::gconf_client_get_default !=0);
}
--
2.1.3

View File

@ -0,0 +1,17 @@
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp
@@ -297,10 +297,10 @@ QXcbCursor::QXcbCursor(QXcbConnection *c
#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) {

View File

@ -1,8 +1,8 @@
diff --git a/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp b/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
index c1fea93..bc1c0f0 100644
--- a/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ b/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -611,8 +611,8 @@ static QPair<QLibrary*, QLibrary*> loadOpenSsl()
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -611,8 +611,8 @@ static QPair<QLibrary*, QLibrary*> loadO
#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.<SHLIB_VERSION_NUMBER>
@ -13,7 +13,7 @@ index c1fea93..bc1c0f0 100644
if (libcrypto->load() && libssl->load()) {
// libssl.so.<SHLIB_VERSION_NUMBER> and libcrypto.so.<SHLIB_VERSION_NUMBER> found
return pair;
@@ -629,8 +629,8 @@ static QPair<QLibrary*, QLibrary*> loadOpenSsl()
@@ -629,8 +629,8 @@ static QPair<QLibrary*, QLibrary*> loadO
// OS X's /usr/lib/libssl.dylib, /usr/lib/libcrypto.dylib will be picked up in the third
// attempt, _after_ <bundle>/Contents/Frameworks has been searched.
// iOS does not ship a system libssl.dylib, libcrypto.dylib in the first place.

View File

@ -0,0 +1,26 @@
Index: qt-everywhere-opensource-src-5.5.1/qtbase/src/network/kernel/qdnslookup_unix.cpp
===================================================================
--- qt-everywhere-opensource-src-5.5.1.orig/qtbase/src/network/kernel/qdnslookup_unix.cpp
+++ qt-everywhere-opensource-src-5.5.1/qtbase/src/network/kernel/qdnslookup_unix.cpp
@@ -79,7 +79,7 @@ static void resolveLibrary()
if (!lib.load())
#endif
{
- lib.setFileName(QLatin1String("resolv"));
+ lib.setFileName(QLatin1String("@glibc/lib/resolv"));
if (!lib.load())
return;
}
Index: qt-everywhere-opensource-src-5.5.1/qtbase/src/network/kernel/qhostinfo_unix.cpp
===================================================================
--- qt-everywhere-opensource-src-5.5.1.orig/qtbase/src/network/kernel/qhostinfo_unix.cpp
+++ qt-everywhere-opensource-src-5.5.1/qtbase/src/network/kernel/qhostinfo_unix.cpp
@@ -95,7 +95,7 @@ static void resolveLibrary()
if (!lib.load())
#endif
{
- lib.setFileName(QLatin1String("resolv"));
+ lib.setFileName(QLatin1String("@glibc@/lib/libresolv"));
if (!lib.load())
return;
}

View File

@ -0,0 +1,15 @@
Index: qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/common/linux.conf
===================================================================
--- qt-everywhere-opensource-src-5.5.1.orig/qtbase/mkspecs/common/linux.conf
+++ qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/common/linux.conf
@@ -12,8 +12,8 @@ QMAKE_INCDIR =
QMAKE_LIBDIR =
QMAKE_INCDIR_X11 =
QMAKE_LIBDIR_X11 =
-QMAKE_INCDIR_OPENGL =
-QMAKE_LIBDIR_OPENGL =
+QMAKE_INCDIR_OPENGL = @mesa@/include
+QMAKE_LIBDIR_OPENGL = @mesa@/lib
QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_EGL =

View File

@ -0,0 +1,26 @@
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/kernel/qcoreapplication.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/corelib/kernel/qcoreapplication.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/kernel/qcoreapplication.cpp
@@ -2442,6 +2442,21 @@ QStringList QCoreApplication::libraryPat
}
}
}
+
+ // Add library paths derived from NIX_PROFILES.
+ const QByteArray nixProfilesEnv = qgetenv("NIX_PROFILES");
+ if (!nixProfilesEnv.isEmpty()) {
+ QLatin1Char pathSep(' ');
+ QStringList paths = QFile::decodeName(nixProfilesEnv).split(pathSep, QString::SkipEmptyParts);
+ for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
+ it->append("/lib/qt5/plugins");
+ QString canonicalPath = QDir(*it).canonicalPath();
+ if (!canonicalPath.isEmpty()
+ && !app_libpaths->contains(canonicalPath)) {
+ app_libpaths->append(canonicalPath);
+ }
+ }
+ }
}
return *(coreappdata()->app_libpaths);
}

View File

@ -0,0 +1,8 @@
dlopen-resolv.patch
tzdir.patch
dlopen-libXcursor.patch
dlopen-openssl.patch
dlopen-dbus.patch
xdg-config-dirs.patch
nix-profiles-library-paths.patch
compose-search-path.patch

View File

@ -0,0 +1,100 @@
if [[ -z "$QMAKE" ]]; then
linkDependencyDir() {
@lndir@/bin/lndir -silent "$1/$2" "$qtOut/$2"
if [[ -n "$NIX_QT_SUBMODULE" ]]; then
find "$1/$2" -printf "$2/%P\n" >> "$out/nix-support/qt-inputs"
fi
}
addQtModule() {
if [[ -d "$1/mkspecs" ]]; then
# $1 is a Qt module
linkDependencyDir "$1" mkspecs
for dir in bin include lib share; do
if [[ -d "$1/$dir" ]]; then
linkDependencyDir "$1" "$dir"
fi
done
fi
}
propagateRuntimeDeps() {
local propagated
for dir in "etc/xdg" "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports" "share"; do
if [[ -d "$1/$dir" ]]; then
propagated=
for pkg in $propagatedBuildInputs; do
if [[ "z$pkg" == "z$1" ]]; then
propagated=1
break
fi
done
if [[ -z $propagated ]]; then
propagatedBuildInputs="$propagatedBuildInputs $1"
fi
break
fi
done
}
rmQtModules() {
cat "$out/nix-support/qt-inputs" | while read file; do
if [[ -h "$out/$file" ]]; then
rm "$out/$file"
fi
done
cat "$out/nix-support/qt-inputs" | while read file; do
if [[ -d "$out/$file" ]]; then
rmdir --ignore-fail-on-non-empty -p "$out/$file"
fi
done
rm "$out/nix-support/qt-inputs"
}
rmQMake() {
rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf"
}
setQMakePath() {
export PATH="$qtOut/bin${PATH:+:}$PATH"
}
qtOut=""
if [[ -z "$NIX_QT_SUBMODULE" ]]; then
qtOut=`mktemp -d`
else
qtOut=$out
fi
mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" "$qtOut/nix-support" "$qtOut/lib" "$qtOut/share"
cp "@out@/bin/qmake" "$qtOut/bin"
cat >"$qtOut/bin/qt.conf" <<EOF
[Paths]
Prefix = $qtOut
Plugins = lib/qt5/plugins
Imports = lib/qt5/imports
Qml2Imports = lib/qt5/qml
Documentation = share/doc/qt5
EOF
export QMAKE="$qtOut/bin/qmake"
envHooks+=(addQtModule propagateRuntimeDeps)
preConfigurePhases+=(setQMakePath)
if [[ -n "$NIX_QT_SUBMODULE" ]]; then
preFixupPhases+=(rmQtModules)
postPhases+=(rmQMake)
fi
fi
if [[ -z "$NIX_QT_PIC" ]]; then
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC"
export NIX_QT_PIC=1
fi

View File

@ -1,17 +1,8 @@
From 775fd74351faaabd45f6751618b28e2b05812d05 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
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<QByteArray, QTzTimeZone> QTzTimeZoneHash;
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp
@@ -61,7 +61,10 @@ typedef QHash<QByteArray, QTzTimeZone> Q
// Parse zone.tab table, assume lists all installed zones, if not will need to read directories
static QTzTimeZoneHash loadTzTimeZones()
{
@ -23,7 +14,7 @@ index b4ea91e..a56a245 100644
if (!QFile::exists(path))
path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
@@ -559,12 +562,18 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId)
@@ -552,12 +555,18 @@ void QTzTimeZonePrivate::init(const QByt
if (!tzif.open(QIODevice::ReadOnly))
return;
} else {
@ -47,6 +38,3 @@ index b4ea91e..a56a245 100644
}
}
--
2.1.3

View File

@ -1,8 +1,8 @@
diff --git a/qsettings.cpp b/qsettings.cpp
index 35b3ed4..210dfeb 100644
--- a/qsettings.cpp
+++ b/qtbase/src/corelib/io/qsettings.cpp
@@ -1174,6 +1174,24 @@ QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format format,
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/io/qsettings.cpp
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/corelib/io/qsettings.cpp
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/io/qsettings.cpp
@@ -1128,6 +1128,24 @@ QConfFileSettingsPrivate::QConfFileSetti
if (!application.isEmpty())
confFiles[F_System | F_Application].reset(QConfFile::fromName(systemPath + appFile, false));
confFiles[F_System | F_Organization].reset(QConfFile::fromName(systemPath + orgFile, false));
@ -27,11 +27,11 @@ index 35b3ed4..210dfeb 100644
#else
QString confName = getPath(format, QSettings::UserScope) + org;
if (!application.isEmpty())
diff --git a/qsettings_p.h b/qsettings_p.h
index a28b583..b2a240d 100644
--- a/qsettings_p.h
+++ b/qtbase/src/corelib/io/qsettings_p.h
@@ -244,7 +244,7 @@ public:
Index: qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/io/qsettings_p.h
===================================================================
--- qt-everywhere-opensource-src-5.4.2.orig/qtbase/src/corelib/io/qsettings_p.h
+++ qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/io/qsettings_p.h
@@ -240,7 +240,7 @@ public:
F_Organization = 0x1,
F_User = 0x0,
F_System = 0x2,

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase, qtdeclarative }:
qtSubmodule {
name = "qtconnectivity";
qtInputs = [ qtbase qtdeclarative ];
}

View File

@ -0,0 +1,37 @@
From 3f6fa74067aacd0e595e45b4ef7ce754514cb205 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Sat, 17 Oct 2015 09:28:18 -0500
Subject: [PATCH] nix profiles import paths
---
src/qml/qml/qqmlimport.cpp | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp
index 5a54609..f33c2f9 100644
--- a/src/qml/qml/qqmlimport.cpp
+++ b/src/qml/qml/qqmlimport.cpp
@@ -1549,6 +1549,20 @@ QQmlImportDatabase::QQmlImportDatabase(QQmlEngine *e)
QString installImportsPath = QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
addImportPath(installImportsPath);
+ // Add import paths derived from NIX_PROFILES.
+ const QByteArray nixProfilesEnv = qgetenv("NIX_PROFILES");
+ if (!nixProfilesEnv.isEmpty()) {
+ QLatin1Char pathSep(' ');
+ QStringList paths = QFile::decodeName(nixProfilesEnv).split(pathSep, QString::SkipEmptyParts);
+ for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
+ it->append("/lib/qt5/qml");
+ QString canonicalPath = QDir(*it).canonicalPath();
+ if (!canonicalPath.isEmpty()) {
+ addImportPath(canonicalPath);
+ }
+ }
+ }
+
// env import paths
QByteArray envImportPath = qgetenv("QML2_IMPORT_PATH");
if (!envImportPath.isEmpty()) {
--
2.5.2

View File

@ -0,0 +1,8 @@
{ qtSubmodule, python, qtbase, qtsvg, qtxmlpatterns }:
qtSubmodule {
name = "qtdeclarative";
patches = [ ./0001-nix-profiles-import-paths.patch ];
qtInputs = [ qtbase qtsvg qtxmlpatterns ];
nativeBuildInputs = [ python ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtdeclarative }:
qtSubmodule {
name = "qtdoc";
qtInputs = [ qtdeclarative ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtdeclarative }:
qtSubmodule {
name = "qtenginio";
qtInputs = [ qtdeclarative ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtdeclarative }:
qtSubmodule {
name = "qtgraphicaleffects";
qtInputs = [ qtdeclarative ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase }:
qtSubmodule {
name = "qtimageformats";
qtInputs = [ qtbase ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase, qtmultimedia }:
qtSubmodule {
name = "qtlocation";
qtInputs = [ qtbase qtmultimedia ];
}

View File

@ -0,0 +1,12 @@
{ qtSubmodule, qtbase, qtdeclarative, pkgconfig
, alsaLib, gstreamer, gst-plugins-base, libpulseaudio
}:
qtSubmodule {
name = "qtmultimedia";
qtInputs = [ qtbase qtdeclarative ];
buildInputs = [
pkgconfig alsaLib gstreamer gst-plugins-base libpulseaudio
];
configureFlags = "GST_VERSION=1.0";
}

View File

@ -0,0 +1,37 @@
From bbc706b3fcb90ca3b2b51d5e3434145572152711 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Sat, 17 Oct 2015 09:29:51 -0500
Subject: [PATCH] nix profiles import paths
---
src/declarative/qml/qdeclarativeimport.cpp | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/declarative/qml/qdeclarativeimport.cpp b/src/declarative/qml/qdeclarativeimport.cpp
index 9404834..d185ed5 100644
--- a/src/declarative/qml/qdeclarativeimport.cpp
+++ b/src/declarative/qml/qdeclarativeimport.cpp
@@ -725,6 +725,20 @@ QDeclarativeImportDatabase::QDeclarativeImportDatabase(QDeclarativeEngine *e)
addImportPath(installImportsPath);
+ // Add import paths derived from NIX_PROFILES.
+ const QByteArray nixProfilesEnv = qgetenv("NIX_PROFILES");
+ if (!nixProfilesEnv.isEmpty()) {
+ QLatin1Char pathSep(' ');
+ QStringList paths = QFile::decodeName(nixProfilesEnv).split(pathSep, QString::SkipEmptyParts);
+ for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
+ it->append("/lib/qt5/imports");
+ QString canonicalPath = QDir(*it).canonicalPath();
+ if (!canonicalPath.isEmpty()) {
+ addImportPath(canonicalPath);
+ }
+ }
+ }
+
// env import paths
QByteArray envImportPath = qgetenv("QML_IMPORT_PATH");
if (!envImportPath.isEmpty()) {
--
2.5.2

View File

@ -0,0 +1,7 @@
{ qtSubmodule, qtscript, qtsvg, qtwebkit, qtxmlpatterns }:
qtSubmodule {
name = "qtquick1";
patches = [ ./0001-nix-profiles-import-paths.patch ];
qtInputs = [ qtscript qtsvg qtwebkit qtxmlpatterns ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtdeclarative }:
qtSubmodule {
name = "qtquickcontrols";
qtInputs = [ qtdeclarative ];
}

View File

@ -0,0 +1,25 @@
From abd80356449bb36c8adcc5c9ca1df6b47715d265 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Sun, 23 Aug 2015 09:13:34 -0500
Subject: [PATCH] glib-2.32
---
src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
index 1f6d25e..087c3fb 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
@@ -81,7 +81,7 @@
#include <pthread.h>
#elif PLATFORM(GTK)
#include <wtf/gtk/GOwnPtr.h>
-typedef struct _GMutex GMutex;
+typedef union _GMutex GMutex;
typedef struct _GCond GCond;
#endif
--
2.5.0

View File

@ -0,0 +1,7 @@
{ qtSubmodule, qtbase, qttools }:
qtSubmodule {
name = "qtscript";
qtInputs = [ qtbase qttools ];
patches = [ ./0001-glib-2.32.patch ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase, qtdeclarative }:
qtSubmodule {
name = "qtsensors";
qtInputs = [ qtbase qtdeclarative ];
}

View File

@ -1,17 +1,17 @@
From 17c7257e54c00ea2121f2cf95fb2be5e5db6b4ad Mon Sep 17 00:00:00 2001
From d81c2c870b9bea8fb8e6b85baefb06542f568338 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Mon, 1 Dec 2014 17:31:03 -0600
Subject: [PATCH] dlopen-serialport-udev
Date: Sun, 23 Aug 2015 09:16:02 -0500
Subject: [PATCH] dlopen serialport udev
---
qtserialport/src/serialport/qtudev_p.h | 4 ++--
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)
diff --git a/src/serialport/qtudev_p.h b/src/serialport/qtudev_p.h
index 6f2cabd..81b9849 100644
--- a/src/serialport/qtudev_p.h
+++ b/src/serialport/qtudev_p.h
@@ -105,9 +105,9 @@ inline QFunctionPointer resolveSymbol(QLibrary *udevLibrary, const char *symbolN
inline bool resolveSymbols(QLibrary *udevLibrary)
{
if (!udevLibrary->isLoaded()) {
@ -24,5 +24,5 @@ index 09940ab..45460f9 100644
qWarning("Failed to load the library: %s, supported version(s): %i and %i", qPrintable(udevLibrary->fileName()), 1, 0);
return false;
--
2.1.3
2.5.0

View File

@ -0,0 +1,7 @@
{ qtSubmodule, qtbase }:
qtSubmodule {
name = "qtserialport";
qtInputs = [ qtbase ];
patches = [ ./0001-dlopen-serialport-udev.patch ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase }:
qtSubmodule {
name = "qtsvg";
qtInputs = [ qtbase ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase }:
qtSubmodule {
name = "qttools";
qtInputs = [ qtbase ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qttools }:
qtSubmodule {
name = "qttranslations";
qtInputs = [ qttools ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qttools, qtwebkit }:
qtSubmodule {
name = "qtwebkit-examples";
qtInputs = [ qttools qtwebkit ];
}

View File

@ -1,19 +1,19 @@
From 8c30f72dbe11752e8ed25f292c6e5695d7733f72 Mon Sep 17 00:00:00 2001
From 862ce7d357a3ec32683ac6ec7c0ebdc9346b44ba Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Mon, 1 Dec 2014 17:22:23 -0600
Subject: [PATCH] dlopen-webkit-nsplugin
Date: Sun, 23 Aug 2015 09:18:54 -0500
Subject: [PATCH 1/3] 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 +-
Source/WebCore/plugins/qt/PluginPackageQt.cpp | 2 +-
Source/WebCore/plugins/qt/PluginViewQt.cpp | 2 +-
Source/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)
diff --git a/Source/WebCore/plugins/qt/PluginPackageQt.cpp b/Source/WebCore/plugins/qt/PluginPackageQt.cpp
index a923d49..2731d05 100644
--- a/Source/WebCore/plugins/qt/PluginPackageQt.cpp
+++ b/Source/WebCore/plugins/qt/PluginPackageQt.cpp
@@ -136,7 +136,7 @@ static void initializeGtk(QLibrary* module = 0)
}
}
@ -22,10 +22,10 @@ index 679480b..2c373cc 100644
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
diff --git a/Source/WebCore/plugins/qt/PluginViewQt.cpp b/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
--- a/Source/WebCore/plugins/qt/PluginViewQt.cpp
+++ b/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:
@ -35,10 +35,10 @@ index de06a2f..363bde5 100644
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
diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp b/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
--- a/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp
+++ b/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());
@ -49,5 +49,5 @@ index d734ff6..62a2197 100644
return 0;
--
2.1.3
2.5.0

View File

@ -1,16 +1,16 @@
From 089db8835c80bf2b7dd91a97a5c6eb26636b6ab9 Mon Sep 17 00:00:00 2001
From 6a407d30357c2551abceac75c82f4a1688e47437 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Mon, 1 Dec 2014 17:26:39 -0600
Subject: [PATCH] dlopen-webkit-gtk
Date: Sun, 23 Aug 2015 09:19:16 -0500
Subject: [PATCH 2/3] dlopen webkit gtk
---
qtwebkit/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp | 2 +-
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
diff --git a/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp b/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
--- a/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp
+++ b/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp
@@ -53,7 +53,7 @@ static void messageHandler(QtMsgType type, const QMessageLogContext&, const QStr
static bool initializeGtk()
@ -21,5 +21,5 @@ index 8de6521..0b25748 100644
return false;
typedef void* (*gtk_init_ptr)(void*, void*);
--
2.1.3
2.5.0

View File

@ -1,16 +1,16 @@
From 25d2922cce383fcaa4c138e0cc6c8d92328eeacb Mon Sep 17 00:00:00 2001
From 864020dd47c3b6d532d9f26b82185904cf9324f2 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Mon, 1 Dec 2014 17:30:41 -0600
Subject: [PATCH] dlopen-webkit-udev
Date: Sun, 23 Aug 2015 09:19:29 -0500
Subject: [PATCH 3/3] dlopen webkit udev
---
qtwebkit/Source/WebCore/platform/qt/GamepadsQt.cpp | 4 ++--
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
diff --git a/Source/WebCore/platform/qt/GamepadsQt.cpp b/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
--- a/Source/WebCore/platform/qt/GamepadsQt.cpp
+++ b/Source/WebCore/platform/qt/GamepadsQt.cpp
@@ -111,12 +111,12 @@ private:
bool load()
{
@ -27,5 +27,5 @@ index 60ff317..da8ac69 100644
return resolveMethods();
}
--
2.1.3
2.5.0

View File

@ -0,0 +1,33 @@
{ qtSubmodule, stdenv, qtdeclarative, qtlocation, qtmultimedia, qtsensors
, fontconfig, gdk_pixbuf, gtk, libwebp, libxml2, libxslt
, sqlite, udev
, bison2, flex, gdb, gperf, perl, pkgconfig, python, ruby
, substituteAll
, flashplayerFix ? false
}:
with stdenv.lib;
qtSubmodule {
name = "qtwebkit";
qtInputs = [ qtdeclarative qtlocation qtmultimedia qtsensors ];
buildInputs = [ fontconfig libwebp libxml2 libxslt sqlite ];
nativeBuildInputs = [
bison2 flex gdb gperf perl pkgconfig python ruby
];
patches =
let dlopen-webkit-nsplugin = substituteAll {
src = ./0001-dlopen-webkit-nsplugin.patch;
inherit gtk gdk_pixbuf;
};
dlopen-webkit-gtk = substituteAll {
src = ./0002-dlopen-webkit-gtk.patch;
inherit gtk;
};
dlopen-webkit-udev = substituteAll {
src = ./0003-dlopen-webkit-udev.patch;
inherit udev;
};
in optionals flashplayerFix [ dlopen-webkit-nsplugin dlopen-webkit-gtk ]
++ [ dlopen-webkit-udev ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase, qtdeclarative }:
qtSubmodule {
name = "qtwebsockets";
qtInputs = [ qtbase qtdeclarative ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase }:
qtSubmodule {
name = "qtx11extras";
qtInputs = [ qtbase ];
}

View File

@ -0,0 +1,6 @@
{ qtSubmodule, qtbase }:
qtSubmodule {
name = "qtxmlpatterns";
qtInputs = [ qtbase ];
}

View File

@ -1,77 +0,0 @@
addQtModule() {
if [[ -d "$1/mkspecs" ]]; then
@lndir@/bin/lndir -silent "$1/mkspecs" "$qtOut/mkspecs"
if [[ -n $qtSubmodule ]]; then
find "$1/mkspecs" -printf 'mkspecs/%P\n' >> "$qtOut/nix-support/qt-inputs"
fi
if [[ -d "$1/bin" ]]; then
@lndir@/bin/lndir -silent "$1/bin" "$qtOut/bin"
if [[ -n $qtSubmodule ]]; then
find "$1/bin" -printf 'bin/%P\n' >> "$qtOut/nix-support/qt-inputs"
fi
fi
if [[ -d "$1/include" ]]; then
@lndir@/bin/lndir -silent "$1/include" "$qtOut/include"
if [[ -n $qtSubmodule ]]; then
find "$1/include" -printf 'include/%P\n' >> "$qtOut/nix-support/qt-inputs"
fi
fi
if [[ -d "$1/lib" ]]; then
@lndir@/bin/lndir -silent "$1/lib" "$qtOut/lib"
if [[ -n $qtSubmodule ]]; then
find "$1/lib" -printf 'lib/%P\n' >> "$qtOut/nix-support/qt-inputs"
fi
if [[ -d "$1/lib/qt5/plugins" ]]; then
QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}$1/lib/qt5/plugins";
fi
if [[ -d "$1/lib/qt5/imports" ]]; then
QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}$1/lib/qt5/imports";
fi
if [[ -d "$1/lib/qt5/qml" ]]; then
QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}$1/lib/qt5/qml";
fi
fi
if [[ -d "$1/share" ]]; then
@lndir@/bin/lndir -silent "$1/share" "$qtOut/share"
if [[ -n $qtSubmodule ]]; then
find "$1/share" -printf 'share/%P\n' >> "$qtOut/nix-support/qt-inputs"
fi
fi
fi
}
setQMakePath() {
export PATH="$qtOut/bin${PATH:+:}$PATH"
}
qtOut=""
if [[ -z $qtSubmodule ]]; then
qtOut="$PWD/qmake-$name"
else
qtOut=$out
fi
mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" \
"$qtOut/nix-support" "$qtOut/lib" "$qtOut/share"
cp "@out@/bin/qmake" "$qtOut/bin"
cat >"$qtOut/bin/qt.conf" <<EOF
[Paths]
Prefix = $qtOut
Plugins = lib/qt5/plugins
Imports = lib/qt5/imports
Qml2Imports = lib/qt5/qml
Documentation = share/doc/qt5
EOF
export QMAKE="$qtOut/bin/qmake"
envHooks+=(addQtModule)
preConfigurePhases+=" setQMakePath"

View File

@ -0,0 +1,245 @@
# DO NOT EDIT! This file is generated automatically by manifest.sh
{ fetchurl, mirror }:
{
qtbase = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtbase-opensource-src-5.4.2.tar.xz";
sha256 = "0x2szpjjvsrpcqw0dd3gsim7b1jv9p716pnllzjbia5mp0hggi4z";
name = "qtbase-opensource-src-5.4.2.tar.xz";
};
};
qtenginio = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtenginio-opensource-src-5.4.2.tar.xz";
sha256 = "082i3fapjw6xs0jkz7x529dn3pb6w1pfli3cjrgvggff86gwlgwn";
name = "qtenginio-opensource-src-5.4.2.tar.xz";
};
};
qtserialport = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtserialport-opensource-src-5.4.2.tar.xz";
sha256 = "1h6p5rb0ldxgzd4md3n79gy0j9blhj736670xqjd9vlvh1743kck";
name = "qtserialport-opensource-src-5.4.2.tar.xz";
};
};
qtscript = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtscript-opensource-src-5.4.2.tar.xz";
sha256 = "0izsmy0cr8iii78r10ndkidyljxqd2k9g03f5xb9nxacvr2f8hp0";
name = "qtscript-opensource-src-5.4.2.tar.xz";
};
};
qtwebchannel = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtwebchannel-opensource-src-5.4.2.tar.xz";
sha256 = "0vy1zjbghfa1wirxd8fd2n2n8yryykzr09913qm2nlfbcxdsgqsn";
name = "qtwebchannel-opensource-src-5.4.2.tar.xz";
};
};
qtwinextras = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtwinextras-opensource-src-5.4.2.tar.xz";
sha256 = "0sgybvr1y2xsddlqc95ninxj3rfmd4gv7a8f7rqcxdynjan5gij0";
name = "qtwinextras-opensource-src-5.4.2.tar.xz";
};
};
qtwebsockets = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtwebsockets-opensource-src-5.4.2.tar.xz";
sha256 = "0lv1la8333qnirxmscs42xnnra0xry1gjbhi3bxrf1hrfs2im9j4";
name = "qtwebsockets-opensource-src-5.4.2.tar.xz";
};
};
qtmultimedia = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtmultimedia-opensource-src-5.4.2.tar.xz";
sha256 = "0h29cs8ajnjarhjx1aczdnxqwvg6pqs9s8w28hw488s149wqqrnj";
name = "qtmultimedia-opensource-src-5.4.2.tar.xz";
};
};
qtgraphicaleffects = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtgraphicaleffects-opensource-src-5.4.2.tar.xz";
sha256 = "02p8xm5ajicjam30ry3g1lm2p4nja2q0sls8dzimqrxhw5xlg3xs";
name = "qtgraphicaleffects-opensource-src-5.4.2.tar.xz";
};
};
qtxmlpatterns = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtxmlpatterns-opensource-src-5.4.2.tar.xz";
sha256 = "0ar7znqp1i02ha5ngy2kzk3hlgkafjbn2xa8j2k78gzmwsmdhzxa";
name = "qtxmlpatterns-opensource-src-5.4.2.tar.xz";
};
};
qttranslations = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qttranslations-opensource-src-5.4.2.tar.xz";
sha256 = "0b4l69c16z8gjd4mq75zz3lj2gxarr9wyk0vk60jg1mi62vxvdls";
name = "qttranslations-opensource-src-5.4.2.tar.xz";
};
};
qtdeclarative = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtdeclarative-opensource-src-5.4.2.tar.xz";
sha256 = "1bj1wwms6lpj8s70y8by3j0hjsw6g9v8m6fybx68krzzizbj2c5p";
name = "qtdeclarative-opensource-src-5.4.2.tar.xz";
};
};
qtwebkit = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtwebkit-opensource-src-5.4.2.tar.xz";
sha256 = "0vffbpiczag2n2hp5gc0nii8n7vkidr8f8pp8a47px0183hl6hiy";
name = "qtwebkit-opensource-src-5.4.2.tar.xz";
};
};
qtquick1 = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtquick1-opensource-src-5.4.2.tar.xz";
sha256 = "0178z15a31fw3l6933fwxs7sk0csifpwckydp3rqnn3fg5f2fwvp";
name = "qtquick1-opensource-src-5.4.2.tar.xz";
};
};
qtquickcontrols = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtquickcontrols-opensource-src-5.4.2.tar.xz";
sha256 = "137z3c3drxlvkdfc7zgcl0xqmavw0ladzqy0i3bq51h756qdc877";
name = "qtquickcontrols-opensource-src-5.4.2.tar.xz";
};
};
qtimageformats = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtimageformats-opensource-src-5.4.2.tar.xz";
sha256 = "1nny6j9pm5ri3n1vwl5lrfrdz0fl81rx127wa49rkg2rjai2aawb";
name = "qtimageformats-opensource-src-5.4.2.tar.xz";
};
};
qtdoc = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtdoc-opensource-src-5.4.2.tar.xz";
sha256 = "15lamv6jvd7v33ldpcrazcdksv6qibdcgh4ncbyh774k8avgrlh8";
name = "qtdoc-opensource-src-5.4.2.tar.xz";
};
};
qtwayland = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtwayland-opensource-src-5.4.2.tar.xz";
sha256 = "14pmpkfq70plw07igxjaiji4vnjg5kg7izlb0wwym1lisg7bwkg0";
name = "qtwayland-opensource-src-5.4.2.tar.xz";
};
};
qtmacextras = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtmacextras-opensource-src-5.4.2.tar.xz";
sha256 = "0h0p3s0rvd3g9rgr4hwcggdbsav2g30vijqwmdxgxd8c00yply80";
name = "qtmacextras-opensource-src-5.4.2.tar.xz";
};
};
qtactiveqt = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtactiveqt-opensource-src-5.4.2.tar.xz";
sha256 = "014kwficqydciwdm1yw88yms81qm8pmi6xfhhfpbc9k85pc6jlla";
name = "qtactiveqt-opensource-src-5.4.2.tar.xz";
};
};
qtlocation = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtlocation-opensource-src-5.4.2.tar.xz";
sha256 = "1v43hl2zzi90vaw11y8dvsksrjn0r2v0br7pw6njl8lqadpg4jnw";
name = "qtlocation-opensource-src-5.4.2.tar.xz";
};
};
qtconnectivity = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtconnectivity-opensource-src-5.4.2.tar.xz";
sha256 = "1nj68bzgm3r1gg171kj0acnifzb3jx0m5pf4f81xb7zl4hfxasrs";
name = "qtconnectivity-opensource-src-5.4.2.tar.xz";
};
};
qtx11extras = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtx11extras-opensource-src-5.4.2.tar.xz";
sha256 = "0jgyywjxavfpiz8202g3s0g9izfl185mmak4fs9h80w1i3gn5zzn";
name = "qtx11extras-opensource-src-5.4.2.tar.xz";
};
};
qttools = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qttools-opensource-src-5.4.2.tar.xz";
sha256 = "1d5nx01r7wxhdg9f1i9xhsvsbwgaz3yv516s068riy970bhdgwzd";
name = "qttools-opensource-src-5.4.2.tar.xz";
};
};
qtsensors = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtsensors-opensource-src-5.4.2.tar.xz";
sha256 = "1yawvjbdymgw8af7ir9zcin89xxck9dm2l6hnc43lwrky0frcvcf";
name = "qtsensors-opensource-src-5.4.2.tar.xz";
};
};
qtwebengine = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtwebengine-opensource-src-5.4.2.tar.xz";
sha256 = "06cyl733prakniqrn8sd807lclk5im2vmysjdcijry2mcyah2ih8";
name = "qtwebengine-opensource-src-5.4.2.tar.xz";
};
};
qtsvg = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtsvg-opensource-src-5.4.2.tar.xz";
sha256 = "1dsyncp154xvb7d82nmnfjm0ngymnhqmliq58ljwxsjmpjlncakz";
name = "qtsvg-opensource-src-5.4.2.tar.xz";
};
};
qt5 = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qt5-opensource-src-5.4.2.tar.xz";
sha256 = "17a0pybr4bpyv9pj7cr5hl4g31biv89bjr8zql723h0b12ql1w44";
name = "qt5-opensource-src-5.4.2.tar.xz";
};
};
qtwebkit-examples = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtwebkit-examples-opensource-src-5.4.2.tar.xz";
sha256 = "0pm9ik1j09jfb5xflc16449nff2xsfyfms7vxlcdjg4dhcqfmll8";
name = "qtwebkit-examples-opensource-src-5.4.2.tar.xz";
};
};
qtandroidextras = {
version = "5.4.2";
src = fetchurl {
url = "${mirror}/official_releases/qt/5.4/5.4.2/submodules/qtandroidextras-opensource-src-5.4.2.tar.xz";
sha256 = "0krfm0wg26x7575p8isswdhrkb0jxyp169grwklil7mfw8yg3xhx";
name = "qtandroidextras-opensource-src-5.4.2.tar.xz";
};
};
}

View File

@ -8153,7 +8153,7 @@ let
developerBuild = true;
});
qt54 = recurseIntoAttrs (callPackage ../development/libraries/qt-5/5.4 {});
qt54 = recurseIntoAttrs (import ../development/libraries/qt-5/5.4 { inherit pkgs; });
qt55 = recurseIntoAttrs (import ../development/libraries/qt-5/5.5 { inherit pkgs; });
qt5 = qt54;