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

pythonPackages.pillow: 6.2.1 -> 7.1.2 #77714

Merged
merged 3 commits into from Jun 5, 2020
Merged

Conversation

evanjs
Copy link
Member

@evanjs evanjs commented Jan 15, 2020

Motivation for this change

7.1.2 (2020-04-25)
7.1.1 (2020-04-02)
7.1.0 (2020-04-01)
7.0.0 (2020-01-02)

Support for Python 2.7 has been dropped


Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

python -m PIL confirms 7.0.0

--------------------------------------------------------------------
Pillow 7.0.0
Python 3.7.6 (default, Dec 18 2019, 19:23:55)
       [GCC 9.2.0]
--------------------------------------------------------------------
...

This feature was introduced in python-pillow/Pillow#3870, so running python -m PIL before 7.0.0 will print: python3.7: No module named PIL.__main__; 'PIL' is a package and cannot be directly executed

nix-shell -p nixpkgs-review --run "nixpkgs-review wip" passed, but is there anything more in depth I can do to test reverse dependencies or etc?

The only thing I can think of is any libraries that might depend on this but don't require python2.7, etc.

@evanjs evanjs changed the title Pillow 7.0.0 pythonPackages.pillow: 6.2.1 -> 7.0.0 Jan 15, 2020
@ofborg ofborg bot requested a review from cillianderoiste January 15, 2020 02:17
Copy link
Contributor

@jonringer jonringer left a comment

Choose a reason for hiding this comment

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

please also squash the commits

@evanjs
Copy link
Member Author

evanjs commented Jan 15, 2020

@jonringer anything else you can think of?

@jonringer
Copy link
Contributor

no, LGTM. However, it takes forever to nix-review this because of all downstream dependencies

@risicle
Copy link
Contributor

risicle commented Feb 12, 2020

Could someone add the security label to this please? https://nvd.nist.gov/vuln/detail/CVE-2020-5310

@evanjs
Copy link
Member Author

evanjs commented Feb 17, 2020

@jonringer is the nix-review going okay or did I misread your initial statement?

@jonringer
Copy link
Contributor

I think it kept freezing due to nipype halting on python3.8 tests (so the review would never complete). Now this is hitting an error with nix-review

@vcunat
Copy link
Member

vcunat commented Mar 15, 2020

And that is blocking this PR?

@jonringer
Copy link
Contributor

[327 built (33 failed), 1445 copied (8505.5 MiB), 2340.9 MiB DL]
error: build of '/nix/store/i8a4vsfqf4gpx1y334qyg0gw88wvqw7x-env.drv' failed
https://github.com/NixOS/nixpkgs/pull/77714
32 package marked as broken and skipped:
cq-editor invoice2data python37Packages.blaze python37Packages.mezzanine python37Packages.odo python37Packages.psd-tools python37Packages.pygbm python37Packages.pyinsane2 python37Packages.pyro-ppl python37Packages.qasm2image python37Packages.qiskit python37Packages.slicedimage python37Packages.spyder python37Packages.starfish python38Packages.Nikola python38Packages.blaze python38Packages.mezzanine python38Packages.odo python38Packages.psd-tools python38Packages.pygbm python38Packages.pyinsane2 python38Packages.pyro-ppl python38Packages.qasm2image python38Packages.qiskit python38Packages.rainbowstream python38Packages.slicedimage python38Packages.spyder python38Packages.starfish python38Packages.stumpy python38Packages.sunpy spyder vimiv

58 package failed to build:
dvc-with-remotes kicad-unstable python37Packages.arviz python37Packages.baselines python37Packages.dask-jobqueue python37Packages.datashader python37Packages.dftfit python37Packages.django-versatileimagefield python37Packages.dm-sonnet python37Packages.edward python37Packages.graph_nets python37Packages.imbalanced-learn python37Packages.intake python37Packages.lammps-cython python37Packages.optuna python37Packages.pelican python37Packages.persim python37Packages.pytorch python37Packages.ripser python37Packages.rl-coach python37Packages.scikit-tda python37Packages.scrapy python37Packages.streamz python37Packages.stumpy python37Packages.sunpy python37Packages.tensorflow python37Packages.tensorflow-probability python37Packages.tensorflowWithCuda python37Packages.tflearn python37Packages.torchvision python38Packages.apache-airflow python38Packages.arviz python38Packages.baselines python38Packages.dask-jobqueue python38Packages.datashader python38Packages.dftfit python38Packages.django-versatileimagefield python38Packages.dm-sonnet python38Packages.edward python38Packages.graph_nets python38Packages.imbalanced-learn python38Packages.intake python38Packages.lammps-cython python38Packages.optuna python38Packages.pelican python38Packages.persim python38Packages.pytorch python38Packages.pytorchWithCuda python38Packages.ripser python38Packages.rl-coach python38Packages.scikit-tda python38Packages.scrapy python38Packages.streamz python38Packages.tensorflow python38Packages.tensorflow-probability python38Packages.tensorflowWithCuda python38Packages.tflearn python38Packages.torchvision

