-
-
Notifications
You must be signed in to change notification settings - Fork 481
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
patch setuptools to allow for parallel usage #13201
Comments
This comment has been minimized.
This comment has been minimized.
Author: R. Andrew Ohana |
comment:2
Why re-invent the wheel? Why not use http://docs.python.org/library/fcntl.html#fcntl.lockf? Also, this should obviously be reported upstream. |
comment:3
Replying to @jdemeyer:
Because I was being dumb and couldn't find that function :).
Yup, although upstream is basically dead. IMO we should switch to distribute (I'll see about making an SPKG). |
new patch applied to setuptools; for review purposes |
Attachment: easy_install_lock.patch.gz Attachment: trac13201.patch.gz apply to root repo |
comment:6
I unfortuntely don't understand Also, do we really need to do this every time Sage runs (could it be moved to
You also need to handle the case that |
comment:7
Replying to @jdemeyer:
Internally setuptools identifies packages based on a normalized path (no absolute paths without symlinks, and a normalized case for case-insensitive filesystems). It reads these from easy-install.pth, and then creates a brand new easy-install.pth if it detects that it needs to. The issue is that it loads the list of packages when it starts, and then writes it back when it finishes, if any changes were made to the file in the meantime, setuptools doesn't detect them, and just overrides them with its new easy-install.pth. What I did was add a bit of code for reloading the file right before writing a new one -- making sure things that were deleted don't pop back up, and making sure things that were added don't disappear.
Well no you don't have to run it every time sage starts, just every time a package using setuptools is installed, since setuptools always inscribes the absolute path into easy-install.pth (even if you specify a relative path for |
comment:8
Since |
comment:9
I thought that was for rewriting paths when |
comment:10
Replying to @ohanar:
Well, the reason you need to rewrite the |
comment:11
Replying to @jdemeyer:
Well we also support clones for sagenb, which will brake every time setuptools is run (it readlinks everything). If we don't care about that, then we could. I'm CCing Keshav and Jason on this ticket, they might have an opinion on how we handle this (since currently it only affects sagenb). |
comment:12
Since sagenb is now distributed without a repository, it might make sense for it not to be installed in SAGE_ROOT/devel/. The reason for it to be in SAGE_ROOT/devel/sagenb is so that the barrier is way lower for people wanting to patch it and work with it. If we're making them clone the git repository anyway, the barrier isn't lower. So what do you think, kini? Should we just install it like a normal spkg? If they want to develop, they need to git clone and do (personally, I'm mildly in favor of going back to installing the git repo in SAGE_ROOT/devel/sagenb...) |
comment:13
Absolutely. I 100% think that sagenb should be installed like any other python package, i.e. in the site packages directory. |
comment:14
In any case, this needs work because it assumes that |
This comment has been minimized.
This comment has been minimized.
comment:23
New attempt... The patch didn't apply, so I wrote a different version. It is now IMHO clearer though perhaps at the cost of rewriting a pth file even if it is not dirty. But then it is hardly a performance-critical step. |
comment:24
We can't push the changes upstream since fcntl is unix only but setuptools has to work on (non-cygwin) windows |
comment:25
Critical as we currently have some races as I noticed in parallel testing. |
Changed author from Volker Braun, R. Andrew Ohana to Volker Braun |
comment:26
Looks fine, although I'll have to test it out. It would be good to get some sort of proper locking in upstream -- maybe doing something along the lines of http://code.activestate.com/recipes/65203/. |
Reviewer: R. Andrew Ohana |
comment:27
The patch version of setuptools will need a version bump to force a rebuild. Also, it would be good to have the patch documented in the SPKG.txt. Pending those two things, positive review. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:29
Done. |
Branch pushed to git repo; I updated commit sha1 and set ticket back to needs_review. New commits:
|
Changed branch from u/vbraun/parallel_setuptools to |
Changed commit from |
comment:32
You just broke sagenb: #17268 |
Currently we have to force the spkgs that use setuptools to build serially because setuptools does not do any file locking with
easy_install.pth
. This is an inconvenience that has a fairly straightforward fix.Depends on #11874
Depends on #12994
CC: @jdemeyer @kini @jasongrout
Component: build
Author: Volker Braun
Branch:
b276471
Reviewer: R. Andrew Ohana
Issue created by migration from https://trac.sagemath.org/ticket/13201
The text was updated successfully, but these errors were encountered: