You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A recipe revision distinct from the version: a changed recipe never reaches a machine that holds its version #620
installation_state() (src/core/xim/install_state.cpp:35-80) decides that a package is installed from two signals. One is whether the payload directory <ns>-x-<name>/<version> exists; the other is whether the ledger references it. No recipe revision, build number or payload digest takes part in the decision. Consequently, a recipe that changes what it installs while keeping its version key never reaches a machine that already holds that key. A range request that an installed version satisfies does not upgrade it either.
Instance: xim-pkgindex#884 gave the Qt payloads their runtime closure on Linux (the xim:glibc loader and the dependencies of Qt's libraries), without changing the archives. A CI cache that held the earlier qt-base 6.11.1 payload kept it, and the Qt program failed at run time (libzstd.so.1: cannot open shared object file). The fix could only reach such machines under a new key, 6.11.1.1.
The index already works around this in two ways:
a fourth version segment as a packaging revision: fontconfig 2.15.0.1, libglvnd 1.7.0.1, llvm-dev 20.1.7.1;
a note in pkgs/g/glibc.lua saying that a corrected payload requires a new version.
Both put a packaging fact into the version that consumers write. qt-base 6.11.1.1 is not a Qt release.
A version entry may state revision = N. The install record .xpkg-install.json carries the revision the payload was built from; a record below the recipe's revision reads as not installed, and install replaces the payload in place, stating recipe revision <n>, installed revision <m>.
The replacement parks the old payload under <data>/stale/ and restores it on failure; a marker written before parking lets a later install restore or remove what a killed process left there.
Verified after the release, with the published xlings 2026.9.27.1 inside an xlings subos sandbox (xlings subos use eco-0927 --sandbox --cmd ..., mirror CN) and an isolated XLINGS_HOME:
a fresh xlings install glibc@2.44.3 records "revision": 1;
with the record set to revision 0, as a payload installed before the fix, install printed recipe revision 1, installed revision 0, reinstalled, recorded revision 1 again and left <data>/stale/ empty;
the reinstalled payload lists C.utf8.
The GitHub and GitCode release assets of 2026.9.27.1 were downloaded and matched their sha256 sidecars; the xim index tracks 2026.9.27.1 as latest (openxlings/xim-pkgindex#893).
Activity
feat(model): a version entry's packaging revision (0.0.58)
feat(model): a version entry's packaging revision (0.0.58) (#42)
feat(spec, glibc): version-entry revision; glibc 2.44.3 revision 1 re…
feat(xim): recipe packaging revision and the install_targets record (…
feat(xim): recipe packaging revision and the install_targets record (…
Sunrisepeak commentedon Sep 27, 2026
Resolved in xlings 2026.9.27.1 (#622), with the field in libxpkg 0.0.58 (openxlings/libxpkg#42) and the specification and first recipe in openxlings/xim-pkgindex#892.
revision = N. The install record.xpkg-install.jsoncarries the revision the payload was built from; a record below the recipe's revision reads as not installed, andinstallreplaces the payload in place, statingrecipe revision <n>, installed revision <m>.<data>/stale/and restores it on failure; a marker written before parking lets a laterinstallrestore or remove what a killed process left there.Verified after the release, with the published xlings 2026.9.27.1 inside an xlings subos sandbox (
xlings subos use eco-0927 --sandbox --cmd ..., mirror CN) and an isolatedXLINGS_HOME:xlings install glibc@2.44.3records"revision": 1;installprintedrecipe revision 1, installed revision 0, reinstalled, recorded revision 1 again and left<data>/stale/empty;C.utf8.The GitHub and GitCode release assets of 2026.9.27.1 were downloaded and matched their sha256 sidecars; the xim index tracks 2026.9.27.1 as latest (openxlings/xim-pkgindex#893).