267 package built:
actdiag almonds apache-airflow aws-google-auth blockdiag buku discover dvc electron-cash electrum electrum-ltc fdroidserver friture fwupd gajim gif-for-cli gitless gnome-firmware-updater gnome-keysign gnome3.gnome-software hocr-tools hplip hplipWithPlugin img2pdf kcc kicad kicad-small kmymoney ledger_agent lollypop lutris lutris-free lutris-unwrapped matrix-synapse mautrix-telegram mavproxy noteshrink noto-fonts-emoji nwdiag ocrmypdf paperless paperwork pysolfc python37Packages.Keras python37Packages.Nikola python37Packages.aafigure python37Packages.aplpy python37Packages.asciimatics python37Packages.ase python37Packages.basemap python37Packages.binwalk python37Packages.blockdiagcontrib-cisco python37Packages.bokeh python37Packages.boltztrap2 python37Packages.caffe python37Packages.cairosvg python37Packages.cartopy python37Packages.clint python37Packages.cnvkit python37Packages.colorcet python37Packages.dask python37Packages.dask-glm python37Packages.dask-image python37Packages.dask-ml python37Packages.dask-mpi python37Packages.dask-xgboost python37Packages.datadog python37Packages.distributed python37Packages.django-sampledatahelper python37Packages.django-simple-captcha python37Packages.django_silk python37Packages.easy-thumbnails python37Packages.face_recognition python37Packages.flask-admin python37Packages.glymur python37Packages.gplaycli python37Packages.handout python37Packages.hdbscan python37Packages.hmmlearn python37Packages.holoviews python37Packages.hvplot python37Packages.image-match python37Packages.imageio python37Packages.imgaug python37Packages.internetarchive python37Packages.keras-preprocessing python37Packages.kmapper python37Packages.labelbox python37Packages.ledgerblue python37Packages.librosa python37Packages.lightgbm python37Packages.mahotas python37Packages.mlrose python37Packages.moderngl-window python37Packages.moviepy python37Packages.nbsmoke python37Packages.nilearn python37Packages.nose_progressive python37Packages.nototools python37Packages.osmnx python37Packages.panel python37Packages.paperwork-backend python37Packages.pdf2image python37Packages.piexif python37Packages.pikepdf python37Packages.pilkit python37Packages.pillow python37Packages.pillowfight python37Packages.pims python37Packages.pyavm python37Packages.pydenticon python37Packages.pyfftw python37Packages.pygal python37Packages.pyocr python37Packages.pyopengl python37Packages.pypillowfight python37Packages.pyqtgraph python37Packages.pyssim python37Packages.pytesseract python37Packages.pytest-mpl python37Packages.python-mapnik python37Packages.pytorchWithCuda python37Packages.qrcode python37Packages.rainbowstream python37Packages.reportlab python37Packages.runway-python python37Packages.scikit-bio python37Packages.scikit-optimize python37Packages.scikitimage python37Packages.scikitlearn seqdiag python37Packages.sklearn-deap python37Packages.sphinxcontrib-blockdiag python37Packages.stytra python37Packages.tensorflow-bin python37Packages.tesserocr python37Packages.textacy ueberzug python37Packages.umap-learn python37Packages.vowpalwabbit python37Packages.weasyprint python37Packages.weboob python37Packages.willow python37Packages.word2vec python37Packages.wxPython_4_0 python37Packages.xgboost python37Packages.xhtml2pdf xml2rfc python38Packages.Keras python38Packages.aafigure python38Packages.actdiag python38Packages.aplpy python38Packages.asciimatics python38Packages.ase python38Packages.basemap python38Packages.binwalk python38Packages.blockdiag python38Packages.blockdiagcontrib-cisco python38Packages.bokeh python38Packages.boltztrap2 python38Packages.caffe python38Packages.cairosvg python38Packages.cartopy python38Packages.clint python38Packages.cnvkit python38Packages.colorcet python38Packages.dask python38Packages.dask-glm python38Packages.dask-image python38Packages.dask-ml python38Packages.dask-mpi python38Packages.dask-xgboost python38Packages.datadog python38Packages.distributed python38Packages.django-sampledatahelper python38Packages.django-simple-captcha python38Packages.django_silk python38Packages.easy-thumbnails python38Packages.face_recognition python38Packages.flask-admin python38Packages.glymur python38Packages.gplaycli python38Packages.handout python38Packages.hdbscan python38Packages.hmmlearn python38Packages.hocr-tools python38Packages.holoviews python38Packages.hvplot python38Packages.image-match python38Packages.imageio python38Packages.imgaug python38Packages.internetarchive python38Packages.keras-preprocessing python38Packages.kmapper python38Packages.labelbox python38Packages.ledger_agent python38Packages.ledgerblue python38Packages.librosa python38Packages.lightgbm python38Packages.mahotas python38Packages.mlrose python38Packages.moderngl-window python38Packages.moviepy python38Packages.nbsmoke python38Packages.nilearn python38Packages.nose_progressive python38Packages.nototools python38Packages.nwdiag python38Packages.osmnx python38Packages.panel python38Packages.paperwork-backend python38Packages.pdf2image python38Packages.piexif python38Packages.pikepdf python38Packages.pilkit python38Packages.pillow python38Packages.pillowfight python38Packages.pims python38Packages.pyavm python38Packages.pydenticon python38Packages.pyfftw python38Packages.pygal python38Packages.pyocr python38Packages.pyopengl python38Packages.pypillowfight python38Packages.pyqtgraph python38Packages.pyssim python38Packages.pytesseract python38Packages.pytest-mpl python38Packages.python-mapnik python38Packages.qrcode python38Packages.reportlab python38Packages.runway-python python38Packages.scikit-bio python38Packages.scikit-optimize python38Packages.scikitimage python38Packages.scikitlearn python38Packages.seqdiag python38Packages.sklearn-deap python38Packages.sphinxcontrib-blockdiag python38Packages.stytra python38Packages.tesserocr python38Packages.textacy python38Packages.ueberzug python38Packages.umap-learn python38Packages.vowpalwabbit python38Packages.weasyprint python38Packages.weboob python38Packages.willow python38Packages.word2vec python38Packages.wxPython_4_0 python38Packages.xgboost python38Packages.xhtml2pdf python38Packages.xml2rfc qutebrowser ranger run-scaled sigal sourcehut.metasrht streamlit tebreak tribler twitter-color-emoji variety video2midi wpgtk xpra

