Make WebKit use libsoup 2.31.2 via deepOverride. Edit a few packages that were overridable but did not allow extra arguments. Remove a catch with deepOverride that pkgs.lib had this attribute in a different sense.

svn path=/nixpkgs/trunk/; revision=22529
This commit is contained in:
Michael Raskin 2010-07-08 13:25:52 +00:00
parent 3c824666fd
commit ccc497f80d
18 changed files with 85 additions and 60 deletions

View file

@ -1,4 +1,5 @@
{ stdenv, fetchurl }: { stdenv, fetchurl
, ...}:
let let

View file

@ -11,6 +11,7 @@
, arch ? null , arch ? null
, sw_vers ? null , sw_vers ? null
, ncurses ? null , ncurses ? null
, ...
}: }:
assert zlibSupport -> zlib != null; assert zlibSupport -> zlib != null;

View file

@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
pkgconfig libdaemon dbus perl perlXMLParser glib expat pkgconfig libdaemon dbus perl perlXMLParser glib expat
gettext intltool gettext intltool
] ]
++ lib.optional qt4Support qt4; ++ (lib.optional qt4Support qt4);
configureFlags = configureFlags =
[ "--disable-qt3" "--disable-gdbm" "--disable-gtk" "--disable-mono" [ "--disable-qt3" "--disable-gdbm" "--disable-gtk" "--disable-mono"

View file

@ -4,6 +4,7 @@
, xcbSupport ? false , xcbSupport ? false
, stdenv, fetchurl, pkgconfig, x11, fontconfig, freetype , stdenv, fetchurl, pkgconfig, x11, fontconfig, freetype
, zlib, libpng, pixman, libxcb ? null, xcbutil ? null , zlib, libpng, pixman, libxcb ? null, xcbutil ? null
, ...
}: }:
assert postscriptSupport -> zlib != null; assert postscriptSupport -> zlib != null;

View file

@ -1,5 +1,6 @@
{ stdenv, fetchurl, pkgconfig, dbus_glib, zlib, pam, glib, { stdenv, fetchurl, pkgconfig, dbus_glib, zlib, pam, glib,
libX11, polkit, expat }: libX11, polkit, expat
, ...}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "consolekit-0.4.1"; name = "consolekit-0.4.1";

View file

@ -1,4 +1,5 @@
{ stdenv, fetchurl, aspell, pkgconfig, glib }: { stdenv, fetchurl, aspell, pkgconfig, glib,
...}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "enchant-1.3.0"; name = "enchant-1.3.0";

View file

