unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Hartmut Goebel <h.goebel@crazy-compilers.com>
To: "Maxim Cournoyer" <maxim.cournoyer@gmail.com>,
	"Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: 03/163: build/python: Add a new guix-pythonpath procedure.
Date: Fri, 5 Feb 2021 11:26:20 +0100	[thread overview]
Message-ID: <e32ffb4a-2857-9aa9-e2ac-da9ea79085ee@crazy-compilers.com> (raw)
In-Reply-To: <87im7fyg5c.fsf@gmail.com>

Hi Maxim,

many thanks for picking up this issue.
> Indeed, I thought about the possibility to filter the GUIX_PYTHONPATH
> entries based on their version at runtime after I wrote my initial
> reply.  It makes life easier.  I've updated the
> cu/farewell-to-pythonpath branch with this new way of doing things.

I had a look at the first changes (only) and have some remarks:

1) Did I understand this correctly: `sitecustomize.py` is filtering 
GUIX_PYTHONPATH for all parts containing "/lib/pythonX.Y/site-packages" 
(with X.Y being Major.Minor)?

2) This does not remove duplicates and does not honor .pth files in the 
respective directories - which might still be used. Thus 
site.addsitedir() should be called for adding the paths. This also takes 
care about duplicates.

3) Empty part (…::…) are not handled.

4) Since PYTHONPATH is evaluated prior to importing sitecustomize, any 
sitecustominze.py in the user's path will overwrite our file, thus 
inhibiting our paths to be added. Not sure this is what we want in Guix.

5) When implementing the logic into site.py, the code could be 
simplified, Eg. You could patch a "getguixsitepackages" (based on 
getsitepackages) and a "addguixsitepackages" (based on 
addguixsitepackages) into site.py. Downside is that maybe we need 
different patches for different Python versions. Benefit is simpler code 
- no need to search the correct position in the list.

6) Please add some more comments to the code explaining the idea.


Some nitpicking:

 > python_root = os.path.realpath(sys.executable).split('/bin/')[0]

There already is sys.prefix, which is also the base for the entry in 
sys.path (see top of site.py

 > major_minor = '{}.{}'.format(sys.version_info[0], sys.version_info[1])

major_minor = '{}.{}'.format(*sys.version_info)

 >sys.path = sys.path[:index] + matching_sites + sys.path[index:]

sys.path[index:index] = matching_sites


I suggest using os.path.join(), os.path.split(), os.pathsep, etc. to be 
forward-compatible. Imagine we want to port Guix to another platform 
with different separators.

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |



  parent reply	other threads:[~2021-02-05 10:27 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20210125070022.22870.17321@vcs0.savannah.gnu.org>
     [not found] ` <20210125070114.03C0B20E1C@vcs0.savannah.gnu.org>
2021-01-25 21:46   ` 03/163: build/python: Add a new guix-pythonpath procedure Ludovic Courtès
2021-01-25 22:10     ` Maxim Cournoyer
2021-01-28 14:16       ` Ludovic Courtès
2021-01-29 14:25         ` Maxim Cournoyer
2021-02-01 15:37           ` Ludovic Courtès
2021-02-05 10:26           ` Hartmut Goebel [this message]
2021-02-26 15:36             ` Maxim Cournoyer
2021-03-07 11:13               ` Hartmut Goebel
2021-03-14  0:58                 ` Maxim Cournoyer
2021-03-27 10:47                   ` Hartmut Goebel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e32ffb4a-2857-9aa9-e2ac-da9ea79085ee@crazy-compilers.com \
    --to=h.goebel@crazy-compilers.com \
    --cc=guix-devel@gnu.org \
    --cc=ludo@gnu.org \
    --cc=maxim.cournoyer@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).