@evanjs
Copy link
Member Author

evanjs commented Mar 20, 2020

Yeesh, quite a few there.

How is this sort of breakage typically addressed?
Just a case-by-case investigation of the affected packages?

@DamienCassou
Copy link
Contributor

Is anyone still working on this issue?

@evanjs
Copy link
Member Author

evanjs commented Apr 7, 2020

I’m happy to do whatever but unsure what needs to be done at this point.

@jonringer
Copy link
Contributor

generally try to mitigate breakages as much as possible

some breakages will be unrelated to your changes, and they can be left broken

@evanjs evanjs mentioned this pull request Apr 10, 2020
10 tasks
@evanjs
Copy link
Member Author

evanjs commented Apr 10, 2020

I'm going to try bumping Pillow and running nix review with the needed changes (#84932) pulled in.

I suspect some packages might need to be locked to python3+, but I'll see what this initial run does, first.

Might not have too much time until finals are over, though I do plan on getting this merged.

@evanjs evanjs changed the title pythonPackages.pillow: 6.2.1 -> 7.0.0 pythonPackages.pillow: 6.2.1 -> 7.1.2 May 3, 2020
@ofborg ofborg bot requested a review from prikhi May 3, 2020 18:16
@evanjs
Copy link
Member Author

evanjs commented May 3, 2020

Anybody have some insight on why some of the image tests are now failing?
(Assuming ofborg will post the results...)

Going to run nix-review with only the failing packages after a full run so it’s easier to parse the errors, and see if I can get a list of packages that are failing explicitly due to this bump.

@FRidh FRidh self-assigned this May 3, 2020
pythonPackages.pillow: drop support for python2.7
- Support for Python 2.7 was removed in Pillow 7.0.0
  - https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst#700-2020-01-02

