riscv64 has packages, but only pkgbase

Yesterday, the logs started complaining about riscv64. Nothing was broken, but it was noisy, and noise hides the stuff that matters.

I worked through this with Claude, which also helped me write this post.

What I saw

Every hour, FreshPorts checks pkg.freebsd.org for new package builds. At 13:00 UTC on 10 October 2026, this showed up:

Oct 10 00:00:57 test-ingress01 get_packagesite.txz_date[77609]: WARNING: unable to fetch https://pkg.freebsd.org/FreeBSD:14:riscv64/latest/meta.conf - using default values.
Oct 10 00:00:57 test-ingress01 get_packagesite.txz_date[77667]: WARNING: unable to fetch https://pkg.freebsd.org/FreeBSD:14:riscv64/quarterly/meta.conf - using default values.
Oct 10 00:01:00 test-ingress01 get_packagesite.txz_date[78454]: WARNING: unable to fetch https://pkg.freebsd.org/FreeBSD:15:riscv64/latest/meta.conf - using default values.
Oct 10 00:01:00 test-ingress01 get_packagesite.txz_date[78566]: WARNING: unable to fetch https://pkg.freebsd.org/FreeBSD:15:riscv64/quarterly/meta.conf - using default values.
Oct 10 00:01:02 test-ingress01 get_packagesite.txz_date[79295]: WARNING: unable to fetch https://pkg.freebsd.org/FreeBSD:16:riscv64/latest/meta.conf - using default values.
Oct 10 00:01:02 test-ingress01 get_packagesite.txz_date[79353]: WARNING: unable to fetch https://pkg.freebsd.org/FreeBSD:16:riscv64/quarterly/meta.conf - using default values.

Three FreeBSD versions, two package sets each: six warnings an hour.

How we got there

The warning comes from fetch-parse-meta.conf in packages-import. Before looking at a repo, it fetches meta.conf to learn whether the repo uses data.pkg or the older packagesite.txz. If that fetch fails, it assumes an older repo and carries on. Some older ABI really have no meta.conf, which is why this is only a warning.

So I asked the obvious question: what is at those URLs? Nothing. Every one of them is a 404. So is https://pkg.freebsd.org/FreeBSD:15:riscv64/ itself.

Then why are we looking for it? FreshPorts does not keep a hand-maintained list of ABI. refresh-abi.sh, in ingress-scripts, gets the list from the front page of pkg.freebsd.org:

fetch -qo - https://pkg.freebsd.org/index.html | \
  grep FreeBSD: | sed -e 's@.*\(FreeBSD:[^ <]*\).*@\1@' | sort

New ABI are added to the abi table, and ABI which have gone away are removed. That is how FreeBSD:16 arrived without me touching anything. Nice, eh?

The front page now says this:

FreeBSD:14:riscv64 (only pkgbase is updated)
FreeBSD:15:riscv64 (only pkgbase is updated)
FreeBSD:16:riscv64 (only pkgbase is updated)

That is the whole story. There are riscv64 builds of the base system (pkgbase), but no builds of the ports tree. No latest, no quarterly. FreshPorts is about ports, so there is nothing there for us. The sed above keeps the ABI name and throws away the note which says so.

The riscv64 entries are new. The page was last modified on 9 October 2026 at 18:01 UTC, the evening before the warnings started. A copy from July 2026 in the Wayback Machine has no riscv64 at all. It does have the powerpc, powerpc64 and powerpc64le ABI, already marked (only pkgbase is updated). Those have the same problem, just less recently.

I went looking for the FreeBSD commit which made this change. I did not find one in the public src, ports or doc repos. The page is maintained by clusteradm. I found the commit message in my clusteradm email.

The fix

One more grep. ABI marked only pkgbase is updated are left out of the list:

#!/bin/sh

# ABI marked "(only pkgbase is updated)" have no ports packages (no latest/quarterly),
# so exclude them - e.g. FreeBSD:15:riscv64

fetch -qo - https://pkg.freebsd.org/index.html | \
  grep FreeBSD: | grep -v 'only pkgbase is updated' | sed -e 's@.*\(FreeBSD:[^ <]*\).*@\1@' | sort

With that, the list goes from 23 ABI to 13:

  • amd64 and aarch64 on 13, 14, 15 and 16
  • armv7 on 14, 15 and 16
  • i386 and armv6 on 14

The next run of refresh-abi.sh removes the ten pkgbase-only ABI from the abi table, and the hourly check stops asking about them. If ports packages for riscv64 or powerpc ever appear, the note will go away, the ABI will be added again, and FreshPorts will start showing those packages. No code changes needed.

This change goes into the next ingress-scripts release. The FAQ shows the old version of this script, and I will update it too.

Website Pin Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google StumbleUpon Premium Responsive

Leave a Comment

Scroll to Top