From 9670fca780f0b9f6123f199b3867f0bf2c55e275 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 16 Aug 2010 17:03:35 +0000 Subject: [PATCH] Added "python-$version-wrapper" expression. The python wrapper expression expects a list of Python modules, $extraLibs, which are added to $PYTHONPATH before executing the actual Python interpreter. svn path=/nixpkgs/trunk/; revision=23194 --- .../interpreters/python/2.4/default.nix | 16 +++++++++------- .../interpreters/python/2.5/default.nix | 12 +++++++----- .../interpreters/python/2.6/default.nix | 1 + .../interpreters/python/2.7/default.nix | 1 + .../interpreters/python/3.1/default.nix | 1 + .../interpreters/python/wrapper.nix | 19 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 7 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 pkgs/development/interpreters/python/wrapper.nix diff --git a/pkgs/development/interpreters/python/2.4/default.nix b/pkgs/development/interpreters/python/2.4/default.nix index f83b69e71e4..f9673cc68d9 100644 --- a/pkgs/development/interpreters/python/2.4/default.nix +++ b/pkgs/development/interpreters/python/2.4/default.nix @@ -8,14 +8,16 @@ let buildInputs = optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++ - [bzip2] ++ + [bzip2] ++ optional zlibSupport zlib; in stdenv.mkDerivation { name = "python-2.4.6"; - + majorVersion = "2.4"; + version = "2.4.6"; + src = fetchurl { url = http://www.python.org/ftp/python/2.4.6/Python-2.4.6.tar.bz2; sha256 = "021y88a4ki07dgq19yhg6zfvmncfiz7h5b2255438i9zmlwl246s"; @@ -25,22 +27,22 @@ stdenv.mkDerivation { # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff. ./search-path.patch ]; - + inherit buildInputs; C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs); - + configureFlags = "--enable-shared"; - + preConfigure = '' # Purity. - for i in /usr /sw /opt /pkg; do + for i in /usr /sw /opt /pkg; do substituteInPlace ./setup.py --replace $i /no-such-path done ''; setupHook = ./setup-hook.sh; - + postInstall = '' rm -rf $out/lib/python2.4/test ''; diff --git a/pkgs/development/interpreters/python/2.5/default.nix b/pkgs/development/interpreters/python/2.5/default.nix index 33aa66d765d..d1cb7703b9f 100644 --- a/pkgs/development/interpreters/python/2.5/default.nix +++ b/pkgs/development/interpreters/python/2.5/default.nix @@ -39,7 +39,9 @@ in stdenv.mkDerivation ( { name = "python-2.5.4"; - + majorVersion = "2.5"; + version = "2.5.4"; + src = fetchurl { url = http://www.python.org/ftp/python/2.5.4/Python-2.5.4.tar.bz2; sha256 = "0401g346ixng1im6gp11rgkfhx3v05qrpn5qjfx26mgy5dm8k3dw"; @@ -49,15 +51,15 @@ stdenv.mkDerivation ( { # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff. ./search-path.patch ]; - + inherit buildInputs; C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs); configureFlags = "--enable-shared --with-wctype-functions"; - + preConfigure = '' # Purity. - for i in /usr /sw /opt /pkg; do + for i in /usr /sw /opt /pkg; do substituteInPlace ./setup.py --replace $i /no-such-path done '' + (if readline != null then '' @@ -65,7 +67,7 @@ stdenv.mkDerivation ( { '' else ""); setupHook = ./setup-hook.sh; - + postInstall = '' rm -rf $out/lib/python2.5/test ''; diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix index 3fd035b09bb..53428de33f4 100644 --- a/pkgs/development/interpreters/python/2.6/default.nix +++ b/pkgs/development/interpreters/python/2.6/default.nix @@ -47,6 +47,7 @@ in stdenv.mkDerivation ( { name = "python-${version}"; + inherit majorVersion version; src = fetchurl { url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.bz2"; diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix index 44579dd717f..1b828cd5160 100644 --- a/pkgs/development/interpreters/python/2.7/default.nix +++ b/pkgs/development/interpreters/python/2.7/default.nix @@ -47,6 +47,7 @@ in stdenv.mkDerivation ( { name = "python-${version}"; + inherit majorVersion version; src = fetchurl { url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.bz2"; diff --git a/pkgs/development/interpreters/python/3.1/default.nix b/pkgs/development/interpreters/python/3.1/default.nix index 963a4aec26c..6cfafe2c899 100644 --- a/pkgs/development/interpreters/python/3.1/default.nix +++ b/pkgs/development/interpreters/python/3.1/default.nix @@ -49,6 +49,7 @@ in stdenv.mkDerivation ( { name = "python3-${version}"; + inherit majorVersion version; src = fetchurl { url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.bz2"; diff --git a/pkgs/development/interpreters/python/wrapper.nix b/pkgs/development/interpreters/python/wrapper.nix new file mode 100644 index 00000000000..9002fc0ea1a --- /dev/null +++ b/pkgs/development/interpreters/python/wrapper.nix @@ -0,0 +1,19 @@ +{stdenv, python, makeWrapper, extraLibs ? []}: + +stdenv.mkDerivation { + name = "python-${python.version}-wrapper"; + + propagatedBuildInputs = [python makeWrapper] ++ extraLibs; + + unpackPhase = "true"; + installPhase = '' + ensureDir "$out/bin" + declare -p + for prg in 2to3 idle pydoc python python-config python${python.majorVersion} python${python.majorVersion}-config smtpd.py; do + makeWrapper "$python/bin/$prg" "$out/bin/$prg" --set PYTHONPATH "$PYTHONPATH" + done + ''; + + inherit python; + inherit (python) meta; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9f95fae2dd4..895d321af79 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2081,6 +2081,8 @@ let pythonBase = python26Base; pythonFull = python26Full; + pythonWrapper = callPackage ../development/interpreters/python/wrapper.nix { }; + python24 = callPackage ../development/interpreters/python/2.4 { }; python25Base = makeOverridable (import ../development/interpreters/python/2.5) {