gnu: python-2.7: Add all guix prefixes in PYTHONPATH to site-prefixes.

* gnu/packages/patches/python-2.7-site-prefixes.patch: New file.
* gnu/packages/python.scm (python-2)[source]: Use it.
* gnu/local.mk (dist_patch_DATA): Add patch.
This commit is contained in:
Hartmut Goebel 2016-10-18 00:11:05 +02:00
parent c1019287a4
commit 15e57f5762
No known key found for this signature in database
GPG key ID: 634A8DFFD3F631DF
3 changed files with 28 additions and 0 deletions

View file

@ -803,6 +803,7 @@ dist_patch_DATA = \
%D%/packages/patches/pyqt-configure.patch \ %D%/packages/patches/pyqt-configure.patch \
%D%/packages/patches/python-2-deterministic-build-info.patch \ %D%/packages/patches/python-2-deterministic-build-info.patch \
%D%/packages/patches/python-2.7-search-paths.patch \ %D%/packages/patches/python-2.7-search-paths.patch \
%D%/packages/patches/python-2.7-site-prefixes.patch \
%D%/packages/patches/python-2.7-source-date-epoch.patch \ %D%/packages/patches/python-2.7-source-date-epoch.patch \
%D%/packages/patches/python-3-deterministic-build-info.patch \ %D%/packages/patches/python-3-deterministic-build-info.patch \
%D%/packages/patches/python-3-search-paths.patch \ %D%/packages/patches/python-3-search-paths.patch \

View file

@ -0,0 +1,26 @@
Add all /gnu/store/ prefixes found in PYTHONPATH to the prefixes where
site-packages (and .pth files) are searched.
*** Python-2.7.11/Lib/site.py.orig 2016-10-17 23:27:23.746149690 +0200
--- Python-2.7.11/Lib/site.py 2016-10-17 23:44:51.930871644 +0200
***************
*** 65,70 ****
--- 65,82 ----
# Prefixes for site-packages; add additional prefixes like /usr/local here
PREFIXES = [sys.prefix, sys.exec_prefix]
+ # Guix: Add all /gnu/store-paths in PYTHONPATH--these are all
+ # "prefixes". This is required to search .pth files in all python
+ # packages contained in /gnu/store which is required to make
+ # .pth-defined namespace packages work.
+ # This is necessary if the packages are not merged into a single
+ # `site-packages` directory (like when using `guix environment`) but
+ # listed in PYTHONPATH (like when running `guix build`).
+ for p in sys.path:
+ if p.startswith('/gnu/store/'):
+ PREFIXES.append(p[:p.find('/', 44)]) # find first pathsep after hash
+ del p
+
# Enable per user site-packages directory
# set it to False to disable the feature or True to force the feature
ENABLE_USER_SITE = None

View file

@ -122,6 +122,7 @@ (define-public python-2.7
"0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp")) "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp"))
(patches (search-patches "python-2.7-search-paths.patch" (patches (search-patches "python-2.7-search-paths.patch"
"python-2-deterministic-build-info.patch" "python-2-deterministic-build-info.patch"
"python-2.7-site-prefixes.patch"
"python-2.7-source-date-epoch.patch")) "python-2.7-source-date-epoch.patch"))
(modules '((guix build utils))) (modules '((guix build utils)))
;; suboptimal to delete failing tests here, but if we delete them in the ;; suboptimal to delete failing tests here, but if we delete them in the