nixpkgs/pkgs/applications/kde-apps-14.12/default.nix
Thomas Tuegel 2c4c712a70 kde4: use kdelibs from kdeApps_stable
Upstream is releasing bugfixes to kdelibs only through KDE Applications
releases, so this is the correct way to get updates until we discontinue
KDE 4. This also ensures that kdeApps and kde4 are using the same
version of kdelibs; different versions appear to be causing integration issues.
2015-03-21 18:46:54 -05:00

323 lines
9.3 KiB
Nix

# Maintainer's Notes:
#
# Minor updates:
# 1. Edit ./manifest.sh to point to the updated URL. Upstream sometimes
# releases updates that include only the changed packages; in this case,
# multiple URLs can be provided and the results will be merged.
# 2. Run ./manifest.sh and ./dependencies.sh.
# 3. Build and enjoy.
#
# Major updates:
# We prefer not to immediately overwrite older versions with major updates, so
# make a copy of this directory first. After copying, be sure to delete ./tmp
# if it exists. Then follow the minor update instructions.
{ autonix, symlinkJoin, kde4, kf5, pkgs, qt4, qt5, stdenv, debug ? false }:
with stdenv.lib; with autonix;
let kf5Orig = kf5; in
let
kf5 = kf5Orig.override { inherit debug qt5; };
mirror = "mirror://kde";
renames =
(builtins.removeAttrs
(import ./renames.nix {})
["Backend" "CTest"])
// {
"KDE4" = "kdelibs";
"Kexiv2" = "libkexiv2";
"Kdcraw" = "libkdcraw";
"Kipi" = "libkipi";
"LibKMahjongg" = "libkmahjongg";
"LibKonq" = "kde-baseapps";
};
mkDerivation = drv: kf5.mkDerivation (drv // {
preHook = (drv.preHook or "") + ''
addQt4Plugins() {
if [[ -d "$1/lib/qt4/plugins" ]]; then
propagatedUserEnvPkgs+=" $1"
fi
if [[ -d "$1/lib/kde4/plugins" ]]; then
propagatedUserEnvPkgs+=" $1"
fi
}
envHooks+=(addQt4Plugins)
'';
});
scope =
# packages in this collection
(mapAttrs (dep: name: kdeApps."${name}") renames) //
# packages from KDE Frameworks 5
kf5.scope //
# packages from nixpkgs
(with pkgs;
{
ACL = acl;
Akonadi = kde4.akonadi;
Alsa = alsaLib;
Automoc4 = automoc4;
Avahi = avahi;
BISON = bison;
Baloo = kde4.baloo;
Boost = boost156;
Canberra = libcanberra;
Cdparanoia = cdparanoia;
CUPS = cups;
DBusMenuQt = libdbusmenu_qt;
DjVuLibre = djvulibre;
ENCHANT = enchant;
EPub = ebook_tools;
Eigen2 = eigen2;
Eigen3 = eigen;
Exiv2 = exiv2;
FAM = fam;
FFmpeg = ffmpeg;
Flac = flac;
FLEX = flex;
Freetype = freetype;
GMP = gmp;
Gettext = gettext;
Gpgme = gpgme;
Gphoto2 = libgphoto2;
Grantlee = grantlee;
GSL = gsl;
HUNSPELL = hunspell;
HUpnp = herqq;
Jasper = jasper;
KActivities = kde4.kactivities;
LCMS2 = lcms2;
Ldap = openldap;
LibAttica = attica;
LibGcrypt = libgcrypt;
LibSSH = libssh;
LibSpectre = libspectre;
LibVNCServer = libvncserver;
Libical = libical;
MusicBrainz3 = libmusicbrainz;
NetworkManager = networkmanager;
OggVorbis = libvorbis;
OpenAL = openal;
OpenEXR = openexr;
Poppler = poppler.poppler_qt4;
Prison = prison;
PulseAudio = pulseaudio;
PythonLibrary = python;
Qalculate = libqalculate;
QCA2 = qca2;
QImageBlitz = qimageblitz;
QJSON = qjson;
Qt4 = qt4;
Samba = samba;
Sasl2 = cyrus_sasl;
SharedDesktopOntologies = shared_desktop_ontologies;
SndFile = libsndfile;
Speechd = speechd;
TIFF = libtiff;
Taglib = taglib;
TelepathyQt4 = telepathy_qt;
TunePimp = libtunepimp;
UDev = udev;
USB = libusb;
Xscreensaver = xscreensaver;
Xsltproc = libxslt;
}
);
qt5Only = tgt:
let qt4Deps = [ "KDE4" "Phonon" ];
in mapAttrs (name: if name == tgt then removePkgDeps qt4Deps else id);
preResolve = super:
fold (f: x: f x) super
[
(qt5Only "kmix")
(userEnvPkg "SharedMimeInfo")
(userEnvPkg "SharedDesktopOntologies")
(blacklist ["artikulate"]) # build failure, wrong boost?
(blacklist ["kde-dev-scripts" "kde-dev-utils"]) # docbook errors
(blacklist ["kdewebdev"]) # unknown build failure
];
l10nPkgQt4 = orig:
let drvName = builtins.parseDrvName orig.name; in
mkDerivation {
name = "${drvName.name}-qt4-${drvName.version}";
inherit (orig) src;
buildInputs = [ kdeApps.kdelibs ];
nativeBuildInputs = with pkgs; [ cmake gettext perl ];
preConfigure = ''
cd 4/
'';
};
l10nPkgQt5 = orig:
let drvName = builtins.parseDrvName orig.name; in
mkDerivation {
name = "${drvName.name}-qt5-${drvName.version}";
inherit (orig) src;
buildInputs = with kf5; [ kdoctools ki18n ];
nativeBuildInputs = with pkgs; [ cmake kf5.extra-cmake-modules gettext perl ];
preConfigure = ''
cd 5/
'';
};
l10nPkg = name: orig: symlinkJoin orig.name [(l10nPkgQt4 orig) (l10nPkgQt5 orig)];
removeL10nPkgs = filterAttrs (n: v: !(hasPrefix "kde-l10n") n);
postResolve = super:
(removeL10nPkgs super) // {
ark = with pkgs; super.ark // {
buildInputs = (super.ark.buildInputs or []) ++ [ makeWrapper ];
postInstall = ''
wrapProgram $out/bin/ark --prefix PATH : "${unzipNLS}/bin"
'';
};
ffmpegthumbs = with pkgs; super.ffmpegthumbs // {
nativeBuildInputs = super.ffmpegthumbs.nativeBuildInputs ++ [pkgconfig];
};
kalzium = with pkgs; super.kalzium // {
nativeBuildInputs = super.kalzium.nativeBuildInputs ++ [pkgconfig];
};
kde-runtime = with pkgs; super.kde-runtime // {
buildInputs =
super.kde-runtime.buildInputs ++ [libcanberra];
nativeBuildInputs =
super.kde-runtime.nativeBuildInputs ++ [pkgconfig];
NIX_CFLAGS_COMPILE =
(super.kde-runtime.NIX_CFLAGS_COMPILE or "")
+ " -I${ilmbase}/include/OpenEXR";
meta = { priority = 10; };
};
kde-workspace = with pkgs; super.kde-workspace // {
buildInputs = with xlibs;
super.kde-workspace.buildInputs
++
[
libxkbfile libXcomposite xcbutilimage xcbutilkeysyms
xcbutilrenderutil
];
nativeBuildInputs =
super.kde-workspace.nativeBuildInputs
++ [ pkgconfig ];
meta = { priority = 10; };
};
kdelibs = with pkgs; super.kdelibs // {
buildInputs =
super.kdelibs.buildInputs ++ [ attr libxslt polkit_qt4 xz ];
nativeBuildInputs =
super.kdelibs.nativeBuildInputs ++ [ pkgconfig ];
NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
propagatedBuildInputs =
super.kdelibs.propagatedBuildInputs ++ [ qt4 soprano phonon strigi ];
propagatedNativeBuildInputs =
super.kdelibs.propagatedNativeBuildInputs
++ [ automoc4 cmake perl shared_mime_info ];
patches = [ ./kdelibs/polkit-install.patch ];
cmakeFlags = [
"-DDOCBOOKXML_CURRENTDTD_DIR=${docbook_xml_dtd_42}/xml/dtd/docbook"
"-DDOCBOOKXSL_DIR=${docbook_xsl}/xml/xsl/docbook"
"-DHUPNP_ENABLED=ON"
"-DWITH_SOLID_UDISKS2=ON"
];
};
kdepim = with pkgs; super.kdepim // {
buildInputs =
super.kdepim.buildInputs ++ [ gpgme libassuan ];
nativeBuildInputs =
super.kdepim.nativeBuildInputs ++ [ pkgconfig ];
};
kdepimlibs = with pkgs; super.kdepimlibs // {
nativeBuildInputs =
super.kdepimlibs.nativeBuildInputs ++ [ pkgconfig ];
};
kdesdk-thumbnailers = with pkgs; super.kdesdk-thumbnailers // {
nativeBuildInputs =
super.kdesdk-thumbnailers.nativeBuildInputs
++ [gettext];
};
kgpg = with pkgs; super.kgpg // {
buildInputs = super.kgpg.buildInputs ++ [boost];
};
kmix = with pkgs; super.kmix // {
nativeBuildInputs = super.kmix.nativeBuildInputs ++ [pkgconfig];
cmakeFlags = [ "-DKMIX_KF5_BUILD=ON" ];
};
kmousetool = with pkgs; super.kmousetool // {
buildInputs = with xlibs;
super.kmousetool.buildInputs
++ [libXtst libXt];
};
kremotecontrol = with pkgs; super.kremotecontrol // {
buildInputs = super.kremotecontrol.buildInputs ++ [xlibs.libXtst];
};
krfb = super.krfb // {
buildInputs =
super.krfb.buildInputs
++ [pkgs.xlibs.libXtst kde4.telepathy.common_internals];
};
libkdcraw = with pkgs; super.libkdcraw // {
buildInputs = super.libkdcraw.buildInputs ++ [scope.KDE4 libraw];
nativeBuildInputs = super.libkdcraw.nativeBuildInputs ++ [pkgconfig];
};
libkexiv2 = with pkgs; super.libkexiv2 // {
buildInputs = super.libkexiv2.buildInputs ++ [exiv2 scope.KDE4];
};
libkface = with pkgs; super.libkface // {
buildInputs = super.libkface.buildInputs ++ [scope.KDE4 opencv];
};
libkipi = with pkgs; super.libkipi // {
buildInputs = super.libkipi.buildInputs ++ [scope.KDE4];
};
libksane = with pkgs; super.libksane // {
buildInputs = super.libksane.buildInputs ++ [scope.KDE4 saneBackends];
};
};
l10nManifest =
filterAttrs
(n: v: hasPrefix "kde-l10n" n)
(importManifest ./manifest.nix { inherit mirror; });
kdeApps = generateCollection ./. {
inherit mkDerivation;
inherit mirror preResolve postResolve renames scope;
};
in kdeApps // (mapAttrs l10nPkg l10nManifest)