@ -5,6 +5,7 @@
# option allows them to be enabled. See # option allows them to be enabled. See
# http://www.freetype.org/patents.html. # http://www.freetype.org/patents.html.
useEncumberedCode ? false useEncumberedCode ? false
, ...
}: }:
stdenv.mkDerivation (rec { stdenv.mkDerivation (rec {

View file

@ -1,4 +1,5 @@
{ stdenv, fetchurl }: { stdenv, fetchurl,
...}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libjpeg-8"; name = "libjpeg-8";

View file

@ -1,4 +1,5 @@
{stdenv, fetchurl, zlib, python ? null, pythonSupport ? true}: {stdenv, fetchurl, zlib, python ? null, pythonSupport ? true
, ...}:
assert pythonSupport -> python != null; assert pythonSupport -> python != null;

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, perl }: { stdenv, fetchurl, perl, ...}:
let let
opensslCrossSystem = stdenv.lib.attrByPath [ "openssl" "system" ] opensslCrossSystem = stdenv.lib.attrByPath [ "openssl" "system" ]

View file

@ -1,4 +1,4 @@
{stdenv, fetchurl, static ? false}: {stdenv, fetchurl, static ? false, ...}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "zlib-1.2.3"; name = "zlib-1.2.3";

View file

@ -1,4 +1,4 @@
{stdenv, fetchurl}: {stdenv, fetchurl, ...}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "gnum4-1.4.13"; name = "gnum4-1.4.13";

View file

@ -53,12 +53,12 @@ rec {
{ override = newArgs: { override = newArgs:
makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs)); makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs));
deepOverride = newArgs: deepOverride = newArgs:
makeOverridable f ((lib.mapAttrs (deepOverride newArgs) origArgs) // newArgs); makeOverridable f ((lib.mapAttrs (deepOverrider newArgs) origArgs) // newArgs);
origArgs = origArgs; origArgs = origArgs;
}; };
deepOverride = newArgs: name: x: if builtins.isAttrs x then ( deepOverrider = newArgs: name: x: if builtins.isAttrs x then (
if x ? deepOverride then (x.deepOverride newArgs) else if x ? deepOverride then (x.deepOverride newArgs) else
if x ? override then (x.override newArgs) else if x ? override then (x.override newArgs) else
x) else x; x) else x;

View file

@ -22,9 +22,20 @@ rec {
sumTwoArgs = f: x: y: sumTwoArgs = f: x: y:
f (defaultMerge x y); f (defaultMerge x y);
foldArgs = merger: f: init: x: foldArgs = merger: f: init: x:
let arg=(merger init (defaultMergeArg init x)); in let arg=(merger init (defaultMergeArg init x));
# now add the function with composed args already applied to the final attrs # now add the function with composed args already applied to the final attrs
setAttrMerge "passthru" {} (f arg) ( x : x // { function = foldArgs merger f arg; } ); base = (setAttrMerge "passthru" {} (f arg)
( z : z // rec {
function = foldArgs merger f arg;
args = (lib.attrByPath ["passthru" "args"] {} z) // x;
} ));
withStdOverrides = base // {
override = base.passthru.function;
deepOverride = a : (base.passthru.function ((lib.mapAttrs (lib.deepOverrider a) base.passthru.args) // a));
} ;
in
withStdOverrides;
# predecessors: proposed replacement for applyAndFun (which has a bug cause it merges twice) # predecessors: proposed replacement for applyAndFun (which has a bug cause it merges twice)
# the naming "overridableDelayableArgs" tries to express that you can # the naming "overridableDelayableArgs" tries to express that you can
@ -117,22 +128,22 @@ rec {
# Return true only if there is an attribute and it is true. # Return true only if there is an attribute and it is true.
checkFlag = attrSet: name: checkFlag = attrSet: name:
if (name == "true") then true else if (name == "true") then true else
if (name == "false") then false else if (name == "false") then false else
if (elem name (attrByPath ["flags"] [] attrSet)) then true else if (elem name (attrByPath ["flags"] [] attrSet)) then true else
attrByPath [name] false attrSet ; attrByPath [name] false attrSet ;
# Input : attrSet, [ [name default] ... ], name # Input : attrSet, [ [name default] ... ], name
# Output : its value or default. # Output : its value or default.
getValue = attrSet: argList: name: getValue = attrSet: argList: name:
( attrByPath [name] (if checkFlag attrSet name then true else ( attrByPath [name] (if checkFlag attrSet name then true else
if argList == [] then null else if argList == [] then null else
let x = builtins.head argList; in let x = builtins.head argList; in
if (head x) == name then if (head x) == name then
(head (tail x)) (head (tail x))
else (getValue attrSet else (getValue attrSet
(tail argList) name)) attrSet ); (tail argList) name)) attrSet );
# Input : attrSet, [[name default] ...], [ [flagname reqs..] ... ] # Input : attrSet, [[name default] ...], [ [flagname reqs..] ... ]
@ -141,46 +152,46 @@ rec {
( (
fold lib.and true fold lib.and true
(map (x: let name = (head x) ; in (map (x: let name = (head x) ; in
((checkFlag attrSet name) -> ((checkFlag attrSet name) ->
(fold lib.and true (fold lib.and true
(map (y: let val=(getValue attrSet argList y); in (map (y: let val=(getValue attrSet argList y); in
(val!=null) && (val!=false)) (val!=null) && (val!=false))
(tail x))))) condList)) ; (tail x))))) condList)) ;
# !!! This function has O(n^2) performance, so you probably don't want to use it! # !!! This function has O(n^2) performance, so you probably don't want to use it!
uniqList = {inputList, outputList ? []}: uniqList = {inputList, outputList ? []}:
if (inputList == []) then outputList else if (inputList == []) then outputList else
let x=head inputList; let x=head inputList;
newOutputList = outputList ++ newOutputList = outputList ++
(if elem x outputList then [] else [x]); (if elem x outputList then [] else [x]);
in uniqList {outputList=newOutputList; in uniqList {outputList=newOutputList;
inputList = (tail inputList);}; inputList = (tail inputList);};
uniqListExt = {inputList, outputList ? [], uniqListExt = {inputList, outputList ? [],
getter ? (x : x), compare ? (x: y: x==y)}: getter ? (x : x), compare ? (x: y: x==y)}:
if (inputList == []) then outputList else if (inputList == []) then outputList else
let x=head inputList; let x=head inputList;
isX = y: (compare (getter y) (getter x)); isX = y: (compare (getter y) (getter x));
newOutputList = outputList ++ newOutputList = outputList ++
(if any isX outputList then [] else [x]); (if any isX outputList then [] else [x]);
in uniqListExt {outputList=newOutputList; in uniqListExt {outputList=newOutputList;
inputList = (tail inputList); inputList = (tail inputList);
inherit getter compare; inherit getter compare;
}; };
condConcat = name: list: checker: condConcat = name: list: checker:
if list == [] then name else if list == [] then name else
if checker (head list) then if checker (head list) then
condConcat condConcat
(name + (head (tail list))) (name + (head (tail list)))
(tail (tail list)) (tail (tail list))
checker checker
else condConcat else condConcat
name (tail (tail list)) checker; name (tail (tail list)) checker;
lazyGenericClosure = {startSet, operator}: lazyGenericClosure = {startSet, operator}:
let let
@ -201,7 +212,7 @@ rec {
else lazyGenericClosure; else lazyGenericClosure;
innerModifySumArgs = f: x: a: b: if b == null then (f a b) // x else innerModifySumArgs = f: x: a: b: if b == null then (f a b) // x else
innerModifySumArgs f x (a // b); innerModifySumArgs f x (a // b);
modifySumArgs = f: x: innerModifySumArgs f x {}; modifySumArgs = f: x: innerModifySumArgs f x {};
@ -210,7 +221,7 @@ rec {
(ready ++ [(head list)]) (ready ++ [(head list)])
((tail list) ((tail list)
++ (maybeAttrNullable "propagatedBuildInputs" [] (head list)) ++ (maybeAttrNullable "propagatedBuildInputs" [] (head list))
++ (maybeAttrNullable "propagatedBuildNativeInputs" [] (head list))); ++ (maybeAttrNullable "propagatedBuildNativeInputs" [] (head list)));
closePropagation = list: (uniqList {inputList = (innerClosePropagation [] list);}); closePropagation = list: (uniqList {inputList = (innerClosePropagation [] list);});

View file

@ -3,6 +3,7 @@
, perlXMLParser, gettext, zlib, gperf, consolekit, policykit , perlXMLParser, gettext, zlib, gperf, consolekit, policykit
, libsmbios, dmidecode, udev, utillinuxng, pmutils, usbutils , libsmbios, dmidecode, udev, utillinuxng, pmutils, usbutils
, eject , eject
, ...
}: }:
assert stdenv ? glibc; assert stdenv ? glibc;

View file

@ -1,6 +1,7 @@
{ stdenv, fetchurl, pkgconfig, gnum4, gdbm, libtool, glib, dbus, hal, avahi { stdenv, fetchurl, pkgconfig, gnum4, gdbm, libtool, glib, dbus, hal, avahi
, gconf, liboil, gtk, libX11, libICE, libSM, libXtst, libXi, intltool, gettext , gconf, liboil, gtk, libX11, libICE, libSM, libXtst, libXi, intltool, gettext
, libcap, alsaLib, libsamplerate, libsndfile, speex }: , libcap, alsaLib, libsamplerate, libsndfile, speex
, ...}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "pulseaudio-0.9.21"; name = "pulseaudio-0.9.21";

View file

@ -1,4 +1,8 @@
{stdenv, fetchurl, zlibSupport ? false, zlib ? null, sslSupport ? false, openssl ? null, linkStatic ? false}: {stdenv, fetchurl
, zlibSupport ? false, zlib ? null
, sslSupport ? false, openssl ? null
, linkStatic ? false
, ...}:
assert zlibSupport -> zlib != null; assert zlibSupport -> zlib != null;
assert sslSupport -> openssl != null; assert sslSupport -> openssl != null;

View file

@ -5443,7 +5443,7 @@ let
inherit fetchurl stdenv cmake unzip libtiff expat zlib libpng libjpeg; inherit fetchurl stdenv cmake unzip libtiff expat zlib libpng libjpeg;
}; };
webkit = builderDefsPackage (import ../development/libraries/webkit) { webkit = ((builderDefsPackage ../development/libraries/webkit {
inherit (gnome28) gtkdoc libsoup; inherit (gnome28) gtkdoc libsoup;
inherit (gtkLibs) gtk atk pango glib; inherit (gtkLibs) gtk atk pango glib;
inherit freetype fontconfig gettext gperf curl inherit freetype fontconfig gettext gperf curl
@ -5455,7 +5455,7 @@ let
gstPluginsGood; gstPluginsGood;
flex = flex2535; flex = flex2535;
inherit (xlibs) libXt; inherit (xlibs) libXt;
}; }).deepOverride {libsoup = gnome28.libsoup_2_31;});
wvstreams = import ../development/libraries/wvstreams { wvstreams = import ../development/libraries/wvstreams {
inherit stdenv fetchurl qt4 dbus zlib openssl readline perl; inherit stdenv fetchurl qt4 dbus zlib openssl readline perl;
@ -8874,7 +8874,7 @@ let
inherit pkgconfig webkit makeWrapper; inherit pkgconfig webkit makeWrapper;
inherit (gtkLibs) gtk glib; inherit (gtkLibs) gtk glib;
inherit (xlibs) libX11; inherit (xlibs) libX11;
libsoup = gnome28.libsoup; libsoup = gnome28.libsoup_2_31;
}; };
valknut = import ../applications/networking/p2p/valknut { valknut = import ../applications/networking/p2p/valknut {