- use test command from travis build configuration
  - https://github.com/python-pillow/Pillow/blob/1671f6bd71888c1454cd9f0e06dfae5976391984/.ci/test.sh

- add support for jpeg2k, imagequant
add python_magic to propagatedBuildInputs to allow
django-versatileimagefield package to build
apply patch from MIC-DKFZ/batchgenerators#59 to
allow batchgenerators to build with pillow 7.1.2+
@evanjs
Copy link
Member Author

evanjs commented Jun 1, 2020

Updated, rebased, squashed, cleaned, etc.
Sorry for all the noise!

Please let me know if there's anything else you guys can think of!
Thank you!

@bcdarwin
Copy link
Member

bcdarwin commented Jun 2, 2020

nixpkgs-review is hanging on my workstation for some reason (probably unrelated concurrency issue on NFS) but the diff looks good.

@bcdarwin
Copy link
Member

bcdarwin commented Jun 2, 2020

@GrahamcOfBorg build python3Packages.pillow python38Packages.pillow

@evanjs
Copy link
Member Author

evanjs commented Jun 2, 2020

nixpkgs-review is hanging on my workstation for some reason (probably unrelated concurrency issue on NFS) but the diff looks good.

Yeah, I was experiencing issues with the CUDA-based packages, and my only CUDA machine is sorta low on disk space for a nixpkgs-review so I'm not sure what the best approach for those are :D

@jonringer
Copy link
Contributor

apparently 256G of RAM isn't enough to ward off the oom daemon. Had to add another 256G of swap :(

@jonringer
Copy link
Contributor

https://github.com/NixOS/nixpkgs/pull/77714
5 packages marked as broken and skipped:
invoice2data kcc lutris lutris-free lutris-unwrapped

97 packages failed to build:
apache-airflow ib-controller kicad-small kicad-unstable-small ledger_agent ocrmypdf python37Packages.Nikola python37Packages.aplpy python37Packages.aria2p python37Packages.batchgenerators python37Packages.blaze python37Packages.caffe python37Packages.cartopy python37Packages.dask-glm python37Packages.dask-image python37Packages.dask-jobqueue python37Packages.dask-ml python37Packages.dask-xgboost python37Packages.datashader python37Packages.django-raster python37Packages.django-simple-captcha python37Packages.glymur python37Packages.graspy python37Packages.image-match python37Packages.imagecorruptions python37Packages.imbalanced-learn python37Packages.imgaug python37Packages.kicad python37Packages.mask-rcnn python37Packages.odo python37Packages.optuna python37Packages.pelican python37Packages.persim python37Packages.pims python37Packages.psd-tools python37Packages.pygbm python37Packages.pyro-ppl python37Packages.pytorchWithCuda python37Packages.qasm2image python37Packages.qiskit python37Packages.qiskit-aer python37Packages.qiskit-aqua python37Packages.qiskit-ignis python37Packages.ripser python37Packages.rl-coach python37Packages.scikit-tda python37Packages.scikitimage python37Packages.scrapy python37Packages.streamz python37Packages.stumpy python37Packages.stytra python37Packages.sunpy python37Packages.tensorflow-bin python37Packages.tensorflow-bin_2 python37Packages.wordcloud python37Packages.xgboost python38Packages.apache-airflow python38Packages.aplpy python38Packages.aria2p python38Packages.batchgenerators python38Packages.blaze python38Packages.caffe python38Packages.cartopy python38Packages.dask-glm python38Packages.dask-jobqueue python38Packages.dask-ml python38Packages.dask-xgboost python38Packages.datashader python38Packages.django-raster python38Packages.django-simple-captcha python38Packages.graspy python38Packages.imbalanced-learn python38Packages.imgaug python38Packages.kicad python38Packages.ledger_agent python38Packages.odo python38Packages.pelican python38Packages.persim python38Packages.psd-tools python38Packages.pygbm python38Packages.pyro-ppl python38Packages.pytorchWithCuda python38Packages.qasm2image python38Packages.qiskit python38Packages.qiskit-aer python38Packages.qiskit-aqua python38Packages.qiskit-ignis python38Packages.ripser python38Packages.scikit-tda python38Packages.scrapy python38Packages.streamz python38Packages.wordcloud python38Packages.xgboost sourcehut.metasrht streamlit twitter-color-emoji vimiv

