ci: freebsd: set IGNORE_OSVERSION=yes to survive pkg repo/VM release skew

FreeBSD's official package repo tracks the '14' ABI branch, not the exact
point release pinned for the CI VM (release: "14.3" in
build-xserver.yml). When the repo rolls forward to packages built
against a newer point release, pkg refuses to proceed non-interactively
("repository FreeBSD contains packages for wrong OS version", no TTY
in CI to answer the y/N prompt), so pkg update -f fails every time and
the job never reaches the actual build - currently breaking every
FreeBSD CI run on master and on open PRs alike.

IGNORE_OSVERSION=yes is pkg's own documented escape hatch for exactly
this case; a one-point-release ABI skew is expected to be compatible in
practice. Confirmed via job logs: 'pkg: ... wrong OS version:
FreeBSD:14:amd64' / 'Newer FreeBSD version for package zycore-c:
package: 1404000, running userland: 1403000' immediately precedes the
generic 'pkg update -f' retry-loop failure that was previously
misdiagnosed as a network flake.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2026-07-06 17:43:44 +02:00 committed by Enrico Weigelt
commit aaab164c0e

View file

@ -2,6 +2,18 @@
set -e
# The CI VM's release is pinned (build-xserver.yml: release: "14.3"), but
# FreeBSD's official package repo tracks the "14" ABI branch, not the exact
# point release — when it rolls forward to packages built against a newer
# point release than the pinned VM, pkg refuses to proceed non-interactively
# ("pkg: repository FreeBSD contains packages for wrong OS version" /
# "Ignore the mismatch and continue? [y/N]:", no TTY in CI to answer it).
# IGNORE_OSVERSION=yes is pkg's own documented escape hatch for exactly this
# case; a one-point-release ABI skew is expected to be compatible in
# practice. This does NOT mask a genuine build/test failure — it only lets
# `pkg update`/`pkg install` proceed past the version check.
export IGNORE_OSVERSION=yes
# Retry a command a few times with linear backoff. pkg mirrors flake
# transiently (catalogue refresh / package fetch), and a single network
# hiccup must not abort the whole CI run.