nixpkgs/pkgs/development/libraries/qt-5/5.4/default.nix
2015-06-25 09:03:41 -05:00

361 lines
8.2 KiB
Nix

# Maintainer's Notes:
#
# Minor updates:
# 1. Edit ./manifest.sh to point to the updated URL.
# 2. Run ./manifest.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. 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
# options
, developerBuild ? false
, decryptSslTraffic ? false
}:
with autonix;
with stdenv.lib;
let
srcs =
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;
version = "5.4.2";
callPackage = newScope (self // { inherit qtSubmodule; });
qtSubmodule = callPackage ./qt-submodule.nix {
inherit srcs version;
inherit (stdenv) mkDerivation;
};
self =
{
activeqt = callPackage
(
{ qtSubmodule, base }:
qtSubmodule {
name = "qtactiveqt";
qtInputs = [ base ];
}
)
{};
/* androidextras = not packaged */
base = callPackage ./qtbase.nix {
mesa = mesa_noglu;
cups = if stdenv.isLinux then cups else null;
# GNOME dependencies are not used unless gtkStyle == true
inherit (gnome) libgnomeui GConf gnome_vfs;
bison = bison2; # error: too few arguments to function 'int yylex(...
inherit developerBuild srcs version decryptSslTraffic;
};
connectivity = callPackage
(
{ qtSubmodule, base, declarative }:
qtSubmodule {
name = "qtconnectivity";
qtInputs = [ base declarative ];
}
)
{};
declarative = callPackage
(
{ qtSubmodule, python, base, svg, xmlpatterns }:
qtSubmodule {
name = "qtdeclarative";
qtInputs = [ base svg xmlpatterns ];
nativeBuildInputs = [ python ];
}
)
{};
doc = callPackage
(
{ qtSubmodule, declarative }:
qtSubmodule {
name = "qtdoc";
qtInputs = [ declarative ];
}
)
{};
enginio = callPackage
(
{ qtSubmodule, declarative }:
qtSubmodule {
name = "qtenginio";
qtInputs = [ declarative ];
}
)
{};
graphicaleffects = callPackage
(
{ qtSubmodule, declarative }:
qtSubmodule {
name = "qtgraphicaleffects";
qtInputs = [ declarative ];
}
)
{};
imageformats = callPackage
(
{ qtSubmodule, base }:
qtSubmodule {
name = "qtimageformats";
qtInputs = [ base ];
}
)
{};
location = callPackage
(
{ qtSubmodule, base, multimedia }:
qtSubmodule {
name = "qtlocation";
qtInputs = [ base multimedia ];
}
)
{};
/* macextras = not packaged */
multimedia = callPackage
(
{ qtSubmodule, base, declarative
, alsaLib, gstreamer, gst_plugins_base, libpulseaudio
}:
qtSubmodule {
name = "qtmultimedia";
qtInputs = [ base declarative ];
buildInputs = [
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 ];
}
)
{};
};
in self