From a40da09b444ad00c46d952bc4b4ac9e5cd51c6f9 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 21 Jul 2012 01:55:50 +0200 Subject: [PATCH] python: create pth files for python build inputs (propagate/native or not) --- pkgs/development/python-modules/generic/default.nix | 11 ++++++++++- pkgs/development/python-modules/generic/wrap.sh | 12 ++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 3a6024e09a8..6e8794103bc 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -59,6 +59,8 @@ python.stdenv.mkDerivation (attrs // { buildInputs = [ python wrapPython setuptools ] ++ buildInputs ++ pythonPath; + buildInputStrings = map toString buildInputs; + pythonPath = [ setuptools] ++ pythonPath; # XXX: Should we run `easy_install --always-unzip'? It doesn't seem @@ -76,7 +78,7 @@ python.stdenv.mkDerivation (attrs // { postFixup = '' wrapPythonPrograms - + # If a user installs a Python package, she probably also wants its # dependencies in the user environment (since Python modules don't # have something like an RPATH, so the only way to find the @@ -84,5 +86,12 @@ python.stdenv.mkDerivation (attrs // { if test -e $out/nix-support/propagated-build-inputs; then ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages fi + + createBuildInputsPth build-inputs "$buildInputStrings" + for inputsfile in propagated-build-inputs propagated-build-native-inputs; do + if test -e $out/nix-support/$inputsfile; then + createBuildInputsPth $inputsfile "$(cat $out/nix-support/$inputsfile)" + fi + done ''; }) diff --git a/pkgs/development/python-modules/generic/wrap.sh b/pkgs/development/python-modules/generic/wrap.sh index 65f3229ca7c..7cc72849190 100644 --- a/pkgs/development/python-modules/generic/wrap.sh +++ b/pkgs/development/python-modules/generic/wrap.sh @@ -45,3 +45,15 @@ _addToPythonPath() { done fi } + +createBuildInputsPth() { + local category="$1" + local inputs="$2" + if [ foo"$inputs" != foo ]; then + for x in $inputs; do + if test -d "$x"/lib/@libPrefix@/site-packages; then + echo $x >> "$out"/lib/@libPrefix@/site-packages/${name}-nix-python-$category.pth + fi + done + fi +}