mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-18 19:51:17 +00:00
adjust packages to overridableDelayableArgs
svn path=/nixpkgs/trunk/; revision=14427
This commit is contained in:
parent
f1183f33e3
commit
51289a41b0
|
@ -33,7 +33,7 @@ in
|
|||
# python wiht all features enabled.
|
||||
# if you really need a stripped version we should add __overides
|
||||
# so that you can replace it the way it's done in all-packages.nix
|
||||
pythonFull = t.pythonMinimal.passthru.fun {
|
||||
pythonFull = t.pythonMinimal.merge {
|
||||
name = "python-${t.version}-full";
|
||||
cfg = {
|
||||
zlibSupport = true;
|
||||
|
@ -79,48 +79,46 @@ in
|
|||
# lib to verify it works
|
||||
# You can define { python25 { debugCmd = "DISPLAY=:0.0 pathtoxterm"; }
|
||||
# in your config for easier debugging..
|
||||
pythonLibStub = composableDerivation {
|
||||
initial = {
|
||||
propagatedBuildInputs = [ t.pythonFull ]; # see [1]
|
||||
postPhases = ["postAll"]; # using new name so that you dno't override this phase by accident
|
||||
prePhases = ["defineValidatingEval"];
|
||||
# ensure phases are run or a non zero exit status is caused (if there are any syntax errors such as eval "while")
|
||||
defineValidatingEval = ''
|
||||
eval(){
|
||||
e="$(type eval | { read; while read line; do echo $line; done })"
|
||||
unset eval;
|
||||
local evalSucc="failure"
|
||||
eval "evalSucc=ok;""$1"
|
||||
eval "$e"
|
||||
[ $evalSucc = "failure" ] && { echo "eval failed, snippet:"; echo "$1"; return 1; }
|
||||
}
|
||||
'';
|
||||
postAll = ''
|
||||
ensureDir $out/nix-support
|
||||
echo "export NIX_PYTHON_SITES=\"$out:\$NIX_PYTHON_SITES\"" >> $out/nix-support/setup-hook
|
||||
# run check
|
||||
if [ -n "$pyCheck" ]; then
|
||||
( . $out/nix-support/setup-hook
|
||||
mkdir $TMP/new-test; cd $TMP/new-test
|
||||
echo PYTHONPATH=$PYTHONPATH
|
||||
echo NIX_PYTHON_SITES=$NIX_PYTHON_SITES
|
||||
script="$(echo -e "import sys\nprint sys.path\npyCheck\nprint \"check ok\"")"
|
||||
script="''${script/pyCheck/$pyCheck}"
|
||||
echo "check script is"; echo "$script"
|
||||
echo "$script" | python || { ${ getConfig [t.versionAttr "debugCmd"] ":"} ; echo "pycheck failed"; exit 1; }
|
||||
)
|
||||
fi'';
|
||||
passthru = {
|
||||
libPython = t.version; # used to find all python libraries fitting this version (-> see name all below)
|
||||
};
|
||||
mergeAttrBy = {
|
||||
pyCheck = x : y : "${x}\n${y}";
|
||||
};
|
||||
};
|
||||
pythonLibStub = composableDerivation {} {
|
||||
propagatedBuildInputs = [ t.pythonFull ]; # see [1]
|
||||
postPhases = ["postAll"]; # using new name so that you dno't override this phase by accident
|
||||
prePhases = ["defineValidatingEval"];
|
||||
# ensure phases are run or a non zero exit status is caused (if there are any syntax errors such as eval "while")
|
||||
defineValidatingEval = ''
|
||||
eval(){
|
||||
e="$(type eval | { read; while read line; do echo $line; done })"
|
||||
unset eval;
|
||||
local evalSucc="failure"
|
||||
eval "evalSucc=ok;""$1"
|
||||
eval "$e"
|
||||
[ $evalSucc = "failure" ] && { echo "eval failed, snippet:"; echo "$1"; return 1; }
|
||||
}
|
||||
'';
|
||||
postAll = ''
|
||||
ensureDir $out/nix-support
|
||||
echo "export NIX_PYTHON_SITES=\"$out:\$NIX_PYTHON_SITES\"" >> $out/nix-support/setup-hook
|
||||
# run check
|
||||
if [ -n "$pyCheck" ]; then
|
||||
( . $out/nix-support/setup-hook
|
||||
mkdir $TMP/new-test; cd $TMP/new-test
|
||||
echo PYTHONPATH=$PYTHONPATH
|
||||
echo NIX_PYTHON_SITES=$NIX_PYTHON_SITES
|
||||
script="$(echo -e "import sys\nprint sys.path\npyCheck\nprint \"check ok\"")"
|
||||
script="''${script/pyCheck/$pyCheck}"
|
||||
echo "check script is"; echo "$script"
|
||||
echo "$script" | python || { ${ getConfig [t.versionAttr "debugCmd"] ":"} ; echo "pycheck failed"; exit 1; }
|
||||
)
|
||||
fi'';
|
||||
passthru = {
|
||||
libPython = t.version; # used to find all python libraries fitting this version (-> see name all below)
|
||||
};
|
||||
mergeAttrBy = {
|
||||
pyCheck = x : y : "${x}\n${y}";
|
||||
};
|
||||
};
|
||||
|
||||
# same as pythonLibStub, but runs default python setup.py actions
|
||||
pythonLibSetup = t.pythonLibStub.passthru.fun {
|
||||
pythonLibSetup = t.pythonLibStub.merge {
|
||||
buildPhase = ''python setup.py $setupFlags build'';
|
||||
installPhase = ''python setup.py $setupFlags install --prefix=$out'';
|
||||
mergeAttrBy = {
|
||||
|
@ -130,7 +128,7 @@ in
|
|||
|
||||
### python libraries:
|
||||
|
||||
wxPythonBaseFun = (t.pythonLibSetup.passthru.funMerge (a :
|
||||
wxPythonBaseFun = (t.pythonLibSetup.merge (a :
|
||||
let inherit (a.fixed) wxGTK version; in
|
||||
{
|
||||
buildInputs = [p.pkgconfig wxGTK (wxGTK.gtk)];
|
||||
|
@ -144,7 +142,7 @@ in
|
|||
license="wxWinLL-3";
|
||||
};
|
||||
}
|
||||
)).passthru.fun;
|
||||
)).merge;
|
||||
|
||||
wxPython26 = t.wxPythonBaseFun {
|
||||
version = "2.6.3.3";
|
||||
|
@ -166,7 +164,7 @@ in
|
|||
#};
|
||||
|
||||
# couldn't download source
|
||||
#foursuite = pythonLibSetup.passthru.fun {
|
||||
#foursuite = pythonLibSetup.merge {
|
||||
# version = "1.0.2";
|
||||
# name = "4suite-${version}";
|
||||
# src = fetchurl {
|
||||
|
@ -175,7 +173,7 @@ in
|
|||
# };
|
||||
#};
|
||||
|
||||
#bsddb3 = t.pythonLibSetup.passthru.fun {
|
||||
#bsddb3 = t.pythonLibSetup.merge {
|
||||
# version = "1.0.2";
|
||||
# name = "bsddb3-4.5.0";
|
||||
# setupFlags = ["--berkeley-db=${p.db4}"];
|
||||
|
@ -197,7 +195,7 @@ in
|
|||
# patching pygtk to another */gtk2.0 directory to sys.path for each NIX_PYTHON_SITES.
|
||||
# If you install dozens of python packages this might be bloat.
|
||||
# So I think the overhead of installing these packages into the same store path should be prefered.
|
||||
pygtkBaseFun = (t.pythonLibStub.passthru.funMerge (a :
|
||||
pygtkBaseFun = (t.pythonLibStub.merge (a :
|
||||
let inherit (a.fixed) glib gtk; in lib.mergeAttrsByFuncDefaults [
|
||||
{
|
||||
unpackPhase = "true";
|
||||
|
@ -312,7 +310,7 @@ in
|
|||
# '';
|
||||
#};
|
||||
|
||||
pygtk212 = t.pygtkBaseFun.passthru.funMerge (a : {
|
||||
pygtk212 = t.pygtkBaseFun.merge (a : {
|
||||
version = "2.12.1";
|
||||
name = "pygobject-${a.fixed.pygobjectVersion}-and-pygtk-${a.fixed.version}";
|
||||
pygtkSrc = fetchurl {
|
||||
|
@ -326,7 +324,7 @@ in
|
|||
'';
|
||||
});
|
||||
|
||||
pycairo = t.pythonLibStub.passthru.fun {
|
||||
pycairo = t.pythonLibStub.merge {
|
||||
name = "pycairo-1.8.0";
|
||||
buildInputs = [ p.pkgconfig p.cairo p.x11 ];
|
||||
src = fetchurl {
|
||||
|
@ -336,7 +334,7 @@ in
|
|||
pyCheck = "import cairo";
|
||||
};
|
||||
|
||||
gstPython = t.pythonLibStub.passthru.fun {
|
||||
gstPython = t.pythonLibStub.merge {
|
||||
name = "gst-python-0.10.13";
|
||||
src = fetchurl {
|
||||
url = http://gstreamer.freedesktop.org/src/gst-python/gst-python-0.10.13.tar.gz;
|
||||
|
@ -377,7 +375,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
pygoocanvas = t.pythonLibStub.passthru.fun {
|
||||
pygoocanvas = t.pythonLibStub.merge {
|
||||
src = p.fetchurl {
|
||||
url = http://download.berlios.de/pygoocanvas/pygoocanvas-0.10.0.tar.gz;
|
||||
sha256 = "0pxznzdscbhvn8102vrqy3r1g6ss4sgs8wwy6y4c5g26rrp7l55d";
|
||||
|
@ -393,7 +391,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
# zope = t.pythonLibStub.passthru.fun rec {
|
||||
# zope = t.pythonLibStub.merge rec {
|
||||
#[> version = "3.3.1";
|
||||
# version = "svn";
|
||||
# name = "zope-${version}";
|
||||
|
@ -409,7 +407,7 @@ in
|
|||
# pyCheck = "";
|
||||
# };
|
||||
|
||||
setuptools = t.pythonLibSetup.passthru.fun {
|
||||
setuptools = t.pythonLibSetup.merge {
|
||||
name = "setuptools-0.6c9";
|
||||
postUnpack = ''
|
||||
ensureDir $out/lib/python2.5/site-packages
|
||||
|
@ -429,7 +427,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
zopeInterface = t.pythonLibSetup.passthru.fun rec {
|
||||
zopeInterface = t.pythonLibSetup.merge rec {
|
||||
version = "3.3.0";
|
||||
name = "zope.interface-${version}";
|
||||
buildInputs = [ t.setuptools ];
|
||||
|
@ -440,7 +438,7 @@ in
|
|||
pyCheck = "from zope.interface import Interface, Attribute";
|
||||
};
|
||||
|
||||
dbusPython = t.pythonLibStub.passthru.fun rec {
|
||||
dbusPython = t.pythonLibStub.merge rec {
|
||||
version = "0.83.0";
|
||||
name = "dbus-python-0.83.0";
|
||||
buildInputs = [ p.pkgconfig ];
|
||||
|
@ -457,7 +455,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
pythonXlib = t.pythonLibSetup.passthru.fun {
|
||||
pythonXlib = t.pythonLibSetup.merge {
|
||||
name = "python-xlib-0.14";
|
||||
src = fetchurl {
|
||||
url = http://puzzle.dl.sourceforge.net/sourceforge/python-xlib/python-xlib-0.14.tar.gz;
|
||||
|
@ -470,7 +468,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
mechanize = t.pythonLibSetup.passthru.fun {
|
||||
mechanize = t.pythonLibSetup.merge {
|
||||
name = "mechanize-0.1.11";
|
||||
buildInputs = [ t.setuptools ];
|
||||
src = fetchurl {
|
||||
|
@ -485,7 +483,7 @@ in
|
|||
pyCheck = "from mechanize import Browser";
|
||||
};
|
||||
|
||||
pexpect = t.pythonLibSetup.passthru.fun {
|
||||
pexpect = t.pythonLibSetup.merge {
|
||||
name = "pexpect-2.3";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/pexpect/pexpect-2.3.tar.gz;
|
||||
|
@ -500,24 +498,22 @@ in
|
|||
|
||||
### python applications
|
||||
|
||||
pythonExStub = composableDerivation {
|
||||
initial = {
|
||||
buildInputs = [p.makeWrapper];
|
||||
postPhases = ["wrapExecutables"];
|
||||
propagatedBuildInputs = [ t.pythonFull ]; # see [1]
|
||||
pythonExStub = composableDerivation {} {
|
||||
buildInputs = [p.makeWrapper];
|
||||
postPhases = ["wrapExecutables"];
|
||||
propagatedBuildInputs = [ t.pythonFull ]; # see [1]
|
||||
|
||||
# adding $out to NIX_PYTHON_SITES because some of those executables seem to come with extra libs
|
||||
wrapExecutables = ''
|
||||
for prog in $out/bin/*; do
|
||||
wrapProgram "$prog" \
|
||||
--set NIX_PYTHON_SITES "$NIX_PYTHON_SITES:$out" \
|
||||
--set PYTHONPATH "\$PYTHONPATH:$out"
|
||||
done
|
||||
'';
|
||||
};
|
||||
# adding $out to NIX_PYTHON_SITES because some of those executables seem to come with extra libs
|
||||
wrapExecutables = ''
|
||||
for prog in $out/bin/*; do
|
||||
wrapProgram "$prog" \
|
||||
--set NIX_PYTHON_SITES "$NIX_PYTHON_SITES:$out" \
|
||||
--set PYTHONPATH "\$PYTHONPATH:$out"
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
pitivi = t.pythonExStub.passthru.fun {
|
||||
pitivi = t.pythonExStub.merge {
|
||||
name = "pitivi-0.11.2";
|
||||
src = fetchurl {
|
||||
url = http://ftp.gnome.org/pub/GNOME/sources/pitivi/0.11/pitivi-0.11.2.tar.bz2;
|
||||
|
@ -537,7 +533,7 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
istanbul = t.pythonExStub.passthru.fun {
|
||||
istanbul = t.pythonExStub.merge {
|
||||
name = "istanbul-0.2.2";
|
||||
buildInputs = [ t.pygtk212 t.gstPython /*t.gnomePython (contained in gtk) t.gnomePythonExtras */ t.pythonXlib
|
||||
p.perl p.perlXMLParser p.gettext];
|
||||
|
|
|
@ -2,11 +2,11 @@ args: with args;
|
|||
let inherit (lib) optional prepareDerivationArgs concatStringsSep fix; in
|
||||
|
||||
composableDerivation {
|
||||
f = args: let attr = lib.prepareDerivationArgs args; in stdenv.mkDerivation ( attr // {
|
||||
mkDerivation = attr : stdenv.mkDerivation ( attr // {
|
||||
C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") attr.buildInputs);
|
||||
LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") attr.buildInputs);
|
||||
});
|
||||
initial = {
|
||||
} {
|
||||
|
||||
postPhases = ["runCheck"];
|
||||
|
||||
|
@ -65,5 +65,4 @@ composableDerivation {
|
|||
rm -rf $out/lib/python2.5/test
|
||||
";
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,32 +1,30 @@
|
|||
args: with args;
|
||||
let edf = composableDerivation.edf; in
|
||||
composableDerivation.composableDerivation {
|
||||
initial = {
|
||||
name="avrdude-5.4";
|
||||
composableDerivation.composableDerivation {} {
|
||||
name="avrdude-5.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://mirror.switch.ch/mirror/gentoo/distfiles/avrdude-5.4.tar.gz;
|
||||
sha256 = "bee4148c51ec95999d803cb9f68f12ac2e9128b06f07afe307d38966c0833b30";
|
||||
};
|
||||
src = fetchurl {
|
||||
url = http://mirror.switch.ch/mirror/gentoo/distfiles/avrdude-5.4.tar.gz;
|
||||
sha256 = "bee4148c51ec95999d803cb9f68f12ac2e9128b06f07afe307d38966c0833b30";
|
||||
};
|
||||
|
||||
configureFlags = [ "--disable-dependency-tracking" ];
|
||||
configureFlags = [ "--disable-dependency-tracking" ];
|
||||
|
||||
buildInputs = [yacc flex];
|
||||
buildInputs = [yacc flex];
|
||||
|
||||
flags =
|
||||
edf { name = "doc"; enable = { buildInputs = texLive; configureFlags = ["--enable-doc"]; }; }
|
||||
// edf { name = "parport"; }
|
||||
;
|
||||
flags =
|
||||
edf { name = "doc"; enable = { buildInputs = texLive; configureFlags = ["--enable-doc"]; }; }
|
||||
// edf { name = "parport"; }
|
||||
;
|
||||
|
||||
cfg = {
|
||||
docSupport = false; # untested
|
||||
parportSupport = true;
|
||||
};
|
||||
cfg = {
|
||||
docSupport = false; # untested
|
||||
parportSupport = true;
|
||||
};
|
||||
|
||||
meta = {
|
||||
license = "GPL-2";
|
||||
description = "AVR Downloader/UploaDEr";
|
||||
homepage = http://savannah.nongnu.org/projects/avrdude;
|
||||
};
|
||||
meta = {
|
||||
license = "GPL-2";
|
||||
description = "AVR Downloader/UploaDEr";
|
||||
homepage = http://savannah.nongnu.org/projects/avrdude;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,18 +9,23 @@ let inherit (lib) nv nvs; in
|
|||
# grep the mailinglist by title "python proposal" (dec 08)
|
||||
# -> http://mail.cs.uu.nl/pipermail/nix-dev/2008-December/001571.html
|
||||
# to see why this got complicated when using all its features
|
||||
# TODO add newer example using new syntax (kernel derivation proposal -> mailinglist)
|
||||
composableDerivation = {
|
||||
# modify args before applying stdenv.mkDerivation, this should remove at least attrs removeAttrsBy
|
||||
f ? lib.prepareDerivationArgs,
|
||||
stdenv ? pkgs.stdenv,
|
||||
# initial set of arguments to be passed to stdenv.mkDerivation passing prepareDerivationArgs by default
|
||||
mkDerivation ? pkgs.stdenv.mkDerivation,
|
||||
# initial set of arguments to be passed to stdenv.mkDerivation passing prepareDerivationArgs by default
|
||||
initial ? {},
|
||||
# example func : (x: x // { x.buildInputs ++ ["foo"] }), but see mergeAttrByFunc which does this for you
|
||||
merge ? (lib.mergeOrApply lib.mergeAttrByFunc)
|
||||
}: lib.applyAndFun
|
||||
(args: stdenv.mkDerivation (f args))
|
||||
merge
|
||||
(merge { inherit (lib) mergeAttrBy; } initial);
|
||||
|
||||
# list of functions to be applied before defaultOverridableDelayableArgs removes removeAttrs names
|
||||
# prepareDerivationArgs handles derivation configurations
|
||||
# applyPreTidy ? [ lib.prepareDerivationArgs ],
|
||||
applyPreTidy ? [],
|
||||
|
||||
removeAttrs ? ["cfg" "flags"]
|
||||
|
||||
}: (lib.defaultOverridableDelayableArgs ( a: mkDerivation a)
|
||||
{
|
||||
inherit applyPreTidy removeAttrs;
|
||||
}).merge;
|
||||
|
||||
# some utility functions
|
||||
# use this function to generate flag attrs for prepareDerivationArgs
|
||||
|
|
|
@ -1,29 +1,27 @@
|
|||
args: with args;
|
||||
let edf = composableDerivation.edf; in
|
||||
rec {
|
||||
squid30 = composableDerivation.composableDerivation {
|
||||
initial = {
|
||||
name = "squid-3.0-stable5";
|
||||
squid30 = composableDerivation.composableDerivation {} {
|
||||
name = "squid-3.0-stable5";
|
||||
|
||||
buildInputs = [perl];
|
||||
|
||||
src = args.fetchurl {
|
||||
url = http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE5.tar.bz2;
|
||||
sha256 = "1m4ccpjw30q9vwsycmgg9dmhly0mpznvxrch6f7dxgfzpjp26l7w";
|
||||
};
|
||||
|
||||
configureFlags = ["--enable-ipv6"];
|
||||
|
||||
meta = {
|
||||
description = "http-proxy";
|
||||
homepage = "http://www.squid-cache.org";
|
||||
license = "GPL2";
|
||||
};
|
||||
buildInputs = [perl];
|
||||
|
||||
src = args.fetchurl {
|
||||
url = http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE5.tar.bz2;
|
||||
sha256 = "1m4ccpjw30q9vwsycmgg9dmhly0mpznvxrch6f7dxgfzpjp26l7w";
|
||||
};
|
||||
|
||||
configureFlags = ["--enable-ipv6"];
|
||||
|
||||
meta = {
|
||||
description = "http-proxy";
|
||||
homepage = "http://www.squid-cache.org";
|
||||
license = "GPL2";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
squid3Beta = squid30.passthru.funMerge {
|
||||
squid3Beta = squid30.merge {
|
||||
name = "squid-3.1-beta";
|
||||
src = args.fetchurl {
|
||||
url = http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.0.3.tar.bz2;
|
||||
|
@ -32,7 +30,7 @@ rec {
|
|||
configureFlags = ["--enable-ipv6"];
|
||||
};
|
||||
|
||||
squid3Head = squid3Beta.passthru.funMerge {
|
||||
squid3Head = squid3Beta.merge {
|
||||
name = "squid-3.1-HEAD";
|
||||
src = args.fetchurl {
|
||||
url = http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.0.3-20081221.tar.bz2;
|
||||
|
|
Loading…
Reference in a new issue