70 lines
2.3 KiB
Nix
70 lines
2.3 KiB
Nix
|
args: with args;
|
||
|
let inherit (lib) optional prepareDerivationArgs concatStringsSep fix; in
|
||
|
|
||
|
composableDerivation {
|
||
|
f = args: let attr = lib.prepareDerivationArgs args; in 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"];
|
||
|
|
||
|
mergeAttrBy = { pyCheck = x : y : "${x}\n${y}"; };
|
||
|
|
||
|
# should be last because it sources setup-hook of this package itself
|
||
|
runCheck = ''
|
||
|
PATH=$out/bin:$PATH; . $out/nix-support/setup-hook;
|
||
|
echo -e "import sys\n$pyCheck\nprint \"import pyCheck ok\"" | python
|
||
|
'';
|
||
|
|
||
|
inherit (args) name;
|
||
|
|
||
|
# everything can be overriden by composedArgsAndFun additional args
|
||
|
# assuming that if a module can be loaded that it does also work..
|
||
|
flags = {
|
||
|
zlib = { buildInputs = [ zlib ]; pyCheck = "import zlib"; };
|
||
|
gdbm = { buildInputs = [ gdbm ]; pyCheck = "import gdbm"; };
|
||
|
sqlite = { buildInputs = [ sqlite ]; pyCheck = "import sqlite3"; };
|
||
|
db4 = { buildInputs = [ db4 ]; }; # TODO add pyCheck
|
||
|
readline = { buildInputs = [ readline ]; }; # doesn't work yet (?)
|
||
|
openssl = { buildInputs = [ openssl ]; pyCheck ="import socket\nsocket.ssl"; };
|
||
|
};
|
||
|
|
||
|
src = fetchurl {
|
||
|
url = http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tar.bz2;
|
||
|
sha256 = "0gh8bvs56vdv8qmlfmiwyczjpldj0y3zbzd0zyhyjfd0c8m0xy7j";
|
||
|
};
|
||
|
|
||
|
configureFlags = ["--enable-shared" "--with-wctype-functions"];
|
||
|
|
||
|
buildInputs =
|
||
|
optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++
|
||
|
[bzip2 ncurses];
|
||
|
|
||
|
patches = [
|
||
|
# Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff.
|
||
|
./search-path.patch
|
||
|
|
||
|
|
||
|
# make python know about libraries reading .pth files
|
||
|
# http://docs.python.org/library/site.html#module-site
|
||
|
# TODO: think about security (see the other code contained in site.py)
|
||
|
./nix-find-sites-2.5.patch
|
||
|
];
|
||
|
|
||
|
preConfigure = ''
|
||
|
# Purity.
|
||
|
for i in /usr /sw /opt /pkg; do
|
||
|
substituteInPlace ./setup.py --replace $i /no-such-path
|
||
|
done
|
||
|
export NIX_LDFLAGS="$NIX_LDFLAGS -lncurses"
|
||
|
'';
|
||
|
|
||
|
postInstall = "
|
||
|
rm -rf $out/lib/python2.5/test
|
||
|
";
|
||
|
|
||
|
};
|
||
|
}
|