nvchecker coverage plan for the 79 ?-flagged packages
Research notes for adding .nvchecker.toml files to the 79 packages currently
flagged ? (no upstream-version checker) by scripts/check_for_updates_maintained.sh.
Planning only — no .nvchecker.toml files or PKGBUILD changes were made.
Key nvchecker facts discovered while researching this (confirmed against
lilydjwg/nvchecker upstream source, July 2026):
- There is no dedicated
sourceforgesource type in nvchecker. SourceForge projects have to be checked withsource = "regex"against the project’s RSS feed (https://sourceforge.net/projects/<name>/rss?path=/<name>), which lists every uploaded file. Verified live against the cppcms feed (see below). source = "gitlab"takes ahost = "..."key for self-hosted GitLab, which covers KDE’sinvent.kde.organd other self-hosted instances.source = "github"also takes an optionalhostkey for GitHub Enterprise, anduse_max_tag/use_latest_release/use_max_releasetoggles.source = "git"runsgit ls-remoteagainst any git URL (no API, no host restriction) and returns either all tags, or (withuse_commit = true, optionallybranch = ...) the tip commit of a ref. This is the right tool for VCS-only packages and for non-GitHub/GitLab git servers likecode.qt.io.source = "launchpad"exists (launchpad = "<project>") — good news for the five Launchpad-hosted packages here.source = "ubuntupkg"/source = "debianpkg"exist and query the Launchpad/sources.debian.org package archives directly — useful for packages that are themselves repackaged Debian/Ubuntu archive tarballs.source = "cpan"exists but nothing in this list needs it.- The old
vcssource type has been removed from nvchecker entirely.
KDE Frameworks 5 family (shared release cadence: pkgver 5.116.0 lockstep)
All five share one upstream release cadence (KDE Frameworks) and one source
pattern: https://download.kde.org/stable/frameworks/<major.minor>/<name>-<pkgver>.tar.xz.
Recommended check: self-hosted GitLab tags at invent.kde.org/frameworks/<name>.
- kcontacts5 — KDE Frameworks “Address book API”.
source = "gitlab",gitlab = "frameworks/kcontacts",host = "invent.kde.org",use_max_tag = true. - kdesu5 — KDE Frameworks “su integration”.
gitlab = "frameworks/kdesu", same host/pattern. - kitemmodels5 — KDE Frameworks “Models for Qt Model/View”.
gitlab = "frameworks/kitemmodels". - kplotting5 — KDE Frameworks “Lightweight plotting”.
gitlab = "frameworks/kplotting". - kunitconversion5 — KDE Frameworks “unit conversion”.
gitlab = "frameworks/kunitconversion".
(Repo paths under invent.kde.org/frameworks/* follow KDE’s standard
Frameworks convention; worth a one-time sanity check per repo before writing
the toml, but all five are well-known, actively maintained Frameworks modules.)
KDE PIM / Akonadi family (shared release cadence: “release-service” tarballs)
Nine packages share the KDE PIM / release-service source layout:
https://download.kde.org/stable/release-service/<pkgver>/src/<name>-<pkgver>.tar.xz.
Recommended check: GitLab tags at invent.kde.org/pim/<name>.
- akonadi-contacts5 — Contact management for Akonadi.
gitlab = "pim/akonadi-contacts",host = "invent.kde.org",use_max_tag = true. - akonadi-notes (Qt6 build) — Note handling for Akonadi.
gitlab = "pim/akonadi-notes". - akonadi-notes5 (Qt5 build, same upstream repo, older release branch) — same repo/config as above.
- grantleetheme5 — Grantlee theming for Kontact/KMail.
gitlab = "pim/grantleetheme". - kidentitymanagement5 — KDE PIM identity library.
gitlab = "pim/kidentitymanagement". - kmime5 — Mail message/newsgroup handling.
gitlab = "pim/kmime". - kontactinterface5 — Kontact plugin interface.
gitlab = "pim/kontactinterface". - kpimtextedit5 — PIM-aware textedit widget.
gitlab = "pim/kpimtextedit". - libakonadi5 — Core Akonadi libraries.
gitlab = "pim/akonadi".
Note: akonadi-notes (Qt6) is currently at 24.08.3 while the rest of the
family sits at 23.08.5 — they don’t all bump on exactly the same day, but they
share the same release-service mechanism and repo-naming convention.
KDE Plasma 5 family (shared release cadence: pkgver 5.27.12 lockstep)
Three packages track the Plasma 5 LTS tarball layout at
https://download.kde.org/stable/plasma/<pkgver>/<name>-<pkgver>.tar.xz.
- kdecoration5 — Window-decoration plugin API.
gitlab = "plasma/kdecoration",host = "invent.kde.org",use_max_tag = true. - kscreenlocker5 — Lock-screen library.
gitlab = "plasma/kscreenlocker". - layer-shell-qt5 — Wayland layer-shell Qt bindings.
gitlab = "plasma/layer-shell-qt".
KDE-adjacent standalone libraries (own release cadence, still invent.kde.org)
These are not part of the Frameworks/PIM/Plasma lockstep releases — each has
its own versioning — but all live on KDE’s self-hosted GitLab, so the same
gitlab + host = "invent.kde.org" mechanism applies per-repo.
- kdiagram5 (pkgver 2.8.0) — Business-diagram widgets, standalone KDE lib,
https://download.kde.org/stable/kdiagram/.gitlab = "graphics/kdiagram"(verify exact group path),use_max_tag = true. - kirigami-addons5 (pkgver 0.11.0) — Add-ons for Kirigami. Confirmed repo via PKGBUILD url:
gitlab = "libraries/kirigami-addons",host = "invent.kde.org". - kquickimageeditor5 (pkgver 0.3.0) — QML image-editing components. Confirmed via PKGBUILD url:
gitlab = "libraries/kquickimageeditor". - ktextaddons5 (pkgver 1.5.2) — Text-handling add-ons. Confirmed via PKGBUILD url:
gitlab = "libraries/ktextaddons".
qgpgme-qt5 — not KDE-hosted, but GPG-project-hosted (see GitHub section below)
GitHub release-tag packages (quick wins)
Straightforward: real GitHub repo, real version tags, source = "github" will
just work.
- kchmviewer (pkgver 8.0) — .chm viewer,
github.com/gyunaev/kchmviewer, tags likeRELEASE_8_0.source = "github",github = "gyunaev/kchmviewer",use_max_tag = true. - libvisual (pkgver 0.4.2) — Audio-visualization abstraction lib,
github.com/Libvisual/libvisual, release tags likelibvisual-0.4.2.github = "Libvisual/libvisual",use_max_release = true(or regex-strip thelibvisual-prefix from tag names). - qgpgme-qt5 (pkgver 2.1.0) — Qt5 bindings for GPGme, sourced directly from
github.com/gpg/gpgmeqt(taggpgmeqt-$pkgver), not from a KDE mirror.github = "gpg/gpgmeqt",use_max_tag = true(tag prefixgpgmeqt-needs stripping). - git-wd40 (pkgver 2.55.0) — Fork of git (“git with WD-40 applied”), pinned to a commit in
github.com/Libre-WD-40/git. The fork carries upstream git’s own version tags, sogithub = "Libre-WD-40/git",use_max_tag = trueis a reasonable check (falls back to watching the fork’s tag stream rather than official git.git, which is what’s actually consumed).
GitHub/GitLab VCS commit-or-branch tracking (no versioned releases)
These packages use PKGBUILD pkgver() functions (or hand-maintained
commit pins) rather than tagged releases — nvchecker’s generic git source
(works over plain git ls-remote, no API/host restriction) is the right tool
for all of them.
- modest (pkgver
0.0.6.<commit7>) —github.com/lexborisov/modest.source = "git",git = "https://github.com/lexborisov/modest.git",use_commit = true. - shairplay (pkgver
date.commit7viapkgver()) —github.com/juhovh/shairplay. Same pattern,use_commit = true. - valkyrie-qt6 (pkgver pinned to branch) —
github.com/barsnick/valkyrie, branchvalkyrie-qt5-qt6.use_commit = true,branch = "valkyrie-qt5-qt6". - woz2dsk (pkgver
rN.hashviapkgver()) —github.com/leesaudan2/woz2dsk.use_commit = true(won’t reproduce the exactrN.hashcount format, but will flag new commits, which is the point). - wozzle (pkgver
rN.hashviapkgver()) —github.com/JorjBauer/wozzle. Same as woz2dsk. - subdl (pkgver hardcoded, commit-pinned source, no
pkgver()) —github.com/alexanderwink/subdl.use_commit = trueon the default branch; flags upstream changes even though the maintainer updates pkgver by hand. - qt5-mqtt (pkgver from Qt tag
v5.15.2) —code.qt.io/qt/qtmqtt.git, not GitHub/GitLab-API-backed but a plain git server, so the genericgitsource (tag-listing mode, nouse_commit) works:git = "https://code.qt.io/qt/qtmqtt.git".
mp3splt monorepo family (shared upstream: github.com/mp3splt/mp3splt)
Three packages all pin different commits/tags of the same upstream
monorepo, each building a different subdirectory (libmp3splt, newmp3splt,
mp3splt-gtk) — they’ll always want independent nvchecker entries (different
commit pins) but share one git config shape:
- libmp3splt (pkgver
0.9.3.1519+r5+g<hash>) - mp3splt (pkgver
2.6.3.1519+r2+g<hash>) - mp3splt-gtk (pkgver
0.9.3.1519+r4+g<hash>)
All three: source = "git", git = "https://github.com/mp3splt/mp3splt.git", use_commit = true, branch = "master".
- mimetic (pkgver
0.9.8+r47+g<hash>) — separate upstream,github.com/tat/mimetic. Samegit+use_commit = truepattern, different repo.
Laborejo Software Suite family (Nils Hilbricht, hilbricht.net)
Five packages are all releases of Nils Hilbricht’s “Laborejo Software Suite”,
all published to one flat directory: https://hilbricht.net/downloads/lss/.
Verified live (July 2026) — the directory currently lists exactly the
tarballs these five PKGBUILDs already use, confirming they’re all at the
latest available version right now:
agordejo-0.4.2.tar.gz
laborejo-2.2.2.tar.gz
libcalfbox-lss-1.2.0.tar.xz
patroneo-2.4.1.tar.gz
tembro-0.6.0.tar.gz
The project also has a self-hosted GitLab (git.laborejo.org, referenced by
libcalfbox-lss’s url=), but it did not resolve/respond during this
research (TLS cert mismatch / domain not configured on the host) — treat it as
unreliable and prefer the directory-listing regex instead.
Recommended for all five: source = "regex", url = "https://hilbricht.net/downloads/lss/", regex = "<pkgname>-([\\d.]+)\\.tar\\.(gz|xz)".
- agordejo (0.4.2) — music session manager.
- laborejo (2.2.2) — MIDI sequencer.
- libcalfbox-lss (1.2.0) — realtime MIDI/sampler library, also depended on by the other three.
- patroneo (2.4.1) — pattern-based MIDI sequencer.
- tembro (0.6.0) — sample-based virtual instrument.
Launchpad-hosted packages (quick wins)
nvchecker has a native launchpad source (launchpad = "<project>", queries
api.launchpad.net). All five of these already source from launchpad.net.
- dbmodel / dbmodel-qt4 / dbmodel-qt5 (pkgver 0.3, all three build the same upstream
dbmodelLaunchpad project with different Qt-version patches) —source = "launchpad",launchpad = "dbmodel"for all three (same config, three packages — flag as a shared-upstream group). - trayclock (pkgver 0.3.7) —
launchpad = "trayclock". - vattery (pkgver 0.7.5) —
launchpad = "vattery".
SourceForge-hosted packages (regex on RSS feed — no native sourceforge source)
nvchecker has no dedicated SourceForge source type. The working substitute, verified live against the real cppcms feed:
source = "regex", url = "https://sourceforge.net/projects/<project>/rss?path=/<project>",
regex = "<project>-([\\d.]+)\\.tar\\.(gz|bz2)".
Fetched https://sourceforge.net/projects/cppcms/rss?path=/cppcms directly and
confirmed entries like /cppcms/1.2.1/cppcms-1.2.1.tar.bz2 and beta releases
like cppcms-2.0.0.beta2.tar.bz2 — the regex above naturally skips betas
because .beta2 breaks the immediate \.tar\. match.
- cppcms (1.2.1) — C++ web framework, SourceForge project
cppcms. Confirmed live: latest stable is still 1.2.1 (only 2.0.0-beta releases are newer). Quick win. - cppdb (0.3.1) — SQL connectivity lib, same SourceForge project bucket (
sourceforge.net/projects/cppcms/files/cppdb/) as cppcms — shares upstream project with cppcms, note as a pair. - bochs-gdb-stub (2.8) — x86 PC emulator w/ gdbstub, SourceForge project
bochs— this one is actually actively maintained (2.8 is a 2023 release); best candidate in this group for a real quick win. - obexftp (0.24.2) / openobex (1.7.2) — share the same SourceForge project
openobex(obexftpis a companion tool built againstopenobex). Group as a pair; both use the RSS-regex template above. - espeak (1.48.04) — Text-to-speech, SourceForge project
espeak. Long superseded by theespeak-ngfork but the SF project/regex is still checkable. - hdrecover (0.5) — bad-sector recovery tool, SourceForge project
hdrecover. Ancient (~2007), essentially abandoned but checkable. - libots (0.5.0) — Open Text Summarizer, nominally SourceForge (
libots.sourceforge.net) but the PKGBUILD actually pulls the tarball fromsources.archlinux.org’s historical mirror — verify the SF project page is still live before relying on the RSS trick; may need to fall back to “dead”. - mp3wrap (0.5) — mp3 wrapping tool, SourceForge project
mp3wrap. Abandoned (~2004) but checkable. - ogmrip (1.0.1) — DVD ripping GTK front-end, SourceForge project
ogmrip. Abandoned (~2013) but checkable. - rxvt (2.7.10) — original rxvt (superseded by rxvt-unicode), SourceForge project
rxvt. Frozen but checkable. - setserial (2.17) — serial device config tool, SourceForge project
setserial. Ancient but checkable.
Debian/Ubuntu-archive-hosted packages
nvchecker has native debianpkg/ubuntupkg sources that query the
Debian/Ubuntu package archives directly.
- lockdev (pkgver
1.0.3_1.6) — sourced fromarchive.ubuntu.com/.../universe/l/lockdev/. Genuine quick win:source = "ubuntupkg",ubuntupkg = "lockdev". - nagircbot (pkgver 0.0.33) — sourced from
archive.debian.org(the archived, no-longer-current Debian archive; package was removed from Debian and upstream site is dead —url=is literally/dev/nullin the PKGBUILD).debianpkg/sources.debian.orgalmost certainly won’t find a removed package — treat as dead (see below), not a real quick win despite superficially matching this category.
Plain HTTP/FTP directory-listing packages (regex on index page)
No API, no releases feed — just an old-school Apache/nginx directory index to regex against. Feasibility varies a lot by how alive the upstream still is.
- ii (2.0) — suckless IRC client,
https://dl.suckless.org/tools/ii-2.0.tar.gz.source = "regex",url = "https://dl.suckless.org/tools/",regex = "ii-([\\d.]+)\\.tar\\.gz". suckless projects do cut occasional releases; reasonable quick-ish win. (Alternative:gitsource againstgit://git.suckless.org/iitags.) - ucspi-unix (1.0) — UNIX-socket CLI tools,
http://untroubled.org/ucspi-unix/archive/. Same directory-regex approach; small personal project, unlikely to ever show a new version but mechanically checkable. - xfractint (20.04p16) — fractal generator,
http://www.fractint.org/ftp/current/linux/. Same approach; project does still cut occasional point releases (p16suggests active patch numbering), reasonable candidate. - ncurses5-compat-libs (6.6) — ABI5 compat build of mainline ncurses. Track mainline ncurses releases via regex against
https://invisible-island.net/archives/ncurses/(orhttps://ftp.gnu.org/gnu/ncurses/) directory listing — this is an actively-updated upstream even though this package intentionally freezes the ABI, so it’s a genuinely useful check. - i686-linux-gnu-binutils (2.33.1) — cross-target binutils, pinned old version by design. Upstream GNU binutils is actively released;
source = "regex"againsthttps://ftp.gnu.org/gnu/binutils/directory listing would detect newer releases even though the maintainer may choose not to bump (cross-toolchain pin). - riscv32-elf-gcc (9.3.0) — cross-target GCC, same situation; regex against
https://ftp.gnu.org/gnu/gcc/listing. - riscv32-elf-newlib (3.3.0) — cross-target newlib; regex against
https://sourceware.org/pub/newlib/listing. - libva-vdpau-driver (0.7.4) — old VDPAU backend for VA-API,
https://freedesktop.org/software/vaapi/releases/libva-vdpau-driver/. Directory-listing regex is mechanically possible, but upstream has been dead since ~2012 (superseded by newer VA-API drivers) — low value, see dead-projects note below too.
Dead / frozen / no good automatic check
These are cases where either (a) upstream is confirmed gone/archived/dead, or (b) the package is intentionally frozen at a fixed version forever by design, so an automated “new version available” signal would never fire and isn’t meaningful. Forcing a checker onto these would just be noise.
- autoconf2.13 — GNU’s legacy autoconf 2.1x line; frozen by design (modern autoconf is a completely different 2.7x version series; there will never be a new “2.13.x”). No check needed —
pkgveris permanently 2.13. - python2 — Python 2.7.18 was the final-ever CPython 2 release (EOL declared by PSF in 2020).
pkgverwill never change again; a checker would always confirm “no update,” which is technically true but zero value. - boost-65-compat — intentionally pinned to old Boost 1.65.1 for ABI-compat purposes; the whole point of the package is to not track current Boost. No check meaningful.
- pcmciautils — abandoned upstream (kernel.org project, last release “018” ~2009, superseded by udev/sysfs handling PCMCIA natively). Technically regex-checkable against the kernel.org ftp listing, but no new release has appeared in 15+ years — treat as dead.
- enhanced-ctorrent — ancient BitTorrent client fork (
rahul.net/dholmes/ctorrent/), last real upstream activity well over a decade ago, patches are locally-carried Debian patches, not upstream releases. No upstream release feed exists. - gtkmathview — academic project (
helm.cs.unibo.it), dead since ~2009, no changelog/feed/repo to check against. - libofa — MusicIP’s audio fingerprint library; source is now served from the permanent, read-only “Google Code Archive” mirror (
storage.googleapis.com/google-code-archive-downloads/...) since Google Code shut down in 2016. This is a frozen historical snapshot — there will never be a new version. - libshairport — original GitHub repo (
amejia1/libshairport) was deleted by its author; the PKGBUILD now sources from a private mirror (archlinux32.andreasbaumann.cc) of an old release. No live upstream exists at all. - nagircbot — upstream site explicitly dead (
url=/dev/nullin the PKGBUILD itself), package was removed from Debian, source comes fromarchive.debian.org’s permanent archive of a no-longer-distributed package. No live upstream to check. - t1lib — Adobe Type 1 font rendering lib (
ibiblio.org), no release since ~2010, no discoverable upstream repo or feed. - xdialog — dialog-box GUI tool (
xdialog.free.fr), last release 2005, personal free.fr hosting of uncertain current reachability; effectively abandoned. - yabause-qt5 — Sega Saturn emulator (
yabause.org, tarballs ontuxfamily.net), project abandoned since ~2015 (development moved to successor emulators like Kronos/Mednafen). tuxfamily directory listing is mechanically regex-able but no new release is realistically expected. - libva-vdpau-driver — see directory-listing section above; listed there for mechanical feasibility but functionally dead since ~2012.
- libots — see SourceForge section; functionally likely dead, SF project page needs to be re-verified as still existing before it’s worth a real check.
Quick wins first (add these .nvchecker.tomls first — trivial, verified-working sources)
- cppcms — SourceForge RSS regex, verified live against the actual feed.
- bochs-gdb-stub — SourceForge RSS regex; upstream (bochs) is actively released.
- kchmviewer — plain
githubsource, tag-based. - libvisual — plain
githubsource, tag-based. - qgpgme-qt5 — plain
githubsource (gpg/gpgmeqt), tag-based. - lockdev — native
ubuntupkgsource, exact package-name match. - dbmodel / dbmodel-qt4 / dbmodel-qt5 — native
launchpadsource, one config reused three times. - trayclock, vattery — native
launchpadsource. - agordejo, laborejo, libcalfbox-lss, patroneo, tembro — one shared regex against
hilbricht.net/downloads/lss/, verified live (directory contents currently match all five PKGBUILDs exactly). - kcontacts5, kdesu5, kitemmodels5, kplotting5, kunitconversion5 (KDE Frameworks) and the KDE PIM and KDE Plasma families — mechanically simple once the first
gitlab+host=invent.kde.orgconfig is written and proven, since it’s the same shape repeated ~17 times with just the repo path changing.
Hard / low-value / skip
- Anything in the Dead / frozen / no good automatic check section above (13 packages: autoconf2.13, python2, boost-65-compat, pcmciautils, enhanced-ctorrent, gtkmathview, libofa, libshairport, nagircbot, t1lib, xdialog, yabause-qt5, libva-vdpau-driver) — a checker would either never fire or can’t be built at all. Not worth the maintenance overhead.
- libots — needs manual verification that the SourceForge project page still exists before it’s worth wiring up.
- The mp3splt monorepo family (libmp3splt, mp3splt, mp3splt-gtk) and mimetic —
git+use_commitworks mechanically, but won’t reproduce the exact+rN+g<hash>pkgver scheme these PKGBUILDs use; it’ll flag “there are new commits” without telling you the rightrNcount, so some manual pkgver math is still needed after the alert. - woz2dsk, wozzle, subdl — same caveat as above:
git/use_commitflags new commits but doesn’t reproduce therN.hashpkgver format used by theirpkgver()functions. - The cross-toolchain packages (i686-linux-gnu-binutils, riscv32-elf-gcc, riscv32-elf-newlib) and ncurses5-compat-libs — checkable in principle via GNU/sourceware ftp directory regex, but these packages pin old versions on purpose (target-toolchain compatibility / ABI freeze), so an “update available” signal needs a human to decide whether bumping is even wanted. Lower priority than the quick wins.