-
Notifications
You must be signed in to change notification settings - Fork 368
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
New pre-release of numpy breaks an old repository with pinned versions #729
Comments
Don't use
From the Travis logs it seems like Matplotlib is downloaded and installed first, which seems odd because pip should install packages in topological order meaning that NumPy (and any other Matplotlib deps) should be installed first. |
It's related to setup_requires since there's no wheel for matplotlib 1.5.1 which has numpy in setup_requires, which is handled by setuptools (not pip). Since there's no wheel for matplotlib, it's building from source, pulling in numpy during build. At the time it does this, it doesn't know that numpy is topologically before matplotlib (it can't know when building from source, since the install_requires metadata hasn't been determined yet). Since setup_requires and easy_install are deprecated functionality, they've never been fixed to support things like The basic answer is: pinning matplotlib 1.5.1 doesn't work for Python 2.7 unless numpy is installed first, and for packages installed from source at least, Related: pypa/setuptools#917 which proposes PEP 518 as the replacement for setup_requires, but no real plan to fix the deprecated setup_requires to use pip (since it could break other things). |
That all makes sense to me but not sure where it leaves us. Should we open a PR to update the repo's |
So we've been building numpy from source for matplotlib all along but now the version of numpy that gets pulled in for that doesn't work with Python 2 any more which is why we see the failure now? We can't edit the repository because it is a Zenodo record that is immutable. What we could do is take the repo and create a new Zenodo entry where the order in the |
Yes, that's exactly right. This is why truly reproducible builds are hard! |
Since a few days ago our CI started failing for one of the 'frozen in time" repos we use to check if we can still build old images.
The problem is that a new version of numpy was pre-released a few days ago. Since then one of our "check we don't break old repos in the wild" tests is now installing the latest version of numpy, which requires Python 3 but the repo wants Python 2.
The weird thing is that the repository specifies a version of numpy that it would like to install, a Python version and a pinned matplotlib version as well.
This is the end of the trace back we see:
This is while it is trying to install
matplotlib-1.5.1
. It is odd that this is trying to install numpy 1.17 from source instead of 1.10.4 which is what is specified inrequirements.txt
Figuring out why this happens is high priority as it will block all PRs.
The text was updated successfully, but these errors were encountered: