From: Stuart Henderson Subject: drop old quirks To: ports Date: Tue, 11 Aug 2026 09:59:43 +0100 I think we can probably drop quirks for handling direct updates from 7.0/7.1 at this point, any oks/objections? (there are quite a few py->py3, so after this I'm considering cleaning up the relevant PLISTs for conflict/pkgpath markers). Index: Makefile =================================================================== RCS file: /cvs/ports/devel/quirks/Makefile,v diff -u -p -r1.1809 Makefile --- Makefile 8 Aug 2026 20:04:47 -0000 1.1809 +++ Makefile 11 Aug 2026 08:52:57 -0000 @@ -3,7 +3,7 @@ CATEGORIES = devel databases DISTFILES = # API.rev -PKGNAME = quirks-7.216 +PKGNAME = quirks-7.217 PKG_ARCH = * MAINTAINER = Marc Espie Index: files/Quirks.pm =================================================================== RCS file: /cvs/ports/devel/quirks/files/Quirks.pm,v diff -u -p -r1.1823 Quirks.pm --- files/Quirks.pm 8 Aug 2026 20:04:47 -0000 1.1823 +++ files/Quirks.pm 11 Aug 2026 08:52:57 -0000 @@ -64,269 +64,6 @@ my $base_exceptions = { }; my $stem_extensions = { -# 7.0 - 'weboob' => 'woob', - 'py-talloc' => 'py3-talloc', - 'py-tdb' => 'py3-tdb', - 'bijiben' => 'gnome-notes', - 'connections' => 'gnome-connections', - 'py-socketio-client' => 'py3-socketio-client', - 'py-cycler' => 'py3-cycler', - 'py-pyRFC3339' => 'py3-pyRFC3339', - 'py-libarchive-c' => 'py3-libarchive-c', - 'py-minimalmodbus' => 'py3-minimalmodbus', - 'baresip-gtk2' => 'baresip-gtk', - 'py-xlib' => 'py3-xlib', - 'py-neovim' => 'py3-neovim', - 'py-click-log' => 'py3-click-log', - 'py-click-plugins' => 'py3-click-plugins', - 'py-click-threading' => 'py3-click-threading', - 'py-spark-parser' => 'py3-spark-parser', - 'py-xdis' => 'py3-xdis', - 'py-uncompyle6' => 'py3-uncompyle6', - 'py-click' => 'py3-click', - 'py-pyinotify' => 'py3-pyinotify', - 'py-virtualdisplay' => 'py3-virtualdisplay', - 'py-meld3' => 'py3-meld3', - 'py-cryptography_vectors' => 'py3-cryptography_vectors', - 'py-boto' => 'py3-boto3', - 'py3-boto' => 'py3-boto3', - 'py-paramiko' => 'py3-paramiko', - 'py-nxos' => 'py3-nxos', - 'py-scp' => 'py3-scp', - 'py-bcrypt' => 'py3-bcrypt', - 'py-iso8601' => 'py3-iso8601', - 'py-asn1crypto' => 'py3-asn1crypto', - 'py-asn1' => 'py3-asn1', - 'py-snmp' => 'py3-snmp', - 'py-PyNaCl' => 'py3-PyNaCl', - 'py-websocket-client' => 'py3-websocket-client', - 'libmesode' => 'libstrophe', - 'py-stem' => 'py3-stem', -# 7.1 - 'py-jsonschema' => 'py3-jsonschema', - 'py-CherryPy' => 'py3-CherryPy', - 'py-IP' => 'py3-IP', - 'py-PySMT' => 'py3-PySMT', - 'py-aes' => 'py3-aes', - 'py-affine' => 'py3-affine', - 'py-beaker' => 'py3-beaker', - 'py-betamax' => 'py3-betamax', - 'py-bleach' => 'py3-bleach', - 'py-bottle' => 'py3-bottle', - 'py-cached-property' => 'py3-cached-property', - 'py-cheroot' => 'py3-cheroot', - 'py-cookies' => 'py3-cookies', - 'py-country' => 'py3-country', - 'py-coveralls' => 'py3-coveralls', - 'py-curl' => 'py3-curl', - 'py-eapi' => 'py3-eapi', - 'py-fasteners' => 'py3-fasteners', - 'py-feedgenerator' => 'py3-feedgenerator', - 'py-fields' => 'py3-fields', - 'py-formencode' => 'py3-formencode', - 'py-ftpdlib' => 'py3-ftpdlib', - 'py-graphviz' => 'py3-graphviz', - 'py-html5lib' => 'py3-html5lib', - 'py-httplib2' => 'py3-httplib2', - 'py-icalendar' => 'py3-icalendar', - 'py-jinja2' => 'py3-jinja2', - 'py-mako' => 'py3-mako', - 'py-mistune' => 'py3-mistune', - 'py-mpmath' => 'py3-mpmath', - 'py-netaddr' => 'py3-netaddr', - 'py-netifaces' => 'py3-netifaces', - 'py-num2words' => 'py3-num2words', - 'py-objgraph' => 'py3-objgraph', - 'py-paho-mqtt' => 'py3-paho-mqtt', - 'py-parsedatetime' => 'py3-parsedatetime', - 'py-path.py' => 'py3-path.py', - 'py-pcapy' => 'py3-pcapy', - 'py-pf' => 'py3-pf', - 'py-pgpdump' => 'py3-pgpdump', - 'py-polib' => 'py3-polib', - 'py-portend' => 'py3-portend', - 'py-potr' => 'py3-potr', - 'py-prettytable' => 'py3-prettytable', - 'py-pyaml' => 'py3-pyaml', - 'py-pykwalify' => 'py3-pykwalify', - 'py-radix' => 'py3-radix', - 'py-redis' => 'py3-redis', - 'py-repoze-lru' => 'py3-repoze-lru', - 'py-repoze-profile' => 'py3-repoze-profile', - 'py-repoze-who' => 'py3-repoze-who', - 'py-requests-aws4auth' => 'py3-requests-aws4auth', - 'py-requests-futures' => 'py3-requests-futures', - 'py-requests-mock' => 'py3-requests-mock', - 'py-requests-toolbelt' => 'py3-requests-toolbelt', - 'py-rrdtool' => 'py3-rrdtool', - 'py-ruamel.yaml' => 'py3-ruamel.yaml', - 'py-scrypt' => 'py3-scrypt', - 'py-selenium' => 'py3-selenium', - 'py-simplesoap' => 'py3-simplesoap', - 'py-soupsieve' => 'py3-soupsieve', - 'py-spdx' => 'py3-spdx', - 'py-spdx-lookup' => 'py3-spdx-lookup', - 'py-tempita' => 'py3-tempita', - 'py-unidecode' => 'py3-unidecode', - 'py-uritemplate' => 'py3-uritemplate', - 'py-vobject' => 'py3-vobject', - 'py-waitress' => 'py3-waitress', - 'py-webencodings' => 'py3-webencodings', - 'py-xmltodict' => 'py3-xmltodict', - 'py-jaraco-functools' => 'py3-jaraco-functools', - 'py-logilab-common' => 'py3-logilab-common', - 'py-memcached' => 'py3-memcached', - 'py-tempora' => 'py3-tempora', - 'py-redland' => 'py3-redland', - 'py-GitPython' => 'py3-GitPython', - 'py-ICU' => 'py3-ICU', - 'py-MarkupSafe' => 'py3-MarkupSafe', - 'py-PEG2' => 'py3-PEG2', - 'py-PyPDF2' => 'py3-PyPDF2', - 'py-ana' => 'py3-ana', - 'py-anytree' => 'py3-anytree', - 'py-appdirs' => 'py3-appdirs', - 'py-argcomplete' => 'py3-argcomplete', - 'py-argh' => 'py3-argh', - 'py-audio' => 'py3-audio', - 'py-axolotl-curve25519' => 'py3-axolotl-curve25519', - 'py-backcall' => 'py3-backcall', - 'py-biplist' => 'py3-biplist', - 'py-bitstring' => 'py3-bitstring', - 'py-blessings' => 'py3-blessings', - 'py-blist' => 'py3-blist', - 'py-bsddb3' => 'py3-bsddb3', - 'py-cairocffi' => 'py3-cairocffi', - 'py-cffi' => 'py3-cffi', - 'py-characteristic' => 'py3-characteristic', - 'py-cheetah' => 'py3-cheetah', - 'py-clint' => 'py3-clint', - 'py-colored' => 'py3-colored', - 'py-configobj' => 'py3-configobj', - 'py-cooldict' => 'py3-cooldict', - 'py-cssutils' => 'py3-cssutils', - 'py-cstruct' => 'py3-cstruct', - 'py-cymruwhois' => 'py3-cymruwhois', - 'py-daemonize' => 'py3-daemonize', - 'py-decorator' => 'py3-decorator', - 'py-defusedxml' => 'py3-defusedxml', - 'py-demjson' => 'py3-demjson', - 'py-dicttoxml' => 'py3-dicttoxml', - 'py-discid' => 'py3-discid', - 'py-dispatcher' => 'py3-dispatcher', - 'py-dnslib' => 'py3-dnslib', - 'py-docopt' => 'py3-docopt', - 'py-easyprocess' => 'py3-easyprocess', - 'py-entrypoints' => 'py3-entrypoints', - 'py-filebytes' => 'py3-filebytes', - 'py-filelock' => 'py3-filelock', - 'py-flaky' => 'py3-flaky', - 'py-flexmock' => 'py3-flexmock', - 'py-frozendict' => 'py3-frozendict', - 'py-gitdb' => 'py3-gitdb', - 'py-greenlet' => 'py3-greenlet', - 'py-ipython_genutils' => 'py3-ipython_genutils', - 'py-iso3166' => 'py3-iso3166', - 'py-iso639' => 'py3-iso639', - 'py-isodate' => 'py3-isodate', - 'py-isort' => 'py3-isort', - 'py-jellyfish' => 'py3-jellyfish', - 'py-jmespath' => 'py3-jmespath', - 'py-magic' => 'py3-magic', - 'py-markdown' => 'py3-markdown', - 'py-mccabe' => 'py3-mccabe', - 'py-minimock' => 'py3-minimock', - 'py-mox3' => 'py3-mox3', - 'py-msgpack' => 'py3-msgpack', - 'py-munch' => 'py3-munch', - 'py-nose-warnings-filters' => 'py3-nose-warnings-filters', - 'py-nosexcover' => 'py3-nosexcover', - 'py-odbc' => 'py3-odbc', - 'py-olefile' => 'py3-olefile', - 'py-pandocfilters' => 'py3-pandocfilters', - 'py-parallel' => 'py3-parallel', - 'py-pathspec' => 'py3-pathspec', - 'py-pbkdf2' => 'py3-pbkdf2', - 'py-peewee' => 'py3-peewee', - 'py-phonenumbers' => 'py3-phonenumbers', - 'py-pickleshare' => 'py3-pickleshare', - 'py-progress' => 'py3-progress', - 'py-progressbar' => 'py3-progressbar', - 'py-pyprof2calltree' => 'py3-pyprof2calltree', - 'py-pyte' => 'py3-pyte', - 'py-rencode' => 'py3-rencode', - 'py-robotframework' => 'py3-robotframework', - 'py-rfc6555' => 'py3-rfc6555', - 'py-send2trash' => 'py3-send2trash', - 'py-setuptools_scm_git_archive' => 'py3-setuptools_scm_git_archive', - 'py-setuptools_trial' => 'py3-setuptools_trial', - 'py-sh' => 'py3-sh', - 'py-simpleeval' => 'py3-simpleeval', - 'py-simplegeneric' => 'py3-simplegeneric', - 'py-smmap' => 'py3-smmap', - 'py-socks' => 'py3-socks', - 'py-sql' => 'py3-sql', - 'py-stdnum' => 'py3-stdnum', - 'py-straight.plugin' => 'py3-straight.plugin', - 'py-test-expect' => 'py3-test-expect', - 'py-test-forked' => 'py3-test-forked', - 'py-test-relaxed' => 'py3-test-relaxed', - 'py-test-subtesthack' => 'py3-test-subtesthack', - 'py-testpath' => 'py3-testpath', - 'py-tld' => 'py3-tld', - 'py-tox' => 'py3-tox', - 'py-uv' => 'py3-uv', - 'py-vcversioner' => 'py3-vcversioner', - 'py-voluptuous' => 'py3-voluptuous', - 'py-wrapt' => 'py3-wrapt', - 'py-wstools' => 'py3-wstools', - 'py-xcbgen' => 'py3-xcbgen', - 'py-xlsxwriter' => 'py3-xlsxwriter', - 'py-yamllint' => 'py3-yamllint', - 'py-yapf' => 'py3-yapf', - 'py-sqlalchemy' => 'py3-sqlalchemy', - 'py-flup' => 'py3-flup', - 'py-feedparser' => 'py3-feedparser', - 'apertium-af-nl' => 'apertium-afr-nld', - 'apertium-ca-it' => 'apertium-cat-ita', - 'apertium-en-ca' => 'apertium-eng-cat', - 'apertium-es-ast' => 'apertium-spa-ast', - 'apertium-es-ca' => 'apertium-spa-cat', - 'apertium-id-ms' => 'apertium-ind-zlm', - 'apertium-is-en' => 'apertium-isl-eng', - 'apertium-is-sv' => 'apertium-isl-swe', - 'apertium-mk-bg' => 'apertium-mkd-bul', - 'apertium-mk-en' => 'apertium-mkd-eng', - 'apertium-pt-ca' => 'apertium-por-cat', - 'pinentry-gtk2' => 'pinentry-gnome3', - 'sxiv' => 'nsxiv', - 'geoclue' => 'geoclue2', - 'py-extras' => 'py3-extras', - 'py-fixtures' => 'py3-fixtures', - 'py-pbr' => 'py3-pbr', - 'py-testtools' => 'py3-testtools', - 'py-pyusb' => 'py3-pyusb', - 'py-atomicwrites' => 'py3-atomicwrites', - 'py-attrs' => 'py3-attrs', - 'py-coverage' => 'py3-coverage', - 'py-dateutil' => 'py3-dateutil', - 'py-freezegun' => 'py3-freezegun', - 'py-hypothesis' => 'py3-hypothesis', - 'py-more-itertools' => 'py3-more-itertools', - 'py-pluggy' => 'py3-pluggy', - 'py-py' => 'py3-py', - 'py-test' => 'py3-test', - 'py-test-benchmark' => 'py3-test-benchmark', - 'py-test-cov' => 'py3-test-cov', - 'py-test-mock' => 'py3-test-mock', - 'py-test-runner' => 'py3-test-runner', - 'py-setuptools_scm' => 'py3-setuptools_scm', - 'ssvnc-viewer' => 'tigervnc', - 'py-tz' => 'py3-tz', - 'py-pretend' => 'py3-pretend', - 'py-mock' => 'py3-mock', - 'gmic-qt-krita' => 'krita-gmic-plugin', # 7.2 'tracker-miners' => 'tracker3-miners', 'tracker' => 'tracker3', @@ -553,215 +290,6 @@ sub setup_obsolete_reason # want to put regexps as well in there (see the terraform or hs entries # for instance) setup_obsolete_reason( -# 7.0 - 3 => qr{^ruby26-}, - 3 => 'mailpile', - 7 => 'p5-Geo-GDAL', - 3 => 'gnome-latex', - 3 => 'p5-Puppet-Tidy', - 6 => 'kf5-icons-baloo', - 3 => 'canto', - 6 => 'py-mini-amf', - 6 => 'py3-mini-amf', - 9 => 'qucs-s', - 3 => 'qt4', - 3 => 'qt4-examples', - 3 => 'qt4-html', - 3 => 'qt4-mysql', - 3 => 'qt4-postgresql', - 3 => 'qt4-sqlite2', - 3 => 'qt4-tds', - 1 => 'antlr3', - 6 => 'enigmail', - 6 => 'enigmail-seamonkey', - 4 => 'google-compute-engine', - 3 => 'bzr', - 3 => 'bzr-svn', - 6 => 'libvstr', -# 7.1 - 0 => 'cue', - 13 => 'py-SOAPpy', - 13 => 'py-ao', - 13 => 'py-backports-abc', - 13 => 'py-backports-functools-lru-cache', - 13 => 'py-backports-lzma', - 13 => 'py-backports-shutil-get-terminal-size', - 13 => 'py-backports-ssl-match-hostname', - 13 => 'py-binplist', - 13 => 'py-bytecodeassembler', - 13 => 'py-cddb', - 13 => 'py-editdist', - 13 => 'py-efilter', - 13 => 'py-faulthandler', - 13 => 'py-fpconst', - 13 => 'py-functools32', - 13 => 'py-gdata', - 13 => 'py-guppy', - 13 => 'py-hachoir-core', - 13 => 'py-hachoir-metadata', - 13 => 'py-hachoir-parser', - 13 => 'py-jonpy', - 13 => 'py-jsonrpclib', - 13 => 'py-lzo', - 13 => 'py-milter', - 13 => 'py-monotonic', - 13 => 'py-mox', - 13 => 'py-mxDateTime', - 13 => 'py-pdf', - 13 => 'py-pyro', - 13 => 'py-pysha3', - 13 => 'py-python2-pythondialog', - 13 => 'py-recaptcha-client', - 13 => 'py-ruamel.ordereddict', - 13 => 'py-singledispatch', - 13 => 'py-storm', - 13 => 'py-subprocess32', - 13 => 'py-sybase', - 13 => 'py-symboltype', - 13 => 'py-xmlrunner', - 13 => 'py-xmpppy', - 13 => 'py-yenc', - 13 => 'py-zsi', - 3 => 'tilecache', - 13 => 'py-configparser', - 13 => 'py-decoratortools', - 13 => 'py-paste', - 13 => 'py-paste-deploy', - 13 => 'py-paste-script', - 13 => 'py-selectors2', - 13 => 'py-wsgiutils', - 13 => 'py-xml', - 13 => 'py-backports', - 3 => 'ORBit2', - 3 => 'libbonobo', - 3 => 'libgnome', - 3 => 'mono-gnome', - 3 => 'libbonoboui', - 3 => 'libgnomeui', - 3 => 'gtetrinet', - 3 => 'gtetrinet-themes', - 3 => 'grhino', - 3 => 'gbrainy', - 3 => 'gnome-vfs2', - 3 => 'gnome-mime-data', - 3 => 'libIDL', - 3 => 'chemical-mime-data', - 3 => 'gmfsk', - 13 => 'gmapcatcher', - 3 => 'childsplay', - 6 => 'py-texscythe', - 6 => 'py-sqlalchemy-migrate', - 6 => 'py3-sqlalchemy-migrate', - 13 => 'rawdog', - 13 => 'charm', - 0 => 'ktsuss', - 11 => 'apertium-ht-en', - 7 => 'pear-Auth', - 7 => 'pear-Auth-HTTP', - 7 => 'pear-Auth-SASL', - 7 => 'pear-Cache', - 7 => 'pear-Config', - 7 => 'pear-Console-Table', - 7 => 'pear-Date', - 7 => 'pear-Date-Holidays', - 7 => 'pear-Date-Holidays_Australia', - 7 => 'pear-Date-Holidays_Austria', - 7 => 'pear-Date-Holidays_Brazil', - 7 => 'pear-Date-Holidays_Chile', - 7 => 'pear-Date-Holidays_Croatia', - 7 => 'pear-Date-Holidays_Czech', - 7 => 'pear-Date-Holidays_Denmark', - 7 => 'pear-Date-Holidays_Discordian', - 7 => 'pear-Date-Holidays_EnglandWales', - 7 => 'pear-Date-Holidays_Finland', - 7 => 'pear-Date-Holidays_France', - 7 => 'pear-Date-Holidays_Germany', - 7 => 'pear-Date-Holidays_Iceland', - 7 => 'pear-Date-Holidays_Ireland', - 7 => 'pear-Date-Holidays_Italy', - 7 => 'pear-Date-Holidays_Japan', - 7 => 'pear-Date-Holidays_Netherlands', - 7 => 'pear-Date-Holidays_Norway', - 7 => 'pear-Date-Holidays_PHPdotNet', - 7 => 'pear-Date-Holidays_Portugal', - 7 => 'pear-Date-Holidays_Romania', - 7 => 'pear-Date-Holidays_Russia', - 7 => 'pear-Date-Holidays_SanMarino', - 7 => 'pear-Date-Holidays_Serbia', - 7 => 'pear-Date-Holidays_Slovenia', - 7 => 'pear-Date-Holidays_Spain', - 7 => 'pear-Date-Holidays_Sweden', - 7 => 'pear-Date-Holidays_Turkey', - 7 => 'pear-Date-Holidays_UNO', - 7 => 'pear-Date-Holidays_USA', - 7 => 'pear-Date-Holidays_Ukraine', - 7 => 'pear-Date-Holidays_Venezuela', - 7 => 'pear-File', - 7 => 'pear-File-Find', - 7 => 'pear-HTML-Page2', - 7 => 'pear-HTML-Select', - 7 => 'pear-HTML-Template_IT', - 7 => 'pear-HTTP', - 7 => 'pear-HTTP-Request', - 7 => 'pear-HTTP-WebDAV-Server', - 7 => 'pear-Log', - 7 => 'pear-MIME-Type', - 7 => 'pear-Mail', - 7 => 'pear-Mail-Mime', - 7 => 'pear-Mail-mimeDecode', - 7 => 'pear-Net-DNS', - 7 => 'pear-Net-DNS2', - 7 => 'pear-Net-IDNA2', - 7 => 'pear-Net-IMAP', - 7 => 'pear-Net-IPv4', - 7 => 'pear-Net-IPv6', - 7 => 'pear-Net-LDAP', - 7 => 'pear-Net-LDAP2', - 7 => 'pear-Net-SMTP', - 7 => 'pear-Net-Sieve', - 7 => 'pear-Net-Socket', - 7 => 'pear-Net-URL', - 7 => 'pear-Net-URL2', - 7 => 'pear-Net-URL_Mapper', - 7 => 'pear-SOAP', - 7 => 'pear-Services-Weather', - 7 => 'pear-Services-oEmbed', - 7 => 'pear-System-Command', - 7 => 'pear-Validate', - 7 => 'pear-XML-Parser', - 7 => 'pear-XML-RSS', - 7 => 'pear-XML-Serializer', - 7 => 'pear-XML-Tree', - 3 => 'luacrypto', - 13 => 'skytools', - 13 => 'pgloader', - 7 => 'php-markdown', - 7 => 'php-predis', - 5 => 'virtuoso', - 3 => 'upobsd', - 4 => 'waagent', - 3 => 'slim', - 3 => 'slim-themes', - 5 => 'ocaml-biniou', - 5 => 'ocaml-easy-format', - 5 => 'libdsm', - 8 => 'direvent', - 3 => 'climm', - 13 => 'spe', - 13 => 'py-Checker', - 3 => 'ssvnc', - 11 => 'netshot', - 13 => 'py-contextlib2', - 13 => 'py-linecache2', - 13 => 'py-traceback2', - 13 => 'py-unittest2', - 13 => 'py-pathlib', - 13 => 'py-pathlib2', - 6 => 'py3-pathlib', - 6 => 'py3-pathlib2', - 13 => 'py-ipaddress', - 13 => 'py-scandir', - 3 => 'd-feet', # 7.2 3 => qr{^ruby27-}, 3 => 'gnome-documents', @@ -1109,12 +637,6 @@ setup_obsolete_reason( # these should be pkgnames, there was some hope that pkg_add might later # be able to act on these directly. my $obsolete_suggestion = { -# 7.0 - 'gotweb' => 'gotwebd', - 'compton' => 'picom', - 'qucs-s' => [qw(xschem kicad)], -# 7.1 - 'tilecache' => 'mapproxy', # 7.2 'exa' => 'eza', 'go-bootstrap' => 'go', @@ -1152,7 +674,6 @@ my $obsolete_message = { 5 => "outdated and/or no longer required by other ports", 6 => "no longer useful", 7 => "removed in favor of using the language's package manager", - 8 => "crashes in many different ways at runtime", 9 => "not working correctly", 10 => "other OS suggested, or see https://docs.gotosocial.org/en/latest/advanced/builds/nowasm/", 11 => "no longer packageable",