308 packages built:
actdiag almonds aws-google-auth bibata-cursors bibata-extra-cursors blockdiag buku colorz cq-editor deluge discover dvc dvc-with-remotes electron-cash electrum electrum-ltc fdroidserver friture fwupd gajim gif-for-cli legit gitless gnome-firmware-updater gnome-keysign gnome3.gnome-software hocr-tools hplip hplipWithPlugin hy img2pdf imgp jellyfin-mpv-shim kmymoney lollypop manim matrix-synapse mautrix-telegram mavproxy mnemosyne noteshrink noto-fonts-emoji nwdiag opentx paperless paperwork pdfarranger pysolfc python37Packages.Keras python37Packages.aafigure python37Packages.arviz python37Packages.asciimatics python37Packages.ase python37Packages.baselines python37Packages.basemap python37Packages.bayesian-optimization python37Packages.binwalk python37Packages.blockdiagcontrib-cisco python37Packages.bokeh python37Packages.boltztrap2 python37Packages.cairosvg python37Packages.clint python37Packages.cnvkit python37Packages.colorcet python37Packages.dask python37Packages.dask-mpi python37Packages.datadog python37Packages.dcmstack python37Packages.dftfit python37Packages.dicom2nifti python37Packages.dipy python37Packages.distributed python37Packages.django-sampledatahelper python37Packages.django-versatileimagefield python37Packages.django_silk python37Packages.dm-sonnet python37Packages.easy-thumbnails python37Packages.edward python37Packages.face_recognition python37Packages.flask-admin python37Packages.gplaycli python37Packages.graph_nets python37Packages.handout python37Packages.hdbscan python37Packages.heudiconv python37Packages.hmmlearn python37Packages.holoviews python37Packages.hvplot python37Packages.ignite python37Packages.imageio python37Packages.intake python37Packages.keras-preprocessing python37Packages.kmapper python37Packages.labelbox python37Packages.lammps-cython python37Packages.ledgerblue python37Packages.librosa python37Packages.lightgbm python37Packages.livelossplot python37Packages.mahotas python37Packages.mlrose python37Packages.moderngl-window python37Packages.moviepy python37Packages.nbsmoke python37Packages.nibabel python37Packages.nilearn python37Packages.nipy python37Packages.nipype python37Packages.nitime python37Packages.nose_progressive python37Packages.nototools python37Packages.osmnx python37Packages.panel python37Packages.paperwork-backend python37Packages.pdf2image python37Packages.piexif python37Packages.pikepdf python37Packages.pilkit python37Packages.pillow python37Packages.pillowfight python37Packages.plexapi python37Packages.privacyidea python37Packages.pyavm python37Packages.pybids python37Packages.pydenticon python37Packages.pydicom python37Packages.pyfftw python37Packages.pygal python37Packages.pymc3 python37Packages.pyocr python37Packages.pyopengl python37Packages.pypillowfight python37Packages.pyqtgraph python37Packages.pyssim python37Packages.pystray python37Packages.pytesseract python37Packages.pytest-mpl python37Packages.python-mapnik python37Packages.pytorch python37Packages.pytorch-metric-learning python37Packages.pywick python37Packages.qiskit-ibmq-provider python37Packages.qiskit-terra python37Packages.qrcode python37Packages.rainbowstream python37Packages.reportlab python37Packages.runway-python python37Packages.scikit-bio python37Packages.scikit-optimize python37Packages.scikitlearn seqdiag python37Packages.sklearn-deap python37Packages.skorch python37Packages.sphinxcontrib-blockdiag spyder python37Packages.spyder_3 python37Packages.tensorflow python37Packages.tensorflow_2 python37Packages.tensorflow-probability python37Packages.tensorflowWithCuda python37Packages.tensorly python37Packages.tesserocr python37Packages.textacy python37Packages.tflearn python37Packages.torchvision ueberzug python37Packages.umap-learn python37Packages.vowpalwabbit python37Packages.weasyprint python37Packages.weboob python37Packages.willow python37Packages.word2vec python37Packages.wxPython_4_0 python37Packages.xhtml2pdf xml2rfc python38Packages.Keras python38Packages.aafigure python38Packages.actdiag python38Packages.asciimatics python38Packages.ase python38Packages.basemap python38Packages.bayesian-optimization python38Packages.binwalk python38Packages.blockdiag python38Packages.blockdiagcontrib-cisco python38Packages.bokeh python38Packages.boltztrap2 python38Packages.cairosvg python38Packages.clint python38Packages.cnvkit python38Packages.colorcet python38Packages.dask python38Packages.dask-image python38Packages.dask-mpi python38Packages.datadog python38Packages.dftfit python38Packages.dicom2nifti python38Packages.dipy python38Packages.distributed python38Packages.django-sampledatahelper python38Packages.django-versatileimagefield python38Packages.django_silk python38Packages.easy-thumbnails python38Packages.face_recognition python38Packages.flask-admin python38Packages.glymur python38Packages.gplaycli python38Packages.handout python38Packages.hdbscan python38Packages.hmmlearn python38Packages.hocr-tools python38Packages.holoviews python38Packages.hvplot python38Packages.ignite python38Packages.image-match python38Packages.imagecorruptions python38Packages.imageio python38Packages.intake python38Packages.keras-preprocessing python38Packages.kmapper python38Packages.labelbox python38Packages.lammps-cython python38Packages.ledgerblue python38Packages.librosa python38Packages.lightgbm python38Packages.livelossplot python38Packages.mahotas python38Packages.mlrose python38Packages.moderngl-window python38Packages.moviepy python38Packages.nbsmoke python38Packages.nibabel python38Packages.nilearn python38Packages.nipy python38Packages.nipype python38Packages.nose_progressive python38Packages.nototools python38Packages.nwdiag python38Packages.osmnx python38Packages.panel python38Packages.paperwork-backend python38Packages.pdf2image python38Packages.piexif python38Packages.pikepdf python38Packages.pilkit python38Packages.pillow python38Packages.pillowfight python38Packages.pims python38Packages.plexapi python38Packages.privacyidea python38Packages.pyavm python38Packages.pybids python38Packages.pydenticon python38Packages.pydicom python38Packages.pyfftw python38Packages.pygal python38Packages.pyocr python38Packages.pyopengl python38Packages.pypillowfight python38Packages.pyqtgraph python38Packages.pyssim python38Packages.pystray python38Packages.pytesseract python38Packages.pytest-mpl python38Packages.python-mapnik python38Packages.pytorch python38Packages.pytorch-metric-learning python38Packages.pywick python38Packages.qiskit-ibmq-provider python38Packages.qiskit-terra python38Packages.qrcode python38Packages.rainbowstream python38Packages.reportlab python38Packages.runway-python python38Packages.scikit-bio python38Packages.scikit-optimize python38Packages.scikitimage python38Packages.scikitlearn python38Packages.seqdiag python38Packages.sklearn-deap python38Packages.skorch python38Packages.sphinxcontrib-blockdiag python38Packages.stytra python38Packages.tensorly python38Packages.tesserocr python38Packages.textacy python38Packages.torchvision python38Packages.ueberzug python38Packages.umap-learn python38Packages.vowpalwabbit python38Packages.weasyprint python38Packages.weboob python38Packages.willow python38Packages.word2vec python38Packages.wxPython_4_0 python38Packages.xhtml2pdf python38Packages.xml2rfc qutebrowser ranger run-scaled sigal tartube tebreak tribler variety video2midi wpgtk xpra

