Author: chaoflow
Date: Sun Feb 26 17:22:55 2012
New Revision: 32579
URL: https://nixos.org/websvn/nix/?rev=32579&sc=1
Log:
python site.py that loads pth files anywhere on PYTHONPATH
This file is normally created by easy_install / distutils, but removed
and packaged separately to avoid collisions and allow for more use cases.
Added:
nixpkgs/branches/stdenv-updates/pkgs/development/python-modules/site/
nixpkgs/branches/stdenv-updates/pkgs/development/python-modules/site/default.nix
nixpkgs/branches/stdenv-updates/pkgs/development/python-modules/site/site.py
Modified:
nixpkgs/branches/stdenv-updates/pkgs/top-level/python-packages.nix
Added:
nixpkgs/branches/stdenv-updates/pkgs/development/python-modules/site/default.nix
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++
nixpkgs/branches/stdenv-updates/pkgs/development/python-modules/site/default.nix
Sun Feb 26 17:22:55 2012 (r32579)
@@ -0,0 +1,33 @@
+{ stdenv, python }:
+
+stdenv.mkDerivation rec {
+ name = "site-1.0";
+
+ unpackPhase = "true";
+
+ buildInputs = [ python ];
+
+ installPhase =
+ ''
+ dst=$out/lib/${python.libPrefix}/site-packages
+ mkdir -p $dst
+ cat ${./site.py} >> $dst/site.py
+ '';
+
+ meta = {
+ description = "Enable processing of pth files anywhere in PYTHONPATH";
+ longDescription = ''
+ This file is normally created by easy_install / distutils in
+ site-packages and overrides python's default site.py. It adds
+ all parts of PYTHONPATH as site directories, which means pth
+ files are processed in them. We remove the normally created
+ site.py's and package it separately instead as it would cause
+ collisions.
+
+ For each module we have a pth file listing the module and all
+ its dependencies and we include python-site into the
+ PYTHONPATH of wrapped python programs so they can find their
+ dependencies.
+ '';
+ };
+}
Added:
nixpkgs/branches/stdenv-updates/pkgs/development/python-modules/site/site.py
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++
nixpkgs/branches/stdenv-updates/pkgs/development/python-modules/site/site.py
Sun Feb 26 17:22:55 2012 (r32579)
@@ -0,0 +1,82 @@
+def __boot():
+ import sys, imp, os, os.path
+ PYTHONPATH = os.environ.get('PYTHONPATH')
+ if PYTHONPATH is None or (sys.platform=='win32' and not PYTHONPATH):
+ PYTHONPATH = []
+ else:
+ PYTHONPATH = PYTHONPATH.split(os.pathsep)
+
+ pic = getattr(sys,'path_importer_cache',{})
+ stdpath = sys.path[len(PYTHONPATH):]
+ mydir = os.path.dirname(__file__)
+ #print "searching",stdpath,sys.path
+
+ for item in stdpath:
+ if item==mydir or not item:
+ continue # skip if current dir. on Windows, or my own directory
+ importer = pic.get(item)
+ if importer is not None:
+ loader = importer.find_module('site')
+ if loader is not None:
+ # This should actually reload the current module
+ loader.load_module('site')
+ break
+ else:
+ try:
+ stream, path, descr = imp.find_module('site',[item])
+ except ImportError:
+ continue
+ if stream is None:
+ continue
+ try:
+ # This should actually reload the current module
+ imp.load_module('site',stream,path,descr)
+ finally:
+ stream.close()
+ break
+ else:
+ raise ImportError("Couldn't find the real 'site' module")
+
+ #print "loaded", __file__
+
+ known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
+
+ oldpos = getattr(sys,'__egginsert',0) # save old insertion position
+ sys.__egginsert = 0 # and reset the current one
+
+ for item in PYTHONPATH:
+ addsitedir(item)
+
+ sys.__egginsert += oldpos # restore effective old position
+
+ d,nd = makepath(stdpath[0])
+ insert_at = None
+ new_path = []
+
+ for item in sys.path:
+ p,np = makepath(item)
+
+ if np==nd and insert_at is None:
+ # We've hit the first 'system' path entry, so added entries go here
+ insert_at = len(new_path)
+
+ if np in known_paths or insert_at is None:
+ new_path.append(item)
+ else:
+ # new path after the insert point, back-insert it
+ new_path.insert(insert_at, item)
+ insert_at += 1
+
+ sys.path[:] = new_path
+
+if __name__=='site':
+ __boot()
+ del __boot
+
+
+
+
+
+
+
+
Modified: nixpkgs/branches/stdenv-updates/pkgs/top-level/python-packages.nix
==============================================================================
--- nixpkgs/branches/stdenv-updates/pkgs/top-level/python-packages.nix Sun Feb
26 17:22:50 2012 (r32578)
+++ nixpkgs/branches/stdenv-updates/pkgs/top-level/python-packages.nix Sun Feb
26 17:22:55 2012 (r32579)
@@ -19,6 +19,12 @@
};
+ site = import ../development/python-modules/site {
+ inherit (pkgs) stdenv;
+ inherit python;
+ };
+
+
ipython = import ../shells/ipython {
inherit (pkgs) stdenv fetchurl;
inherit buildPythonPackage pythonPackages;
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits