Skip to content
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

Conda-based Installer Parent Issue #20001

Open
15 of 16 tasks
mrclary opened this issue Nov 7, 2022 · 22 comments
Open
15 of 16 tasks

Conda-based Installer Parent Issue #20001

mrclary opened this issue Nov 7, 2022 · 22 comments
Assignees
Milestone

Comments

@mrclary
Copy link
Contributor

mrclary commented Nov 7, 2022

This issue is intended to capture discussions related to the development of the conda-based standalone Spyder installers post release of Spyder 5.4.0.

This description will aim to capture the up-to-date status of the development strategy resulting from a consensus of comments. Bug fixes and explicit tasks should be reported in a separate issue and PR.

Outstanding Questions, Ideas, & Proposals

  1. Update the Spyder conda installation as follows:
    • Make the root conda environment the Spyder runtime environment
    • Name the root conda environment directory spyder-X.X with major and minor version only
    • The root environment will support all bug fix releases within the minor release, and can be updated via conda-forge
    • New minor and major releases will require downloading a new installer.
  2. Update the Spyder conda installation as follows:
    • Make the root conda environment the Spyder runtime environment
    • Name the root conda environment directory spyder-X with major version only
    • The root environment will support all bug fix and feature releases, and can be updated via conda-forge
    • New major releases will require downloading a new installer.
  3. All updates, including those requiring new installer, can be managed by Spyder's update manager

To Implement

@mrclary mrclary self-assigned this Nov 7, 2022
@ccordoba12
Copy link
Member

ccordoba12 commented Nov 12, 2022

I have one comment about this: I think the strategy of using git shallow clones in our subrepo conda recipes doesn't work when developers sync the subrepos to a branch in their forks (I saw that in the CIs of PR #19992 yesterday although it's not visible anymore because of a rebase).

That's because developers usually don't care to push tags to their forks. So I'd suggest to remove shallow clones and clone subrepos in full instead.

@mrclary
Copy link
Contributor Author

mrclary commented Nov 13, 2022

That's because developers usually don't care to push tags to their forks. So I'd suggest to remove shallow clones and clone subrepos in full instead.

Good point. I'll make the change.

@ccordoba12
Copy link
Member

Another problem appeared: The Spyder-kernels patch applied to the recipe used for the installers no longer applies. This is due to conda-forge/spyder-kernels-feedstock#86.

@mrclary
Copy link
Contributor Author

mrclary commented Nov 13, 2022

Another problem appeared: The Spyder-kernels patch applied to the recipe used for the installers no longer applies. This is due to conda-forge/spyder-kernels-feedstock#86.

Thanks for giving me the heads up. I'll update the patch for building spyder-kernels. Also, since it is now noarch, it can be built in parallel with the other noarch dependencies; I'll update the workflow to accommodate.

@ccordoba12
Copy link
Member

Another suggestion: Could we only build the Intel app in PRs for Mac? That should be enough, given that it can run on M1/M2 chips, right?

The thing is we only have 5 Mac slots for the entire organization, and right now we're using more than that on every PR here, which slows down development in other projects.

@mrclary
Copy link
Contributor Author

mrclary commented Nov 15, 2022

Another suggestion: Could we only build the Intel app in PRs for Mac? That should be enough, given that it can run on M1/M2 chips, right?

The thing is we only have 5 Mac slots for the entire organization, and right now we're using more than that on every PR here, which slows down development in other projects.

Sure thing. I'll remove arm64 from the build matrix.

@dalthviz
Copy link
Member

dalthviz commented Feb 8, 2023

Some notes regarding missing things or behaviors after reviewing the conda-based installer (for Windows) generated by #20368 that probably we will need to check:

  • Add a way to open files from the Windows Explorer:

edit

  • Prevent showing a cmd window when launching Spyder from the installer shorcut:

image

  • Add a way to prompt for an uninstall if the installer is run and Spyder is detected as installed (currently it shows a warning but only if the installer selected installation path is the same as the old installation):

image

  • Not totally sure if some of the options the installer shows should be available (like adding Spyder to the PATH):

image

  • Add a way to run Spyder after the installation finishes:

image

  • Seems like there is an issue to correctly show the Python version of the default interpreter in the status bar (it shows custom () sometimes):

image

  • The installer messages and the installer name suggest the installer comes with Python 3.10, but checking the about dialog inside Spyder seems like is Python 3.9:

image

Also, probably we need to check the way the installation method is marked so the conda-based standalone installers are not marked as conda but conda-based or standalone conda.

Maybe most of these things can be done with pre/post install/uninstall scripts and/or menuinst @mrclary ? Also, is there maybe is there a way to pass to constructor a template for NSIS to be able to reuse the logic of the old installer?

@mrclary
Copy link
Contributor Author

mrclary commented Feb 8, 2023

@dalthviz, thanks for all the observations. I don't see any issues implementing your suggestions.
Regarding the old installer logic, I'm not sure what that is. Perhaps we can review it at the developer meeting and I can see if it can be incorporated into the constructor; most likely it would be handled by pre/post-install scripts.

