qt: upgrade to 5.3.2

This commit also removes the 5.2 branch in favor of 5.3. Several
components of KDE5 require Qt 5.3, so it doesn't make much sense to have
the rest of the system on an older version. Also, the application styles
may not be compatible because Qt breaks ABI compatibility between versions.
This commit is contained in:
Thomas Tuegel 2014-11-17 18:54:31 -06:00
parent 9f914a3f82
commit ad38cdac8a
5 changed files with 8 additions and 225 deletions

View file

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, qt53 }: { stdenv, fetchFromGitHub, qt5 }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.9"; version = "0.9";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "8462f3eded7b2219acc143258544b0dfac32d81e10cac61ff14276d426704c93"; sha256 = "8462f3eded7b2219acc143258544b0dfac32d81e10cac61ff14276d426704c93";
}; };
buildInputs = [ qt53 ]; buildInputs = [ qt5 ];
buildPhase = '' buildPhase = ''
pushd ./konsole-qml-plugin pushd ./konsole-qml-plugin
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
cat > $out/bin/cool-old-term <<EOF cat > $out/bin/cool-old-term <<EOF
#!${stdenv.shell} #!${stdenv.shell}
${qt53}/bin/qmlscene -I $out/lib/cool-old-term/imports $out/share/cool-old-term/app/main.qml ${qt5}/bin/qmlscene -I $out/lib/cool-old-term/imports $out/share/cool-old-term/app/main.qml
EOF EOF
chmod a+x $out/bin/cool-old-term chmod a+x $out/bin/cool-old-term
''; '';

View file

