Konrad Hinsen <konrad.hin...@fastmail.net> writes: > I'd say the very first thing we should do is look at all non-Python > packages that depend indirectly on Python 2.
Here comes an update of my Python-2-in-Guix analysis. Sorted output, distinction between likely libraries and likely application packages. Plus the list of Python 2 libraries that something else depends on, with special attention on those who don't currently have a Python 3 equivalent in Guix. Those would be good targets for porting work as well. Cheers, Konrad. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (use-modules (guix packages) (gnu packages) (srfi srfi-1) (ice-9 format)) (define (library-in-python2-ecosystem? package) (string-prefix? "python2" (package-name package))) (define (has-no-python3-equivalent? package) (define python3-name (string-replace (package-name package) "python" 0 7)) (null? (find-packages-by-name python3-name))) (define (dependencies package) (filter package? (map second (package-direct-inputs package)))) (define python2-dependent-packages (fold-packages (lambda (package result) (define deps (dependencies package)) (cond ((library-in-python2-ecosystem? package) result) ((and (not (null? deps)) (every library-in-python2-ecosystem? deps)) (list (cons package (first result)) (second result) (lset-union equal? deps (third result)))) ((any library-in-python2-ecosystem? deps) (list (first result) (cons package (second result)) (lset-union equal? (third result)))) (else result))) '(() () ()))) (define (package-< p1 p2) (or (string<? (package-name p1) (package-name p2)) (and (string=? (package-name p1) (package-name p2)) (string<? (package-version p1) (package-version p2))))) (display "Application packages written in Python 2\n") (display "(all dependencies are Python 2)\n") (display "\n") (for-each (lambda (package) (format #t "~a~%" (package-full-name package))) (sort (first python2-dependent-packages) package-<)) (display "\n") (display "\n") (display "Application packages depending on Python 2\n") (display "(some Python 2 dependencies)\n") (display "\n") (for-each (lambda (package) (format #t "~a~%" (package-full-name package))) (sort (second python2-dependent-packages) package-<)) (display "\n") (display "\n") (display "Python 2 packages on which the above packages depend\n") (display "\n") (for-each (lambda (package) (format #t "~a~a~%" (package-full-name package) (if (has-no-python3-equivalent? package) " (no Python 3 version in Guix)" ""))) (sort (third python2-dependent-packages) package-<)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Output on today's state of Guix: Application packages written in Python 2 (all dependencies are Python 2) alot@0.5.1 android-googletest@1.8.0 bpython2@0.18 chirp@20181205 clipper@1.2.1 cmdtest@0.32 domainfinder@2.0.5 express-beta-diversity@1.0.8 fabric@1.14.0 find-circ@1.2-1.8655dca gess@1.0 git-annex-remote-hubic@0.3.1 googletest@1.8.1 grit@2.0.5 iotop@0.6 key-mon@1.17 lekha@0.2.1 macs@2.1.1.20160309 miniupnpc@2.1.20190824 mlucas@18 nototools@20170925 pagekite@1.0.0.190721 patches@0.0-1.ef1b8a7 pbtranscript-tofu@2.2.3.8f5467f pepr@1.0.9 pootle@2.8.2 postorius@1.0.3 ptpython2@0.34 pulseaudio-dlna@0.5.2-1.4472928 pyicoteo@2.0.7 python-cookies@2.2.1 python-rope@0.11.0 ribodiff@0.2.2 seabios@1.12.1 slingshot@0.9 stapler@0.3.2 taxtastic@0.8.5 tegaki-wagomu-japanese@0.3 tegaki-wagomu-japanese-joyo@0.3 tegaki-wagomu-japanese-kyoiku@0.3 tegaki-wagomu-simplified-chinese@0.3 tegaki-wagomu-traditional-chinese@0.3 tegaki-zinnia-japanese@0.3 tegaki-zinnia-japanese-joyo@0.3 tegaki-zinnia-japanese-kyoiku@0.3 tegaki-zinnia-japanese-light@0.3 tegaki-zinnia-simplified-chinese@0.3 tegaki-zinnia-simplified-chinese-light@0.3 tegaki-zinnia-traditional-chinese@0.3 tegaki-zinnia-traditional-chinese-light@0.3 tryton@4.6.2 woof@2012-05-31 Application packages depending on Python 2 (some Python 2 dependencies) 0ad@0.0.23b-alpha 4store@1.1.6 arachne-pnr@0.0-2-840bdfdeb arandr@0.1.9 asciidoc@8.6.10 atril@1.22.0 audacity@2.3.2 avogadro@1.2.0 bam@0.5.1 bamm@1.7.3 beast@0.10.0 bedtools@2.18.0 bedtools@2.26.0 bedtools@2.27.1 bitlbee@3.5.1 bluefish@2.2.10 boost@1.70.0 boost-static@1.70.0 bubblewrap@0.4.0 calibre@3.42.0 caribou@0.4.21 ceph@13.2.6 childsplay@3.4 cinnamon-desktop@3.4.2 clang@3.5.2 clang@3.6.2 clang@3.7.1 clang@3.8.1 clang@3.9.1 clang@6.0.1 clang@7.0.1 clang@8.0.0 clang@9.0.0 clang-runtime@3.5.2 clang-runtime@3.6.2 clang-runtime@3.7.1 clang-runtime@3.8.1 clang-runtime@3.9.1 clang-runtime@6.0.1 clang-runtime@7.0.1 clang-runtime@8.0.0 clang-runtime@9.0.0 claws-mail@3.17.4 codingquarry@2.0 conkeror@68.2.0-guix0-preview3 coq@8.9.1 couger@1.8.2 crda@3.18 criu@3.11 crossmap@0.2.9 cvs-fast-export@1.45 deja-dup@34.3 deluge@1.3.15 dico@2.9 dot2tex@2.9.0 dtc@1.5.1 duplicity@0.7.19 dvdstyler@3.0.4 emacs-clang-format@8.0.0 emacs-clang-rename@8.0.0 evince@3.34.1 ffmpeg@3.4.6 ffmpeg@4.2.1 filtlong@0.2.0-1.d1bb46d fio@3.14 flann@1.8.4 fraggenescan@1.30 freebayes@1.0.2-1.3ce827d freeorion@0.4.8 gcompris-qt@0.96 gcr@3.28.1 ghc@7.10.2 ghc@8.0.2 ghmm@0.9-rc3-0.2341 gimp@2.10.14 git@2.24.0 git-repo@1.12.37 glade@3.22.1 glusterfs@3.10.12 gn@0.0-1666.6e5ba2e gnome-doc-utils@0.20.10 gnome-keyring@3.28.2 gnubackgammon@1.06.002 gnubg@1.06.002 gnumeric@1.12.46 gnurl@7.63.0 golly@3.2 gourmet@0.17.4 graphene@1.6.0 gtklick@0.6.4 handbrake@1.2.2 hexchat@2.14.2 hoedown@3.0.7 icecat@68.2.0-guix0-preview3 imp@2.6.2 impressive@0.12.0 inkscape@0.92.4 jellyfish@2.2.10 john-the-ripper-jumbo@1.9.0-1 julia@1.1.1 kaldi-gstreamer-server@0-1.1735ba4 keybinder@0.3.1 kfilemetadata@5.55.0 kiki@1.0.2 kiki-the-nano-bot@1.0.2 kodi@18.4 kodi-wayland@18.4 lapack@3.7.1 lash@0.6.0-rc2 lci@0.11.2 ledger@3.1.3 libbigwig@0.4.4 libdbusmenu@16.04.0 libnl@3.5.0 libpqxx@4.0.1 libtorrent-rasterbar@1.1.13 lightdm@1.24.0 lilypond@2.19.80 linkchecker@9.4.0 llvm@3.5.2 llvm@3.6.2 llvm@3.7.1 llvm@3.8.1 llvm@3.9.1 llvm@6.0.1 llvm@7.0.1 llvm@8.0.0 llvm@9.0.0 llvm-for-extempore@3.7.1 makeself-safeextract@0.0.0-1.1a95e12 mate-applets@1.22.0 mate-menus@1.22.0 mcomix@1.2.1 mia@2.4.6 miso@0.5.4 mod-host@0.10.6-3.1726ad06b mongodb@3.4.10 mono@4.4.1.0 mozjs@17.0.0 mozjs@24.2.0 mozjs@38.2.1.rc0 mozjs@52.0-1.6507e63 mozjs@60.2.3-2 nmap@7.80 nmoldyn@3.0.11 node@10.16.0 ocaml-dose3@5.0.1 offlineimap@7.2.4 openbox@3.6.1 openimageio@1.7.19 openimageio@1.8.17 opensmtpd-extras@5.7.1 openvswitch@2.12.0 osm2pgsql@0.96.0 ovmf@20170116-1.13a50a6 ovmf-aarch64@20170116-1.13a50a6 ovmf-arm@20170116-1.13a50a6 parted@3.3 perf@5.3.13 petsc@3.11.2 petsc-complex@3.11.2 petsc-complex-openmpi@3.11.2 petsc-openmpi@3.11.2 pidgin@2.13.0 piranha@1.2.1-1.0466d364b pius@2.2.7 pluma@1.22.0 polybar@3.4.1 poretools@0.6.0-1.e426b1f proteinortho@5.16b pspp@1.2.0 pybitmessage@0.6.3.2 qt@4.8.7 qtbase@5.11.3 qtdeclarative@5.11.3 qtmultimedia@5.11.3 qtwebkit@5.212.0-alpha3 qucs@0.0.19-0.b4f27d9 rapicorn@16.0.0 rdiff-backup@1.2.8 renpy@7.3.5 rhythmbox@3.4.3 rocksdb@5.18.3 rrdtool@1.7.1 rseqc@2.6.1 rubber@1.1 rust@1.20.0 rust@1.21.0 rust@1.22.1 rust@1.23.0 rust@1.24.1 rust@1.25.0 rust@1.26.2 rust@1.27.2 rust@1.28.0 rust@1.29.2 rust@1.30.1 rust@1.31.1 rust@1.32.0 rust@1.33.0 rust@1.34.1 rust@1.35.0 rust@1.36.0 rust@1.37.0 scribus@1.5.5 sdcc@3.7.0 singular@4.1.2p1 slepc@3.11.1 slepc-complex@3.11.1 slepc-complex-openmpi@3.11.1 slepc-openmpi@3.11.1 solfege@3.22.2 sundials@3.1.1 sundials-openmpi@3.1.1 syslinux@6.04-pre-1.bb41e93 tadbit@0.2.0 telepathy-glib@0.24.1 telepathy-idle@0.2.0 telepathy-logger@0.8.2 telepathy-mission-control@5.16.5 terminator@1.91 tetoolkit@2.0.3 texlive-bin@20180414 tophat@2.1.1 tor@0.4.1.6 totem@3.30.0 u-boot-a20-olinuxino-lime@2019.04 u-boot-a20-olinuxino-lime2@2019.04 u-boot-a20-olinuxino-micro@2019.04 u-boot-am335x-boneblack@2019.04 u-boot-am335x-evm@2019.04 u-boot-bananapi-m2-ultra@2019.04 u-boot-cubieboard@2019.04 u-boot-cubietruck@2019.04 u-boot-firefly-rk3399@2019.10 u-boot-malta@2019.04 u-boot-mx6cuboxi@2019.04 u-boot-nintendo-nes-classic-edition@2019.04 u-boot-novena@2019.04 u-boot-pine64-plus@2019.04 u-boot-pinebook@2019.04 u-boot-puma-rk3399@2019.04 u-boot-rock64-rk3328@2019.10 u-boot-rockpro64-rk3399@2019.10 u-boot-tools@2019.04 u-boot-vexpress-ca9x4@2019.04 u-boot-wandboard@2019.04 ungoogled-chromium@78.0.3904.108-0.8f06513 ungoogled-chromium-wayland@78.0.3904.108-0.8f06513 vboot-utils@R63-10032.B vcflib@0.0.0-1.5ac0913 vigra@1.11.1 volk@1.3 wabt@1.0.12 wicd@1.7.4 xcb-util-errors@1.0-1.5d660eb xen@4.11.1 xpra@2.5.3 youtube-dl-gui@0.3.8 zn-poly@0.9.1 zziplib@0.13.69 Python 2 packages on which the above packages depend python2@2.7.16 python2-babel@2.7.0 python2-bcrypt@3.1.7 python2-biopython@1.70 python2-booleanoperations@0.7.1 (no Python 3 version in Guix) python2-bx-python@0.8.2 python2-chardet@3.0.4 python2-cliapp@1.20180812.1 (no Python 3 version in Guix) python2-configobj@5.0.6 python2-coverage-test-runner@1.15 (no Python 3 version in Guix) python2-cssmin@0.2.0 python2-curtsies@0.2.11 python2-cython@0.29.13 python2-dateutil@2.8.0 python2-dbus@1.2.14 python2-decorator@4.3.0 python2-defcon@0.3.5 (no Python 3 version in Guix) python2-dendropy@4.4.0 python2-diff-match-patch@20121119 python2-dirsync@2.2.3 python2-django@1.11.25 python2-django-allauth@0.39.1 python2-django-assets@0.12 python2-django-bulk-update@1.1.10 python2-django-contact-form@1.3 python2-django-contrib-comments@1.8.0 python2-django-jsonfield@1.0.3 python2-django-mailman3@1.1.0 (no Python 3 version in Guix) python2-django-overextends@0.4.3 python2-django-redis@4.10.0 python2-django-rq@1.3.1 python2-django-sortedm2m@1.3.3 python2-django-statici18n@1.3.0 python2-docopt@0.6.2 python2-efl@1.23.0 python2-elasticsearch@6.1.1 python2-factory-boy@2.8.1 python2-fastalite@0.3 python2-fonttools@3.38.0 python2-fudge@0.9.6 python2-futures@3.2.0 (no Python 3 version in Guix) python2-greenlet@0.4.15 python2-h5py@2.8.0 python2-htseq@0.9.1 (no Python 3 version in Guix) python2-jedi@0.15.1 python2-jinja2@2.10.1 python2-levenshtein@0.12.0 python2-libxml2@2.9.9 python2-lxml@4.4.1 python2-magic@0.4.15 python2-mailmanclient@3.1.1 python2-markdown@3.1.1 python2-matplotlib@2.2.4 python2-mmtk@2.7.12 (no Python 3 version in Guix) python2-mock@2.0.0 python2-mysqlclient@1.3.13 python2-netifaces@0.10.7 python2-networkx@2.2 python2-nose@1.3.7 python2-notify2@0.3.1 python2-notmuch@0.29.3 python2-numpy@1.16.5 python2-pandas@0.24.2 python2-paramiko@2.4.2 python2-pbcore@1.2.10 (no Python 3 version in Guix) python2-pillow@6.1.0 python2-prompt-toolkit@2.0.7 python2-protobuf@3.10.0 python2-psutil@5.6.5 python2-psycopg2@2.7.7 python2-pybedtools@0.8.0 python2-pyclipper@1.1.0.post1 python2-pygame@1.9.4 python2-pygments@2.4.2 python2-pygobject@3.28.3 python2-pygpgme@0.3 python2-pygtk@2.24.0 (no Python 3 version in Guix) python2-pynacl@1.3.0 python2-pypdf2@1.26.0 python2-pyroute2@0.5.6 (no Python 3 version in Guix) python2-pysam@0.15.1 python2-pyserial@3.1.1 python2-pytest@4.4.2 python2-pytest-catchlog@1.2.2 python2-pytest-cov@2.6.1 python2-pytest-django@3.1.2 python2-pytz@2019.1 python2-pyxdg@0.25 python2-pyyaml@3.13 python2-rauth@0.7.3 python2-requests@2.22.0 python2-rq@0.13.0 python2-rsvg@2.32.0 (no Python 3 version in Guix) python2-scandir@1.9.0 python2-scikit-learn@0.20.4 python2-scipy@1.2.2 python2-setproctitle@1.1.10 python2-six@1.12.0 python2-socksipychain@2.0.15 python2-sphinx@1.7.7 python2-sqlalchemy@1.3.3 python2-statsmodels@0.9.0 python2-stemming@1.0.1 (no Python 3 version in Guix) python2-swiftclient@2.6.0 python2-tegaki-tools@0.3.1 (no Python 3 version in Guix) python2-translate-toolkit@2.1.0 python2-ttystatus@0.36 (no Python 3 version in Guix) python2-twisted@19.7.0 python2-ufolib@2.1.1 (no Python 3 version in Guix) python2-unittest2@1.1.0 python2-urwid@2.0.1 python2-urwidtrees@1.0.2 python2-xlib@0.14 (no Python 3 version in Guix) python2-zeroconf@0.19.1 (no Python 3 version in Guix)