@dalthviz
Copy link
Member

dalthviz commented Feb 9, 2023

Regarding the old installer logic, I'm not sure what that is

Is the logic to detect if Spyder is already installed and if it is running, prompt the user to close Spyder, or run the uninstaller and so on (which was done inside a NSIS template with the package that the old installer for Windows used to be build - pynsist).

Anyhow, I guess the way constructor customization works is by the pre/post scripts in general so we will need to figure out how that behavior can be ported to the Windows conda-based installer or even if is worthy to keep those validations or not.

@mrclary
Copy link
Contributor Author

mrclary commented Feb 10, 2023

@dalthviz @ccordoba12, these have been great suggestions/observations. I've tried to capture them all in the OP.

@dalthviz dalthviz added this to the v6.0alpha2 milestone Feb 11, 2023
@mrclary
Copy link
Contributor Author

mrclary commented Mar 8, 2023

@dalthviz, I'm pretty sure that we can use an nsis template. If you can provide one, I'll try to implement it.

@ccordoba12
Copy link
Member

@mrclary, some feedback about the Linux installer after testing the 5.4.3 one:

  • I think it shouldn't offer the option to activate the installer environment in the console (that's the default right now).
  • The spyder and uninstall-spyder aliases are not working for me in the console after installation (I don't know if that has to do with the fact that I selected the option to activate the env I mentioned above).

@ccordoba12
Copy link
Member

ccordoba12 commented Apr 16, 2023

Also, I'd like to ask you to take care of porting the update mechanism that @jsbautista and @dalthviz developed last year to the new installers. We need to make sure that that works as it is now before releasing Spyder 6 and @dalthviz is quite busy migrating the Editor to the new API.

@mrclary
Copy link
Contributor Author

mrclary commented Apr 16, 2023

  • The spyder and uninstall-spyder aliases are not working for me in the console after installation (I don't know if that has to do with the fact that I selected the option to activate the env I mentioned above).

If you open a new terminal tab do the aliases work? Or quit and reopen the terminal application?

@mrclary
Copy link
Contributor Author

mrclary commented Apr 16, 2023

@mrclary, some feedback about the Linux installer after testing the 5.4.3 one:

  • I think it shouldn't offer the option to activate the installer environment in the console (that's the default right now).
  • The spyder and uninstall-spyder aliases are not working for me in the console after installation (I don't know if that has to do with the fact that I selected the option to activate the env I mentioned above).

I'll see if I can fix these in #20827

@ccordoba12
Copy link
Member

If you open a new terminal tab do the aliases work? Or quit and reopen the terminal application?

Nop, they don't.

@joooeey
Copy link

joooeey commented Apr 25, 2023

Is there supposed to be a start menu icon on Linux Mint? According to #20176 it seems this should be the case. I installed into a fresh mamba installation on Linux Mint 20.1. But there's no start menu icon and no spyder-related file in ~/.local/share/applications/.

@mrclary
Copy link
Contributor Author

mrclary commented Apr 25, 2023

I installed into a fresh mamba installation

@joooeey, can you clarify what you mean here? This new conda-based installer should be downloaded and run

$ sh ~/Downloads/EXPERIMENTAL-Spyder-5.4.3-Linux-x86_64.sh

You should find a conda environment installed at ~/.local/Spyder-5.4.3. Creating your own environment and installing Spyder via $ mamba install spyder will not produce application shortcuts.

@joooeey
Copy link

joooeey commented Apr 27, 2023

I used $ mamba install spyder

I'm not interested in downloading experimental versions and I would generally like to use my package manager (mamba because of its dependency resolution speed) for everything. If that doesn't produce a start menu shortcut, so be it, but it's a shame.

@ccordoba12
Copy link
Member

@joooeey, these improvements are only available for our own Linux installer, not for the Spyder conda package, sorry.

@mrclary
Copy link
Contributor Author

mrclary commented Apr 27, 2023

I used $ mamba install spyder

I'm not interested in downloading experimental versions and I would generally like to use my package manager (mamba because of its dependency resolution speed) for everything. If that doesn't produce a start menu shortcut, so be it, but it's a shame.

@joooeey, just to clarify what our "experimental" installer does:

  • It is not an experimental version of Spyder, just the installer is experimental.
  • The installer creates an independent conda (with mamba) environment with Spyder installed. This does not replace any existing conda or mamba installation you may have on your system.
  • An application shortcut is created; ~/.local/share/applications/spyder-spyder.desktop for Linux, ~/Applications/Spyder.app for macOS.
  • Any Python environment, including other conda environments, can still be used for Console environments, just like your traditionally installed Spyder.

@ccordoba12 ccordoba12 modified the milestones: v6.0alpha2, v6.0alpha3 Jun 8, 2023
@ccordoba12
Copy link
Member

@mrclary, a couple of comments after seeing the results of the alpha1 release:

  • We should use Python 3.10 for the installers because it's more performant than 3.9.
  • The arm64 Mac installer was not created by the release workflow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants