-
-
Notifications
You must be signed in to change notification settings - Fork 487
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
Install all Python packages via pip wheel (or setup.py bdist_wheel), store wheels in $SAGE_LOCAL/var/lib/sage/wheels #29500
Comments
comment:1
Would that be And is this how to find them?
|
This comment has been minimized.
This comment has been minimized.
comment:5
... Also consider pipenv + pipfile as suggested in #30317 ... |
comment:7
I would prefer not to have two separate package installation and management systems. If the only motivation of this is the race condition, like I said this can be solved with an additional file lock to prevent multiple Python packages from being installed simultaneously. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Dependencies: #30024 |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
comment:15
Narrowed the scope of the ticket. |
New commits:
|
Commit: |
This comment has been minimized.
This comment has been minimized.
Author: Matthias Koeppe |
This comment has been minimized.
This comment has been minimized.
Changed dependencies from #30024 to none |
comment:28
|
comment:29
Replying to @jhpalmieri:
I did this to emphasize the analogy to
Good idea, will do.
The wheels are installed with the staging mechanism (DESTDIR), which records the installed files. In this way, the
Thanks |
comment:30
Replying to @mkoeppe:
To clarify, both the wheels and the installation made from the wheels uses the staging mechanism. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Changed reviewer from Tobias Diez, ... to Tobias Diez, John Palmieri |
comment:32
Seems okay to me, and it built and passed tests before, so I think it's okay. Of course, I can no longer build Sage anymore, so perhaps take this review with a grain of salt. |
comment:33
Thanks! |
comment:34
Merge conflict |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:39
Follow-up: #30771 |
Changed commit from |
comment:40
I'm not really sure what the advantage is of this complication. For the follow-up do you propose eliminating the installation manifests installed to |
comment:41
Replying to @embray:
https://wiki.sagemath.org/ReleaseTours/sage-9.2#Reusable_wheels_for_the_Python_packages_built_by_the_Sage_distribution explains an immediate use case. |
comment:42
Replying to @embray:
I don't have a ticket for this at the moment. But I think it's unavoidable to make some changes. Already now these installation manifests (which duplicate the |
Our current version of pip already tries to install packages via
bdist_wheel
.In this ticket, we break the build process into these steps by modifying
sdh_pip_install
:Build the wheel explicitly using
pip wheel --no-binary :all: --no-build-isolation -w "$SAGE_SPKG_WHEELS"
(orsetup.py bdist_wheel
), which stores the wheel inSAGE_SPKG_WHEELS=$SAGE_LOCAL/var/lib/sage/wheels
.Then install the wheel.
The wheels in
$SAGE_SPKG_WHEELS
persist after the completed build. We manage them using theDESTDIR
staging mechanism -- there will be exactly 1 wheel for each installed package (and removing a package removes the wheel). Example (after rebuilding a few packages on this branch):Users can create virtual environments and install the wheels built by the Sage distribution into them, using standard tools such as
pip install --find-links
.Example:
In follow-up ticket Create PEP 503 simple repository for wheels built during installation #30527, we create a PEP 503 simple repository for the wheels built during installation, which enables more convenient installation options for users.
In this ticket, we keep using the
DESTDIR
staging mechanism also for the installation of the package from the wheel.References:
https://pip.pypa.io/en/stable/user_guide/#installing-from-local-packages
https://pip.pypa.io/en/stable/reference/pip_cache/
CC: @slel @tobiasdiez @embray @jhpalmieri @tscrim
Component: build
Author: Matthias Koeppe
Branch:
f2e7075
Reviewer: Tobias Diez, John Palmieri
Issue created by migration from https://trac.sagemath.org/ticket/29500
The text was updated successfully, but these errors were encountered: