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

Use strict #50

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Use strict #50

wants to merge 3 commits into from

Conversation

ocefpaf
Copy link
Member

@ocefpaf ocefpaf commented Mar 7, 2019

We should use the strict channel option in conda-forge since we are recommending it as the preferred way to use the channel. Also, this will act like a good test to see if strict is ready to be the default in conda 4.7.

The rationale behind this is that strict is the only way to install the GIS stack safely at the moment.

There may be problem on Windows due to the lack of scipy. One would expect scipy to be installed from defaults but depending on the dependencies we may get an unsolvable env. (IMO an unsolvable env is not that bad, we should focus our efforts on finding and fixing them.)

See conda-forge/osmnx-feedstock#40 (comment)

@conda-forge-linter
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@isuruf
Copy link
Member

isuruf commented Mar 7, 2019

-1 for this. Entire R stack on Windows relies on defaults' mingw packages

@ocefpaf
Copy link
Member Author

ocefpaf commented Mar 7, 2019

-1 for this. Entire R stack on Windows relies on defaults' mingw packages

Yep. We know. This PR is to start a discussion on how to solve that. Vendor mingw? Never use strict on Windows? Start packaging everything?

@ocefpaf
Copy link
Member Author

ocefpaf commented Mar 7, 2019

@isuruf also note that, if strict channel works as expected, we don't have to do anything b/c the packages that don't exist on conda-forge will be pulled from defaults anyway.

@jjhelmus
Copy link
Contributor

jjhelmus commented Mar 7, 2019

The issue with using strict on Windows is not the missing scipy package but rather the numpy packages in the conda-forge cannot meet the requirements of the scipy package from defaults since they use a different blas implementation, OpenBLAS vs MKL.

@isuruf
Copy link
Member

isuruf commented Mar 7, 2019

Thanks @jjhelmus for the info. conda-forge/blas-feedstock#15 would fix this.

@ocefpaf
Copy link
Member Author

ocefpaf commented Mar 7, 2019

The issue with using strict on Windows is not the missing scipy package but rather the numpy packages in the conda-forge cannot meet the requirements of the scipy package from defaults since they use a different blas implementation, OpenBLAS vs MKL.

That is what I thought but it does boil down to a missing scipy (with conda-forge deps 😄).

BTW, I made a few tests trying to get a single package from the second channel using strict and virtually all of them, except the scipy/openblas windows problem, worked out just fine. One example is getting altair, whch does not exist in defaults, by adding conda-forge as the second channel and activating strict. The installation works as expected by getting everything from defaults but altair.

In light of that I do believe we should start using strict globally. Any issue we face are probably "fixable" by adding missing packages and or adding variants with the same deps as defaults.

@CJ-Wright
Copy link
Member

My understanding that the issues with windows and strict are also somewhat broken without strict, as they cause large scale movement to defaults which might not be compatible. This just makes this brokenness more obvious. Is this correct?

@ocefpaf
Copy link
Member Author

ocefpaf commented Mar 17, 2019

@isuruf would you be OK to not use strict on Windows until we fix our blas/numpy/scipy situation there but use it for Linux and macOS? It would really help those installing packages that have many dependencies, like gdal. (Which is currently broken for macOS thanks to mixing of packages.)

@scopatz
Copy link
Member

scopatz commented Mar 18, 2019

I think strict for mac and linux at this point in time makes a lot of sense. If we have to hold off on windows that's OK.

@ocefpaf
Copy link
Member Author

ocefpaf commented Mar 18, 2019

I think strict for mac and linux at this point in time makes a lot of sense. If we have to hold off on windows that's OK.

Actually, thanks to @isuruf I guess we'll be able to do it on Windows too. The problem we are hitting now is conda-forge/gdal-feedstock#270 (comment)

@scopatz
Copy link
Member

scopatz commented Mar 18, 2019

Should this be merged then?

@isuruf
Copy link
Member

isuruf commented Mar 18, 2019

