constructor
constructor copied to clipboard
RFC: Undoing constructor / conda-standalone cross "bundling"
constructor relies on a frozen version of conda named conda-standalone. conda-standalone is built off two feedstocks:
- https://github.com/conda-forge/conda-standalone-feedstock
- https://github.com/AnacondaRecipes/conda-standalone-feedstock
We will be syncing both to conda/conda-standalone soon.
conda-standalone is not just a frozen conda. It contains some modifications:
Patches:
noarchentry-points compatibility for Windows:Scripts/conda.exewon't be available in the PyInstaller executable, so we add it ourselves from the conda sources (conda/shell/cli-$ARCH.exe)- Do not conda-activate the wrapped subprocess for Windows; just modify the PATH as needed.
Modified CLI:
- The frozen conda.exe contains a hook to detect whether the CLI is using a
constructorsubcommand (e.g.conda constructor...) and redirects those calls to a bundled_nsis.pyfile.
_nsis.py comes from constructor! It's a helper script to aid Windows installers with some steps, like menu items creation.
Windows' NSIS installers end up using _nsis.py in two different ways:
- Directly, via the bundled Python. This is the reason why
pythonis ALWAYS added to the list of packages in the installer. - Through conda-standalone's
constructorentry point.
The thing is that conda-standalone already features a FULL Python installation inside the frozen executable, so there's no need to force feed Python into the installer again.
My plan is to:
- Move the
_nsis.py(and dependents) toconda/conda-standalone - Replace the direct calls to
_nsis.pywith equivalent functionality throughconda-standalone - Do not require Python in the
baseenvironment anymore, but leaveconda.exein the installation, because it will be needed at uninstall time. - (At some point) Package the
constructorhelpers inconda-standaloneas a conda plugin, so buildingconda-standaloneis less hacky
Thoughts, @conda/constructor?
cc @wolfv - since this might affect the micromamba integrations.
Nice, this sounds like a great plan and should make things much more obvious.