Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Trying to reduce the startup times of the self-extracting archive, I was looking into "caching" the extraction directory like we do in the Nuitka PR. However, pyinstaller is against this (too many things can wrong), so instead they recommend using the
onedir
packaging approach.Under this mode, we no longer obtain a
conda.exe
self-extracting archive, but the following tree:It's essentially the unpacked directory, with an executable entry point. I was thinking that we could have
conda-standalone
distribute this tree under$PREFIX/standalone_conda
and then teachconstructor
to also copy_internal
if present. Then we stop paying the extraction cost for every execution.Then a second opportunity opens up: this could be a frozen
base
environment!conda
doesn't recognize its own prefix as an environment with the current code. We just need to teach it to stop usingbase
as a writable location. Thebase
-equivalent location can be mocked via theCONDA_ROOT_PREFIX
(and that's what I've done in the entry point here). Maybe we need to fix a couple bugs with the Windows entry points and whatnot, but that's doable.Also this is easier to debug and optimize. Just realized the mamba bindings end up pulling the whole libicudata with its nice 30MB library 😂 Not sure if that's needed but for sure
micromamba
doesn't weigh that much (11MB in my macOS).Anyway, a little experiment and food for thought: what if the conda installer simply provided this tree:
Shortcomings:
plugins/
env where we mock and freeze the exact contents of theconda.exe
application (we know this at build time). Then folks can install their plugins there. To be seen: how to handle conda updates + plugins.Checklist - did you ...
news
directory (using the template) for the next release's release notes?