@evanjs
Copy link
Member Author

evanjs commented Jun 3, 2020

Yeahhh that’s what I was seeing, too.
Some of these fail to build in a full nixpkgs-review, but succeed if built individually.

For example, I was able to build batchgenerators locally for both python3.7 and python3.8.


When I went through the nixpkgs-review errors before, most of them seemed to be unrelated to pillow, and the only package remaining that I’m unsure of is pytorch, due to its dependency on pillow.

This is assuming that batchgenerators is fixed with my last patch, which seems to be the case/I am able to build it locally.

I’d be happy to go through the errors for the other packages, but am currently unable to do a full nixpkgs-review on any of my desktops.


@jonringer any chance you could get me the logs folder for that review?

Assuming none of the failing build logs are blank... I was seeing a lot of that in my end

@jonringer
Copy link
Contributor

I'll make a gist when it's complete, but my quick overview was that no failures were specifically from pillow bump (but there's a lot of noise, so can't be 100% sure)

@jonringer
Copy link
Contributor

https://gist.github.com/jonringer/f4acde3d40383d5c6633bb1cc2299ec6 not complete, but most of the failures are there

@evanjs
Copy link
Member Author

evanjs commented Jun 5, 2020

@jonringer
This is from a few weeks ago, but it seems to mostly still apply.
Many of these errors indeed seem unrelated to pillow.

Results from building individual packages
Failers:

-   ib-controller: N/A - uses requireFile
-   python37Packages.aplpy - unrelated (?) test failures
[x] python37Packages.arviz
[x] python37Packages.baselines
[x] python37Packages.batchgenerators - Could not find a version that satisfies the requirement pillow<7.1 (from batchgenerators==0.20.1) (also 0.20.0) ## FIXED with 0c9c0d6feb3005686174d016b8341c2980061ca7
-   python37Packages.blaze - broken
-   python37Packages.caffe - Could not find OpenBLAS
-   python37Packages.dask-jobqueue - failed tests (network-related?)
-   python37Packages.datashader - unrelated test failures (e.g. `w ib-cTypeError: 'float' object is not iterable`)
[x] python37Packages.django-versatileimagefield
[x] python37Packages.dm-sonnet
[x] python37Packages.edward
[x] python37Packages.graph_nets
-   python37Packages.imbalanced-learn - errors encountered in tests (e.g. socket.gaierror: [Errno -2] Name or service not known)
[x] python37Packages.mask-rcnn
-   python37Packages.odo - broken 
-   python37Packages.optuna - Could not find OpenBLAS 
-   python37Packages.pelican - test errors - assert not out, out - test_custom_generation_works - pillow is a dep but pelican is up to date in nixpkgs so either the test failures are unrelated or it"'"s an issue upstream
-   python37Packages.persim - various test errors (e.g. "ValueError: Non-string object detected for the array ordering. Please pass in 'C', 'F', 'A', or 'K' instead")
-   python37Packages.psd-tools - Could not find a version that satisfies the requirement attrs>=19.2.0 (from psd-tools==1.8.35) (from versions: none)
-   python37Packages.pygbm - test errors (e.g. "TypeError: Failed in nopython mode pipeline (step: convert to parfors)")
[x] python37Packages.pymc3
-   python37Packages.pyro-ppl - broken - "Could not find a version that satisfies the requirement pyro-api>=0.1.1 (from pyro-ppl==1.1.0) (from versions: none)"
-   python37Packages.pytorchWithCuda - failed to build (?)
-   python37Packages.ripser - needs persim
-   python37Packages.rl-coach - broken 
-   python37Packages.scikit-tda - needs persim
-   python37Packages.streamz - errors during tests - "TypeError: __new__() got an unexpected keyword argument 'start'"
-   python37Packages.stumpy - errors during tests - "ValueError: tuple is not allowed for map key"
-   python37Packages.sunpy - errors during tests - "RuntimeError: unsupported data type" 
[x] python37Packages.tensorflow (python37Packages.tensorflow-build ,python37Packages.tensorflow-build_1 ,python37Packages.tensorflowWithoutCuda ,python37Packages.tensorflow_1)
-   python37Packages.tensorflow-bin (python37Packages.tensorflow-bin_1) - Could not find a version that satisfies the requirement tensorflow-estimator<1.15.0rc0,>=1.14.0rc0 (from tensorflow==1.14.0) (from versions: none)
[x] python37Packages.tensorflow_2 (python37Packages.tensorflow-build_2)
[x] python37Packages.tensorflow-probability
-   python37Packages.tensorflowWithCuda
[x] python37Packages.tflearn
-   python38Packages.apache-airflow - failed install tests - "sqlite3.OperationalError: no such table: log"
-   python38Packages.aplpy - same errors as python37 package
[x] python38Packages.batchgenerators
-   python38Packages.blaze - py37
-   python38Packages.caffe - py37
-   python38Packages.dask-jobqueue -py37
-   python38Packages.datashader - py37
-   python38Packages.django-raster - failing test - "celery.exceptions.InvalidTaskError: Task keyword arguments is not a mapping"
-   python38Packages.django-versatileimagefield 
"
-   python38Packages.imbalanced-learn - py37
-   python38Packages.odo - py37
-   python38Packages.pelican - py37
-   python38Packages.persim - py37
-   python38Packages.psd-tools - py37
-   python38Packages.pygbm - py37
-   python38Packages.pyro-ppl - py37
-   python38Packages.pytorchWithCuda - py37
-   python38Packages.ripser - py37
-   python38Packages.scikit-tda - py37
-   python38Packages.streamz - py37
-   vimiv - test failure - "ValueError: Namespace Gtk not available"

The only packages I couldn't verify were those depending on tensorflow, specifically pytorch.
The errors that I found did not seem to relate to pillow, as far as I could tell.

If somebody can verify the errors I saw with the tensorflow packages, I think that should cover everything after considering the unrelated errors noted for other python packages.

