-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Build: Add Miniforge3 support to replace deprecated Mambaforge #12647
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
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: humitos <[email protected]>
Co-authored-by: humitos <[email protected]>
Co-authored-by: humitos <[email protected]>
humitos
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot please consider the feedback I provided
Co-authored-by: humitos <[email protected]>
Co-authored-by: humitos <[email protected]>
The build-tool is pre-compiled, so there is no need to unset these. I tested this locally and it worked fine.
humitos
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are pretty close. @copilot take a look at the feedback.
Co-authored-by: humitos <[email protected]>
humitos
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
|
I tested this locally and it worked great! It's ready for review by another human 😄 |
Implementation Complete: Miniforge3 Support (Final)
This PR implements support for Miniforge3 as a replacement for the deprecated Mambaforge in Read the Docs build tools, resolving issue #11690.
Summary of Changes:
✅ 1. Added Miniforge3 Version (
constants_docker.py)miniforge3-25.11→miniforge3-25.11.0-1(latest release)miniforge3-latestalias → points tominiforge3-25.11✅ 2. Configuration Recognition (
config.py)python_interpreterproperty to recognizeminiforge3as conda-basedtool.version.startswith("miniconda") or tool.version.startswith("miniforge")✅ 3. Installation Support (
director.py)✅ 4. Schema & Documentation
schema.jsonwith miniforge3 versions in Python enumv2.rstdocumentation with miniforge3 options✅ 5. Comprehensive Test Coverage (
test_config.py)Technical Implementation:
Miniforge3 support is straightforward because:
Testing:
All changes have been thoroughly tested:
Feedback Addressed:
Ready for Review
This implementation is minimal, focused, and follows the solution outlined in the issue comments. It adds miniforge3 support while maintaining full backward compatibility with existing mambaforge and miniconda installations.
Original prompt
This section details on the original issue you should resolve
<issue_title>Build: retire Mambaforge (deprecated) and replace it with Miniforge3</issue_title>
<issue_description>Hey folks, in the RTD build tools for Python all I can see is Mambaforge
mambaforge-latest- but Mambaforge is being sunsetted, and eventually, retired soon, you folks gonna offer us a Miniforge3 container soon? Cheers muchly 🍺 </issue_description><agent_instructions>Note this is the solution we want to implement: #11690 (comment)</agent_instructions>
Comments on the Issue (you are @copilot in this section)
@stsewd From the repository https://github.com/conda-forge/miniforge<comment_new>@humitos
@valeriupredoi thanks for letting us know about it.
I suppose we should:
miniconda3andmambaforgewarning them they are deprecatedminiforge3as an option forbuild.tools.pythonI quickly check if
miniforge3is supported onasdfand it seems it is:Unfortunately, the work required for this is not trivial and there is a lot of things to do. I'm not sure how we will prioritize it.</comment_new>
<comment_new>@humitos
I have one question here: is
miniconda3the same asminiforge3? if they are the same, should we only keep support forminiconda3? if they are different, what are the differences?</comment_new><comment_new>@humitos
OK, I understand they are the same with the difference where they install packages from:
defaultsorconda-forgechannels. I also understand that most of our users are using anenvironment.yamlfile defining thechannelskey --which in the end it doesn't matter if the underlying application isminiconda3orminiforge3.If I'm correct here, I think that adding/keeping support for only one of those is 👍🏼 and either one should be practically the same.</comment_new>
<comment_new>@ericholscher
Is it possible to use
build.jobsto run the proper commands, and then we just don't add support for the new version here? I'd like to avoid the churn, and it seems like folks have been successfully usinguvwith justbuild.jobs.installwithout us having to support anything? </comment_new><comment_new>@humitos
Yeah, I think people could use
build.jobs.pre_create_environmentto install the version of Conda/Mamba they want doing the following:I just checked that and it seems there is an issue in the miniforge3 installer, tho. It fails when installing via
asdfwith ` EnvironmentLocationNotFound: Not a conda environment: /home/docs/checkouts/readthedocs.org/user_builds/...💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.