diff --git a/pkgs/applications/misc/roxterm/default.nix b/pkgs/applications/misc/roxterm/default.nix index a8338b80c9e4..60322c2b911e 100644 --- a/pkgs/applications/misc/roxterm/default.nix +++ b/pkgs/applications/misc/roxterm/default.nix @@ -29,7 +29,7 @@ in stdenv.mkDerivation rec { "-I${dbus_libs}/lib/dbus-1.0/include" ]; # Fix up python path so the lockfile library is on it. - PYTHONPATH = stdenv.lib.makeSearchPath "lib/${pythonFull.python.libPrefix}/site-packages" [ + PYTHONPATH = stdenv.lib.makeSearchPath "lib/${pythonFull.libPrefix}/site-packages" [ pythonPackages.curses pythonPackages.lockfile ]; diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix index 3b2239791ae0..cbdb55f4cc35 100644 --- a/pkgs/development/interpreters/python/2.6/default.nix +++ b/pkgs/development/interpreters/python/2.6/default.nix @@ -1,13 +1,11 @@ -{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2 -, sqlite, tcl, tk, x11, openssl, readline, db, ncurses, gdbm -}: +{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, includeModules ? false +, sqlite, tcl, tk, x11, openssl, readline, db, ncurses, gdbm}: assert zlibSupport -> zlib != null; with stdenv.lib; let - majorVersion = "2.6"; version = "${majorVersion}.9"; @@ -27,37 +25,42 @@ let # the Nix store to 1. So treat that as a special case. ./nix-store-mtime.patch ]; + + preConfigure = '' + # Purity. + for i in /usr /sw /opt /pkg; do + substituteInPlace ./setup.py --replace $i /no-such-path + done + '' + optionalString (stdenv ? gcc && stdenv.gcc.libc != null) '' + for i in Lib/plat-*/regen; do + substituteInPlace $i --replace /usr/include/ ${stdenv.gcc.libc}/include/ + done + '' + optionalString stdenv.isCygwin '' + # On Cygwin, `make install' tries to read this Makefile. + mkdir -p $out/lib/python${majorVersion}/config + touch $out/lib/python${majorVersion}/config/Makefile + mkdir -p $out/include/python${majorVersion} + touch $out/include/python${majorVersion}/pyconfig.h + ''; buildInputs = optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++ - [ bzip2 openssl ] + [ bzip2 openssl ]++ optionals includeModules [ db openssl ncurses gdbm readline x11 tcl tk sqlite ] ++ optional zlibSupport zlib; # Build the basic Python interpreter without modules that have # external dependencies. python = stdenv.mkDerivation { - name = "python-${version}"; + name = "python${if includeModules then "" else "-minimal"}-${version}"; - inherit majorVersion version src patches buildInputs; + inherit majorVersion version src patches buildInputs preConfigure; C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs); configureFlags = "--enable-shared --with-threads --enable-unicode"; - preConfigure = - '' - # Purity. - for i in /usr /sw /opt /pkg; do - substituteInPlace ./setup.py --replace $i /no-such-path - done - '' + optionalString (stdenv ? gcc && stdenv.gcc.libc != null) '' - for i in Lib/plat-*/regen; do - substituteInPlace $i --replace /usr/include/ ${stdenv.gcc.libc}/include/ - done - ''; - NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin "-msse2"; setupHook = ./setup-hook.sh; @@ -69,6 +72,10 @@ let ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb${majorVersion} mv $out/share/man/man1/{python.1,python2.6.1} ln -s $out/share/man/man1/{python2.6.1,python.1} + + paxmark E $out/bin/python${majorVersion} + + ${ optionalString includeModules "$out/bin/python ./setup.py build_ext"} ''; passthru = rec { @@ -96,7 +103,7 @@ let ''; license = stdenv.lib.licenses.psfl; platforms = stdenv.lib.platforms.all; - maintainers = with stdenv.lib.maintainers; [ simons chaoflow ]; + maintainers = with stdenv.lib.maintainers; [ simons chaoflow iElectric ]; }; }; @@ -108,18 +115,16 @@ let , internalName ? "_" + moduleName , deps }: - stdenv.mkDerivation rec { + if includeModules then null else stdenv.mkDerivation rec { name = "python-${moduleName}-${python.version}"; - inherit src patches; + inherit src patches preConfigure; buildInputs = [ python ] ++ deps; C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs); - configurePhase = "true"; - buildPhase = '' # Fake the build environment that setup.py expects. diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix index b8539d8e64a3..32c7db7a5499 100644 --- a/pkgs/development/interpreters/python/2.7/default.nix +++ b/pkgs/development/interpreters/python/2.7/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2 +{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, includeModules ? false , sqlite, tcl, tk, x11, openssl, readline, db, ncurses, gdbm, libX11 }: assert zlibSupport -> zlib != null; @@ -6,7 +6,6 @@ assert zlibSupport -> zlib != null; with stdenv.lib; let - majorVersion = "2.7"; version = "${majorVersion}.8"; @@ -32,32 +31,35 @@ let # http://bugs.python.org/issue21963 ./remove-avoid-daemon-thread-shutdown.patch ]; - - postPatch = stdenv.lib.optionalString (stdenv.gcc.libc != null) '' - substituteInPlace ./Lib/plat-generic/regen \ - --replace /usr/include/netinet/in.h \ - ${stdenv.gcc.libc}/include/netinet/in.h - ''; - - buildInputs = - optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++ - [ bzip2 openssl ] - ++ optional zlibSupport zlib; - - ensurePurity = - '' + + preConfigure = '' # Purity. for i in /usr /sw /opt /pkg; do substituteInPlace ./setup.py --replace $i /no-such-path done + '' + optionalString (stdenv ? gcc && stdenv.gcc.libc != null) '' + for i in Lib/plat-*/regen; do + substituteInPlace $i --replace /usr/include/ ${stdenv.gcc.libc}/include/ + done + '' + optionalString stdenv.isCygwin '' + # On Cygwin, `make install' tries to read this Makefile. + mkdir -p $out/lib/python${majorVersion}/config + touch $out/lib/python${majorVersion}/config/Makefile + mkdir -p $out/include/python${majorVersion} + touch $out/include/python${majorVersion}/pyconfig.h ''; + buildInputs = + optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++ + [ bzip2 openssl ] ++ optionals includeModules [ db openssl ncurses gdbm libX11 readline x11 tcl tk sqlite ] + ++ optional zlibSupport zlib; + # Build the basic Python interpreter without modules that have # external dependencies. python = stdenv.mkDerivation { name = "python-${version}"; - inherit majorVersion version src patches postPatch buildInputs; + inherit majorVersion version src patches buildInputs preConfigure; LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s"; C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); @@ -65,15 +67,6 @@ let configureFlags = "--enable-shared --with-threads --enable-unicode"; - preConfigure = "${ensurePurity}" + optionalString stdenv.isCygwin - '' - # On Cygwin, `make install' tries to read this Makefile. - mkdir -p $out/lib/python${majorVersion}/config - touch $out/lib/python${majorVersion}/config/Makefile - mkdir -p $out/include/python${majorVersion} - touch $out/include/python${majorVersion}/pyconfig.h - ''; - NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin "-msse2"; setupHook = ./setup-hook.sh; @@ -86,6 +79,8 @@ let ln -s $out/share/man/man1/{python2.7.1.gz,python.1.gz} paxmark E $out/bin/python${majorVersion} + + ${ optionalString includeModules "$out/bin/python ./setup.py build_ext"} ''; passthru = rec { @@ -113,7 +108,7 @@ let ''; license = stdenv.lib.licenses.psfl; platforms = stdenv.lib.platforms.all; - maintainers = with stdenv.lib.maintainers; [ simons chaoflow ]; + maintainers = with stdenv.lib.maintainers; [ simons chaoflow iElectric ]; }; }; @@ -125,25 +120,17 @@ let , internalName ? "_" + moduleName , deps }: - stdenv.mkDerivation rec { + if includeModules then null else stdenv.mkDerivation rec { name = "python-${moduleName}-${python.version}"; - inherit src patches postPatch; + inherit src patches preConfigure; buildInputs = [ python ] ++ deps; C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs); LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs); - configurePhase = "${ensurePurity}"; - - buildPhase = - '' - # Fake the build environment that setup.py expects. - ln -s ${python}/include/python*/pyconfig.h . - ln -s ${python}/lib/python*/config/Setup Modules/ - ln -s ${python}/lib/python*/config/Setup.local Modules/ - + buildPhase = '' substituteInPlace setup.py --replace 'self.extensions = extensions' \ 'self.extensions = [ext for ext in self.extensions if ext.name in ["${internalName}"]]' diff --git a/pkgs/development/interpreters/python/wrapper.nix b/pkgs/development/interpreters/python/wrapper.nix index ccfbcfcdd42f..37180b1472b1 100644 --- a/pkgs/development/interpreters/python/wrapper.nix +++ b/pkgs/development/interpreters/python/wrapper.nix @@ -1,12 +1,11 @@ { stdenv, python, buildEnv, makeWrapper, recursivePthLoader, extraLibs ? [], postBuild ? "" -, stdLibs ? stdenv.lib.attrValues python.modules, ignoreCollisions ? false -}: +, ignoreCollisions ? false }: # Create a python executable that knows about additional packages. (buildEnv { - name = "python-${python.version}-wrapper"; - paths = stdenv.lib.filter (x : x ? pythonPath) (stdenv.lib.closePropagation extraLibs) ++ stdLibs ++ [ python recursivePthLoader ]; + name = "python-${python.version}-env"; + paths = stdenv.lib.filter (x : x ? pythonPath) (stdenv.lib.closePropagation extraLibs) ++ [ python recursivePthLoader ]; inherit ignoreCollisions; diff --git a/pkgs/development/libraries/thrift/default.nix b/pkgs/development/libraries/thrift/default.nix index 4f2b6ec49d7c..29b0c1a9b291 100644 --- a/pkgs/development/libraries/thrift/default.nix +++ b/pkgs/development/libraries/thrift/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { patches = [ ./yylex.patch ]; # Workaround to make the python wrapper not drop this package: - # pythonFull.override { extraLibs = [ thrift ]; } + # pythonFullBuildEnv.override { extraLibs = [ thrift ]; } pythonPath = []; buildInputs = [ diff --git a/pkgs/servers/gpsd/default.nix b/pkgs/servers/gpsd/default.nix index 62fbd3337f7a..17325ccb2914 100644 --- a/pkgs/servers/gpsd/default.nix +++ b/pkgs/servers/gpsd/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { buildPhase = '' patchShebangs . mkdir -p "$out" - sed -e "s|python_lib_dir = .*|python_lib_dir = \"$out/lib/${pythonFull.python.libPrefix}/site-packages\"|" -i SConstruct + sed -e "s|python_lib_dir = .*|python_lib_dir = \"$out/lib/${pythonFull.libPrefix}/site-packages\"|" -i SConstruct scons prefix="$out" leapfetch=no gpsd_user=${gpsdUser} gpsd_group=${gpsdGroup} \ systemd=yes udevdir="$out/lib/udev" chrpath=no ''; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bc70e291bdea..9287b0eb310a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1868,7 +1868,7 @@ let openobex = callPackage ../tools/bluetooth/openobex { }; openopc = callPackage ../tools/misc/openopc { - pythonFull = python27Full.override { + pythonFull = python27FullBuildEnv.override { extraLibs = [ python27Packages.pyro3 ]; }; }; @@ -3929,9 +3929,6 @@ let python2Packages = python27Packages; python3Packages = python34Packages; - pythonFull = python2Full; - python2Full = python27Full; - python26 = callPackage ../development/interpreters/python/2.6 { db = db47; }; python27 = callPackage ../development/interpreters/python/2.7 { }; python32 = callPackage ../development/interpreters/python/3.2 { }; @@ -3940,18 +3937,24 @@ let pypy = callPackage ../development/interpreters/pypy/2.4 { }; - python26Full = callPackage ../development/interpreters/python/wrapper.nix { - extraLibs = []; - postBuild = ""; - python = python26; + pythonFull = python2Full; + python2Full = python27Full; + python26Full = python26.override { + includeModules = true; + }; + python27Full = python27.override { + includeModules = true; + }; + python26FullBuildEnv = callPackage ../development/interpreters/python/wrapper.nix { + python = python26Full; inherit (python26Packages) recursivePthLoader; }; - python27Full = callPackage ../development/interpreters/python/wrapper.nix { - extraLibs = []; - postBuild = ""; - python = python27; + python27FullBuildEnv = callPackage ../development/interpreters/python/wrapper.nix { + python = python27Full; inherit (python27Packages) recursivePthLoader; }; + pythonFullBuildEnv = python2FullBuildEnv; + python2FullBuildEnv = python27FullBuildEnv; python2nix = callPackage ../tools/package-management/python2nix { };