On windows, we should wait for the BLAS migrator to finish. (It's only numpy that I have migrated manually)

@ocefpaf
Copy link
Member Author

ocefpaf commented Apr 25, 2019

On windows, we should wait for the BLAS migrator to finish. (It's only numpy that I have migrated manually)

Thanks for that info @isuruf. I'll follow the BLAS migration closer and see if there are any PRs I can unblock.

PS: I foresee a few issues that will rise when we do this, for example, I could not start a qt build with strict enabled om Windows. We should identify these issues and fix them before conda 4.7 lands.

@ocefpaf
Copy link
Member Author

ocefpaf commented Jun 1, 2019

An example where this is needed now: conda-forge/blas-feedstock#32

@borupdaniel
Copy link

borupdaniel commented Jul 11, 2019

Not sure if you're collecting examples where this is needed, but please feel free to delete this comment if not. Strict priority was required to successfully build/test with linux and qt5.6 in conda-forge/gpi-feedstock#5.

@@ -8,6 +8,7 @@ set PYTHONUNBUFFERED=1
conda.exe config --set show_channel_urls true
conda.exe config --set auto_update_conda false
conda.exe config --set add_pip_as_python_dependency false
conda.exe config --set channel_priority strict
Copy link
Member

Choose a reason for hiding this comment

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

If we got rid of this for the moment, it would probably be OK

Copy link
Member

Choose a reason for hiding this comment

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

No, osx has issues with libcxx as well.

Copy link
Member Author

@ocefpaf ocefpaf Jul 22, 2019

Choose a reason for hiding this comment

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

No, osx has issues with libcxx as well.

That is "fixed" with the choice of vendorizing the old libcxx and may be solved for good with conda/conda#8961.

Copy link
Member

Choose a reason for hiding this comment

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

That's a terrible fix as I mentioned in another issue that I will revert soon. Correct fix is AnacondaRecipes/aggregate#162

Copy link
Member Author

Choose a reason for hiding this comment

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

If we got rid of this for the moment, it would probably be OK

Can you elaborate why @scopatz? If we can list the foreseeable issues on Windows I can start working on them. (BTW, I've been using strict on Windows and Linux for a while now with more success than macOS, which should also be OK-ish now.)

@minrk
Copy link
Member

minrk commented Jul 22, 2019

See conda/conda#8960 for one possible proposal to relax strict priority in the event of exact version requirements not met by the top priority channel, and related issues for repo2docker investigating strict priority (for frozen envs, where the broken label is our problem) and openmpi-mpicxx where compilers coming from defaults and requiring libcxx==4.0.1 which is missing from conda-forge.

@isuruf
Copy link
Member

isuruf commented Jul 22, 2019

libcxx==4.0.1 is broken and getting it from defaults or vendoring it into conda-forge is a terrible idea. Correct fix is at AnacondaRecipes/aggregate#162 if anybody cares to review.

@ocefpaf
Copy link
Member Author

ocefpaf commented Jul 22, 2019

libcxx==4.0.1 is broken and getting it from defaults or vendoring it into conda-forge is a terrible idea. Correct fix is at AnacondaRecipes/aggregate#162 if anybody cares to review.

We are already doing the bad idea ;-p

I'll ping people on AR to see if we can get that merge. Thanks for the ping!

@alimanfoo
Copy link

Not sure it's relevant here, but wanted to mention I'm having problems using strict channel priority and trying to install packages from bioconda and conda-forge: bioconda/bioconda-recipes#17186

@ocefpaf
Copy link
Member Author

ocefpaf commented Sep 3, 2019

Not sure it's relevant here, but wanted to mention I'm having problems using strict channel priority and trying to install packages from bioconda and conda-forge: bioconda/bioconda-recipes#17186

Any issues when using strict are "real" issues we can address. When not using strict you may get a solution but a broken env.

@scopatz
Copy link
Member

scopatz commented Sep 4, 2019

This has conflicts now 😢

@conda-forge-linter
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

I do have some suggestions for making it better though...

For recipe:

  • license_file entry is missing, but is expected.

@ocefpaf
Copy link
Member Author

ocefpaf commented Sep 4, 2019

This has conflicts now

Not anymore!

@scopatz
Copy link
Member

scopatz commented Sep 4, 2019

Are the blocking issues with this resolved yet?

@ocefpaf
Copy link
Member Author

ocefpaf commented Sep 4, 2019

They are not really issues but I would no merge this until more people are on board with the idea.

Copy link

@mwcraig mwcraig left a comment

Choose a reason for hiding this comment

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

I'm on board as long as this is just affecting our build system. I still occasionally hit cases where strict is not what I want.

@ocefpaf
Copy link
Member Author

ocefpaf commented Sep 5, 2019

I'm on board as long as this is just affecting our build system. I still occasionally hit cases where strict is not what I want.

It won't affect user options but it should make it easier to fix those cases when you cannot use strict that you just mentioned. Also, we need to do that before conda 5, when strict will be the default option.

@isuruf isuruf mentioned this pull request Mar 10, 2020
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants