From cf4defce2cfa47be6921f5583ce04183bb3d6232 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Sun, 27 Sep 2015 10:16:37 -0500 Subject: [PATCH] quassel: build with Qt 5.5 --- .../networking/irc/quassel/default.nix | 32 ++----- .../networking/irc/quassel/qt-5.nix | 91 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 73 +++++++-------- 3 files changed, 131 insertions(+), 65 deletions(-) create mode 100644 pkgs/applications/networking/irc/quassel/qt-5.nix diff --git a/pkgs/applications/networking/irc/quassel/default.nix b/pkgs/applications/networking/irc/quassel/default.nix index 4cc54b9f8120..9c77e6b133f1 100644 --- a/pkgs/applications/networking/irc/quassel/default.nix +++ b/pkgs/applications/networking/irc/quassel/default.nix @@ -3,15 +3,12 @@ , client ? false # build Quassel client , previews ? false # enable webpage previews on hovering over URLs , tag ? "" # tag added to the package name -, useQt5 ? false, phonon_qt5, libdbusmenu_qt5, qca-qt5 , withKDE ? stdenv.isLinux # enable KDE integration -, kf5 ? null, kdelibs ? null +, kdelibs ? null , stdenv, fetchurl, cmake, makeWrapper, qt, automoc4, phonon, dconf, qca2 }: -let useKF5 = useQt5 && withKDE; - useKDE4 = withKDE && !useQt5; - buildClient = monolithic || client; +let buildClient = monolithic || client; buildCore = monolithic || daemon; in @@ -19,8 +16,7 @@ assert stdenv.isLinux; assert monolithic -> !client && !daemon; assert client || daemon -> !monolithic; -assert useKDE4 -> kdelibs != null; -assert useKF5 -> kf5 != null; +assert withKDE -> kdelibs != null; assert !buildClient -> !withKDE; # KDE is used by the client only let @@ -39,20 +35,9 @@ in with stdenv; mkDerivation rec { enableParallelBuilding = true; buildInputs = - [ cmake makeWrapper ] - ++ [(if useQt5 then qt.base else qt)] - ++ lib.optionals buildCore (if useQt5 then [qt.script qca-qt5] else [qca2]) - ++ lib.optionals buildClient - ( lib.optionals (previews && useQt5) [qt.webkit qt.webkitwidgets] - ++ lib.optionals useQt5 [libdbusmenu_qt5 phonon_qt5] - ++ lib.optionals useKDE4 [automoc4 kdelibs phonon] - ++ lib.optionals useKF5 - (with kf5; [ - extra-cmake-modules kconfigwidgets kcoreaddons - knotifications knotifyconfig ktextwidgets kwidgetsaddons - kxmlgui - ]) - ); + [ cmake makeWrapper qt ] + ++ lib.optionals buildCore [qca2] + ++ lib.optionals withKDE [automoc4 kdelibs phonon]; NIX_CFLAGS_COMPILE = "-fPIC"; @@ -63,8 +48,7 @@ in with stdenv; mkDerivation rec { ++ edf daemon "WANT_CORE" ++ edf client "WANT_QTCLIENT" ++ edf withKDE "WITH_KDE" - ++ edf previews "WITH_WEBKIT" - ++ edf useQt5 "USE_QT5"; + ++ edf previews "WITH_WEBKIT"; preFixup = lib.optionalString buildClient '' @@ -85,6 +69,6 @@ in with stdenv; mkDerivation rec { license = stdenv.lib.licenses.gpl3; maintainers = with maintainers; [ phreedom ttuegel ]; repositories.git = https://github.com/quassel/quassel.git; - inherit ((if useQt5 then qt.base else qt).meta) platforms; + inherit (qt.meta) platforms; }; } diff --git a/pkgs/applications/networking/irc/quassel/qt-5.nix b/pkgs/applications/networking/irc/quassel/qt-5.nix new file mode 100644 index 000000000000..8e75f16dbda4 --- /dev/null +++ b/pkgs/applications/networking/irc/quassel/qt-5.nix @@ -0,0 +1,91 @@ +{ monolithic ? true # build monolithic Quassel +, daemon ? false # build Quassel daemon +, client ? false # build Quassel client +, previews ? false # enable webpage previews on hovering over URLs +, tag ? "" # tag added to the package name + +, stdenv, fetchurl, cmake, makeWrapper, dconf +, qtbase, qtscript, qtwebkit +, phonon, libdbusmenu, qca-qt5 + +, withKDE ? stdenv.isLinux # enable KDE integration +, extra-cmake-modules +, kconfigwidgets +, kcoreaddons +, knotifications +, knotifyconfig +, ktextwidgets +, kwidgetsaddons +, kxmlgui +}: + +let + buildClient = monolithic || client; + buildCore = monolithic || daemon; +in + +assert stdenv.isLinux; + +assert monolithic -> !client && !daemon; +assert client || daemon -> !monolithic; +assert !buildClient -> !withKDE; # KDE is used by the client only + +let + edf = flag: feature: [("-D" + feature + (if flag then "=ON" else "=OFF"))]; + +in with stdenv; mkDerivation rec { + + version = "0.12.2"; + name = "quassel${tag}-${version}"; + + src = fetchurl { + url = "http://quassel-irc.org/pub/quassel-${version}.tar.bz2"; + sha256 = "15vqjiw38mifvnc95bhvy0zl23xxldkwg2byx9xqbyw8rfgggmkb"; + }; + + enableParallelBuilding = true; + + buildInputs = + [ cmake makeWrapper qtbase ] + ++ lib.optionals buildCore [qtscript qca-qt5] + ++ lib.optionals buildClient [libdbusmenu phonon] + ++ lib.optionals (buildClient && previews) [qtwebkit] + ++ lib.optionals (buildClient && withKDE) [ + extra-cmake-modules kconfigwidgets kcoreaddons + knotifications knotifyconfig ktextwidgets kwidgetsaddons + kxmlgui + ]; + + cmakeFlags = [ + "-DEMBED_DATA=OFF" + "-DSTATIC=OFF" + "-DUSE_QT5=ON" + ] + ++ edf monolithic "WANT_MONO" + ++ edf daemon "WANT_CORE" + ++ edf client "WANT_QTCLIENT" + ++ edf withKDE "WITH_KDE" + ++ edf previews "WITH_WEBKIT"; + + preFixup = + lib.optionalString buildClient '' + wrapProgram "$out/bin/quassel${lib.optionalString client "client"}" \ + --prefix GIO_EXTRA_MODULES : "${dconf}/lib/gio/modules" + ''; + + meta = with stdenv.lib; { + homepage = http://quassel-irc.org/; + description = "Qt/KDE distributed IRC client suppporting a remote daemon"; + longDescription = '' + Quassel IRC is a cross-platform, distributed IRC client, + meaning that one (or multiple) client(s) can attach to + and detach from a central core -- much like the popular + combination of screen and a text-based IRC client such + as WeeChat, but graphical (based on Qt4/KDE4 or Qt5/KF5). + ''; + license = stdenv.lib.licenses.gpl3; + maintainers = with maintainers; [ phreedom ttuegel ]; + repositories.git = https://github.com/quassel/quassel.git; + inherit (qtbase.meta) platforms; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 858c3b3402c8..4875ceb22fc2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6646,6 +6646,38 @@ let k9copy = callPackage ../applications/video/k9copy {}; + quassel = callPackage ../applications/networking/irc/quassel/qt-5.nix { + monolithic = true; + daemon = false; + client = false; + withKDE = true; + dconf = gnome3.dconf; + tag = "-kf5"; + }; + + quasselClient = quassel.override { + monolithic = false; + client = true; + tag = "-client-kf5"; + }; + + quassel_qt5 = quassel.override { + withKDE = false; + tag = "-qt5"; + }; + + quasselClient_qt5 = quasselClient.override { + withKDE = false; + tag = "-client-qt5"; + }; + + quasselDaemon = quassel.override { + monolithic = false; + daemon = true; + tag = "-daemon-qt5"; + withKDE = false; + }; + }; kf513Packages = lib.makeScope kf513.newScope kf5PackagesFun; @@ -12445,47 +12477,6 @@ let qtractor = callPackage ../applications/audio/qtractor { }; - quassel_qt5 = callPackage ../applications/networking/irc/quassel { - monolithic = true; - daemon = false; - client = false; - withKDE = false; - useQt5 = true; - qt = qt5; - dconf = gnome3.dconf; - tag = "-qt5"; - }; - - quasselClient_qt5 = quassel_qt5.override { - monolithic = false; - client = true; - tag = "-client-qt5"; - }; - - quasselDaemon_qt5 = quassel_qt5.override { - monolithic = false; - daemon = true; - tag = "-daemon-qt5"; - }; - - quassel_kf5 = callPackage ../applications/networking/irc/quassel { - monolithic = true; - daemon = false; - client = false; - withKDE = true; - useQt5 = true; - qt = qt5; - kf5 = kf510; - dconf = gnome3.dconf; - tag = "-kf5"; - }; - - quasselClient_kf5 = quassel_kf5.override { - monolithic = false; - client = true; - tag = "-client-kf5"; - }; - quirc = callPackage ../tools/graphics/quirc {}; quodlibet = callPackage ../applications/audio/quodlibet {