@ -17,8 +17,8 @@
with stdenv.lib; with stdenv.lib;
let let
v_maj = "5.2"; v_maj = "5.3";
v_min = "1"; v_min = "2";
ver = "${v_maj}.${v_min}"; ver = "${v_maj}.${v_min}";
in in
@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "http://download.qt-project.org/official_releases/qt/" url = "http://download.qt-project.org/official_releases/qt/"
+ "${v_maj}/${ver}/single/qt-everywhere-opensource-src-${ver}.tar.gz"; + "${v_maj}/${ver}/single/qt-everywhere-opensource-src-${ver}.tar.gz";
sha256 = "18bxrnyis7xbhpxpf7w42i54hs4qr062b1wx4c0dpmja3lc29sc4"; sha256 = "0b98n2jl62dyqxwn1gdj9xmk8wrrdxnazr65fdk5qw1hmlpgvly8";
}; };
# The version property must be kept because it will be included into the QtSDK package name # The version property must be kept because it will be included into the QtSDK package name
@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
patches = patches =
[ ./glib-2.32.patch [ ./glib-2.32.patch
(substituteAll { (substituteAll {
src = ./qt-5.2-dlopen-absolute-paths.patch; src = ./qt-5.3-dlopen-absolute-paths.patch;
inherit cups icu libXfixes; inherit cups icu libXfixes;
glibc = stdenv.gcc.libc; glibc = stdenv.gcc.libc;
openglDriver = if mesaSupported then mesa.driverLink else "/no-such-path"; openglDriver = if mesaSupported then mesa.driverLink else "/no-such-path";
@ -92,7 +92,6 @@ stdenv.mkDerivation rec {
-gui -gui
-widgets -widgets
-opengl desktop -opengl desktop
-javascript-jit
-qml-debug -qml-debug
-nis -nis
-iconv -iconv
@ -160,7 +159,7 @@ stdenv.mkDerivation rec {
homepage = http://qt-project.org; homepage = http://qt-project.org;
description = "A cross-platform application framework for C++"; description = "A cross-platform application framework for C++";
license = "GPL/LGPL"; license = "GPL/LGPL";
maintainers = [ maintainers.bbenoist ]; maintainers = [ maintainers.bbenoist maintainers.qknight ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View file

@ -1,36 +0,0 @@
diff -ruN qt-everywhere-opensource-src-5.1.1-orig/qtbase/src/network/kernel/qhostinfo_unix.cpp qt-everywhere-opensource-src-5.1.1/qtbase/src/network/kernel/qhostinfo_unix.cpp
--- qt-everywhere-opensource-src-5.1.1-orig/qtbase/src/network/kernel/qhostinfo_unix.cpp 2013-08-25 20:03:35.000000000 +0200
+++ qt-everywhere-opensource-src-5.1.1/qtbase/src/network/kernel/qhostinfo_unix.cpp 2013-09-25 17:43:14.047015411 +0200
@@ -103,7 +103,7 @@
if (!lib.load())
#endif
{
- lib.setFileName(QLatin1String("resolv"));
+ lib.setFileName(QLatin1String("@glibc@/lib/libresolv"));
if (!lib.load())
return;
}
diff -ruN qt-everywhere-opensource-src-5.1.1-orig/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp qt-everywhere-opensource-src-5.1.1/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp
--- qt-everywhere-opensource-src-5.1.1-orig/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp 2013-08-25 20:03:35.000000000 +0200
+++ qt-everywhere-opensource-src-5.1.1/qtbase/src/plugins/platforms/xcb/qglxintegration.cpp 2013-09-25 17:51:29.834674976 +0200
@@ -379,7 +379,7 @@
{
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");
}
}
diff -ruN qt-everywhere-opensource-src-5.1.1-orig/qtbase/src/printsupport/kernel/qcups.cpp qt-everywhere-opensource-src-5.1.1/qtbase/src/printsupport/kernel/qcups.cpp
--- qt-everywhere-opensource-src-5.1.1-orig/qtbase/src/printsupport/kernel/qcups.cpp 2013-08-25 20:03:36.000000000 +0200
+++ qt-everywhere-opensource-src-5.1.1/qtbase/src/printsupport/kernel/qcups.cpp 2013-09-25 17:40:35.895942599 +0200
@@ -91,7 +91,7 @@
static void resolveCups()
{
- QLibrary cupsLib(QLatin1String("cups"), 2);
+ QLibrary cupsLib(QLatin1String("@cups@/lib/libcups"), 2);
if(cupsLib.load()) {
_cupsGetDests = (CupsGetDests) cupsLib.resolve("cupsGetDests");
_cupsFreeDests = (CupsFreeDests) cupsLib.resolve("cupsFreeDests");

View file

@ -1,165 +0,0 @@
{ stdenv, fetchurl, substituteAll, libXrender, libXext
, libXfixes, freetype, fontconfig, zlib, libjpeg, libpng
, mesaSupported, mesa, mesa_glu, openssl, dbus, cups, pkgconfig
, libtiff, glib, icu, mysql, postgresql, sqlite, perl, coreutils, libXi
, gdk_pixbuf, python, gdb, xlibs, libX11, libxcb, xcbutil, xcbutilimage
, xcbutilkeysyms, xcbutilwm,udev, libxml2, libxslt, pcre, libxkbcommon
, alsaLib, gstreamer, gst_plugins_base
, pulseaudio, bison, flex, gperf, ruby, libwebp
, flashplayerFix ? false
, gtkStyle ? false, libgnomeui, gtk, GConf, gnome_vfs
, buildDocs ? false
, buildExamples ? false
, buildTests ? false
, developerBuild ? false
}:
with stdenv.lib;
let
v_maj = "5.3";
v_min = "1";
ver = "${v_maj}.${v_min}";
in
stdenv.mkDerivation rec {
name = "qt-${ver}";
src = fetchurl {
url = "http://download.qt-project.org/official_releases/qt/"
+ "${v_maj}/${ver}/single/qt-everywhere-opensource-src-${ver}.tar.gz";
sha256 = "189mgfqxjg0jp0vkfrj55p9brl018wzf7lir8yjr0pajp8jqd2ds";
};
# The version property must be kept because it will be included into the QtSDK package name
version = ver;
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 =
[ ./glib-2.32.patch
(substituteAll {
src = ./qt-5.3-dlopen-absolute-paths.patch;
inherit cups icu libXfixes;
glibc = stdenv.gcc.libc;
openglDriver = if mesaSupported then mesa.driverLink else "/no-such-path";
})
] ++ optional gtkStyle (substituteAll {
src = ./dlopen-gtkstyle.patch;
# substituteAll ignores env vars starting with capital letter
gconf = GConf;
inherit gnome_vfs libgnomeui gtk;
})
++ optional flashplayerFix (substituteAll {
src = ./dlopen-webkit-nsplugin.patch;
inherit gtk gdk_pixbuf;
});
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
libwebp alsaLib gstreamer gst_plugins_base pulseaudio
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 ];
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 = [ maintainers.bbenoist maintainers.qknight ];
platforms = platforms.linux;
};
}

View file

@ -6615,21 +6615,6 @@ let
qtLib = qt48Full; qtLib = qt48Full;
}; };
qt53Full = appendToName "full" (qt53.override {
buildDocs = true;
buildExamples = true;
buildTests = true;
developerBuild = true;
});
qt53 = callPackage ../development/libraries/qt-5/qt-5.3.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(...
};
qt5 = callPackage ../development/libraries/qt-5 { qt5 = callPackage ../development/libraries/qt-5 {
mesa = mesa_noglu; mesa = mesa_noglu;
cups = if stdenv.isLinux then cups else null; cups = if stdenv.isLinux then cups else null;