I'm not sure why these packages would have failed to build in @jonringer's nixpkgs-review execution, however.

@jonringer
Copy link
Contributor

@jonringer
This is from a few weeks ago, but it seems to mostly still apply.
Many of these errors indeed seem unrelated to pillow.
Results from building individual packages

The only packages I couldn't verify were those depending on tensorflow, specifically pytorch.
The errors that I found did not seem to relate to pillow, as far as I could tell.

If somebody can verify the errors I saw with the tensorflow packages, I think that should cover everything after considering the unrelated errors noted for other python packages.

I'm not sure why these packages would have failed to build in @jonringer's nixpkgs-review execution, however.

I'm testing my new 3990X server a built.

Some packages such as bash-completion will fail when giving it NIX_BUILD_CORES=128, but runs fine when lower.

I think this PR is fine as is. We'll just deal with breakages on master

@jonringer jonringer merged commit 4993bad into NixOS:master Jun 5, 2020
@evanjs
Copy link
Member Author

evanjs commented Jun 5, 2020

Thanks @jonringer.

This PR has been driving my anxiety with all the failures for the past few months.

Happy to take a look at things that do end up breaking in master.

It looks like the CVEs only affect <6.2.0, so this can probably wait until 20.09, unless there’s any other reason we should backport.

Thanks guys!

@evanjs evanjs deleted the pillow-7.0.0 branch June 6, 2020 16:09
@evanjs
Copy link
Member Author

evanjs commented Jun 6, 2020

Looks like pytorch and batchgenerators build fine on master with Pillow 7.1.2.

Thanks again for being so thorough, @jonringer!

I do wonder why/if there’s a way we can improve nixpkgs-review in this regard, though.

cc @Mic92

@Mic92
Copy link
Member

Mic92 commented Jun 6, 2020

@jonringer Which part does take so much memory. The evaluation or building? What process do you see in htop when it eats all the RAM?

@evanjs evanjs mentioned this pull request Jun 7, 2020
@jonringer
Copy link
Contributor

@jonringer Which part does take so much memory. The evaluation or building? What process do you see in htop when it eats all the RAM?

It's when doing nixpkgs-review and i believe this causes a rebuild of pytorch, tensorflow, and a few other very heavy packages

@Mic92
Copy link
Member

Mic92 commented Jun 7, 2020

@jonringer Which part does take so much memory. The evaluation or building? What process do you see in htop when it eats all the RAM?

It's when doing nixpkgs-review and i believe this causes a rebuild of pytorch, tensorflow, and a few other very heavy packages

Yes, but can you check what nix command is causing this?

@adisbladis
Copy link
Member

I think this PR was merged prematurely.
Instead of making a fixup PR (#89588) what should have happened is that the changes from that PR should have been incorporated here before merging.

Of course I understand that we all make mistakes, but @evanjs even explicitly stated in the PR body that this broke Python 2.7 compatibility.

@FRidh
Copy link
Member

FRidh commented Jun 8, 2020

I think they have been quite thorough here.

Of course I understand that we all make mistakes, but @evanjs even explicitly stated in the PR body that this broke Python 2.7 compatibility.

Yes, which is EOL. If users need Python 2.7 variants they need to put in the effort to ensure that keeps working. As I wrote on Discourse there is going to be a lot more breakage the coming weeks due to packages dropping Python 2 support.

@Mic92 Mic92 mentioned this pull request Jun 8, 2020
10 tasks
@jonringer
Copy link
Contributor

I think this PR was merged prematurely.
Instead of making a fixup PR (#89588) what should have happened is that the changes from that PR should have been incorporated here before merging.

The PR had been going on for four months.

There was ample time for others to review. It would have been nice to have some help as this is a major version bump, and I felt like it was disingenuous to @evanjs to draw this PR out any longer. He already put forward some effort to fix some issues in downstream packages, and verified that some of the failures I had with my review were able to build successfully if built individually.

Although breakages are never ideal, you can see there is a lot of noise with broken packages currently. So it's hard to determine what was broken before.

Even if the tooling improved with Mic92/nixpkgs-review#85 , it's an issue that it took ~4hrs on my 3990X to complete the review, even then, some packages were erroneously failing either due to too high of NIX_BUILD_CORE (E.g. bash-completion fails with NIX_BUILD_CORE=128) or oom issues even with 256GB of ram + 256GB swap.

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

Successfully merging this pull request may close these issues.

None yet

10 participants