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

Extraction of Python installer into a separate package #995

Open
wants to merge 47 commits into
base: devel
Choose a base branch
from

Conversation

MartinSalinas98
Copy link
Collaborator

@MartinSalinas98 MartinSalinas98 commented Mar 12, 2025

Note: This PR needs to be merged after xmippCore-223 and xmippViz-73.

The new installer is located in this repository.

Changes

This greadtly simplifies the code complexity of the installer in this repository, and allows it to evolve at different rates, being able to fix issues or extend the installer capabilities without relying on making releases of Xmipp.

With that change, comes a new paradigm on how source dependencies are handled in xmipp (xmippViz/xmippCore/scipion-em-xmipp):

  • scipion-em-xmipp will no longer be automatically installed by xmipp. This is because the plugin depends on xmipp, not the other way around, so the plugin must be the one installing xmipp (in production only).
  • xmippCore & xmippViz are still installed by the installer of xmipp, but now, instead of cloning specific fixed versions (for example, v3.24.0), it will do so with a dynamically updated tag pointing to the latest major release of such dependency (for example, v3, which match the content of the latest v3.X.Y release).

New release paradigm

This change enables skipping the release process in sources that don't actually need it, and that it was happening until now because of a simple update in the dependency number. Now that release cascade will only be needed if a major release happens.

Example of how it was until now (with any kind of release):

  • xmippCore, xmippViz, xmipp and scipion-em-xmipp are all in version v3.24.0 initially.
  • xmippCore creates release v3.25.0.
  • xmipp needs to create release v3.25.0 to update the version to be downloaded of xmippCore, from v3.24.0 to v3.25.0.
  • scipion-em-xmipp needs to do the same thing to retrieve the latest release of xmipp.

With the new process (minor or patch release):

  • xmippCore, xmippViz, xmipp and scipion-em-xmipp are all in version v3.24.0 initially.
  • xmippCore creates release v3.25.0.
  • Tag v3 of xmippCore is updated to match the content of tag v3.25.0.
  • xmipp is pointing to release v3, so, whenever a new install is triggered, it will already automatically download the newest version of xmippCore, so no changes are required in xmipp's side.
  • scipion-em-xmipp also does not need to create a new release.

With the new process (major release):

  • xmippCore, xmippViz, xmipp and scipion-em-xmipp are all in version v3.24.0 initially.
  • xmippCore creates release v4.0.0.
  • Tag v4 of xmippCoreis created. It matches the content of tagv4.0.0`.
  • xmipp v3.24.0 is currently pointing at xmippCore v3, so, this version will not be affected by the breaking changes introduced in the v4.0.0 release of xmippCore. To point to that new major release, version v3.24.1 can be created. This new version does not need to be a new major (v4.0.0) since xmipp itself is not breaking any compatibility towards its programs (in other words, scipion-em-xmipp can still use the same xmipp programs without any code changes).
  • When the new v3.24.1 release is created, tag v3 in xmipp will be updated to match its content.
  • scipion-em-xmipp does not need to implement any code changes, and, therefore, no new release is needed.

Conclusion

The improvements described above allow to generate more frequent releases, with new functionality and bug fixes. As the pipeline process of a release only takes ~5-10 minutes combined (adding up release times of all xmipp sources & the plugin), the releases can be as frequent as the development team wants, allowing users to experience almost inmediately the newest develpments and patches, instead of needing to wait ~6 months for each release.

@MartinSalinas98 MartinSalinas98 added the enhancement New feature or request label Mar 12, 2025
@MartinSalinas98 MartinSalinas98 self-assigned this Mar 12, 2025
Copy link
Collaborator

@oierlauzi oierlauzi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not merge yet. I want to have a look to the rest of the PRs

@albertmena
Copy link
Collaborator

Do not merge yet. I want to have a look to the rest of the PRs

Sure, next week I plan to handle all it.

Copy link
Collaborator

@oierlauzi oierlauzi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really nice! Before merging I want to have a look into https://github.com/I2PC/xmipp3-installer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants