linux-lts515
Build times (auto-updated)
- x86_64: 4h10m (2026-09-04 10:12 UTC)
- pentium4: 2h34m (2026-09-04 17:58 UTC, MAKEFLAGS=-j6)
- i686: 2h57m (2026-09-04 20:55 UTC, MAKEFLAGS=-j6)
- i486: 3h5m (2026-09-05 00:01 UTC, MAKEFLAGS=-j6)
- Path: arch/maintained/linux-lts515
2026-09-04/05: 5.15.219 -> 5.15.220, first build using MAKEFLAGS parallelism + a mid-run resume
Routine point release via update.sh 5.15.220, tarball confirmed on
cdn.kernel.org first. All 4 archs’ config diffs cosmetic-only (just the
version header comment), same pattern as every prior point release.
pkgrel stayed at 1.
Unusual build cycle: this was the first real-world use of two new
features added mid-session (see the project’s own memory/
TOOLING_NOTES.md for full detail) – per-arch build-time recording and
an opt-in MAKEFLAGS parallelism override for local chroot builds.
x86_64 was already mid-build (serial, ~4h in) when both features
landed, so it finished the old way (4h10m, no parallelism label). To
still benefit the remaining 3 archs without wasting the x86_64 progress
already sunk, repo_release.sh’s run was killed cleanly right at the
x86_64 -> pentium4 boundary (SIGTERM to the nspawn process, then
SIGKILL the whole process group; no stale mounts, no orphaned
processes) and resumed as MAKEFLAGS="-j6" REPO_BUILD_ONLY_ARCH="pentium4
i686 i486" repo_build.sh /data/INSTALL/linux-lts515 – calling
repo_build.sh directly, not via repo_build_staged.sh, since that
wrapper unconditionally deletes every *.pkg.tar.* in the staging dir
at the start of each invocation (would have destroyed the already-built
x86_64 package). Artifacts were then copied back into this dir by hand
and signed/published the same way repo_release.sh normally would.
The MAKEFLAGS mechanism needed a real fix mid-flight: the first
resume attempt silently built pentium4 at -j1 anyway – sudo
--preserve-env=MAKEFLAGS alone wasn’t enough, because makechrootpkg’s
own load_makepkg_config() re-sources the host’s /etc/makepkg.conf
internally and doesn’t preserve MAKEFLAGS across that reload. Caught
by grepping the live chroot’s actual baked /etc/makepkg.conf, not by
trusting the sudo/printenv chain. Fixed by having repo_build.sh
generate a scratch copy of the host’s makepkg.conf with MAKEFLAGS
commented out and pointing load_makepkg_config’s own MAKEPKG_CONF
override at it – confirmed working afterward (chroot showed
MAKEFLAGS='-j6', and multiple concurrent cc1 processes observed
live). That pentium4 attempt was killed and restarted once fixed, so
the recorded pentium4/i686/i486 times below are all genuinely at
-j6, not a mix.
Net effect vs. an all-serial run: pentium4/i686/i486 each took
~2.5-3h at -j6 instead of a presumably-similar-to-x86_64 multi-hour
serial time each – a real, if unquantified (no serial baseline exists
for these archs at this kernel version), speedup. All 12 files (3
pkgnames x 4 archs) verified published via direct remote ls, no
connection-failure strings in the full log.
2026-08-29/30: 5.15.217 -> 5.15.219
Routine point release via update.sh 5.15.219, tarball confirmed on
cdn.kernel.org first. All 4 archs’ config diffs cosmetic-only (just
the version header comment). pkgrel stayed at 1 as usual. Built
staged via repo_release.sh (multi-hour wall clock as usual, x86_64
alone taking most of it). All 12 files (3 pkgnames x 4 archs) built,
signed, and published cleanly – confirmed both via a full-log grep
for connection-failure strings (none found, unlike the 2026-08-24
entry below) and directly via repo_arch_status.sh, all 4 archs
showing published (5.15.219-1).
Saw three categories of scary-looking but harmless “Error”/"error”
lines in the log, all from the post-build checkpkg/namcap steps, not
the real package() step: (1) namcap’s own “Checking PKGBUILD” linter
apparently runs the PKGBUILD in some minimal env lacking date/grep
in PATH, producing PKGBUILD: line 41: date: command not found /
“is not a valid PKGBUILD” – but the actual built
linux-lts515-5.15.219-1-x86_64.pkg.tar.zst gets checked right after
with the correct version, so the real package was fine; (2) mkinitcpio
warning “errors were encountered during the build. The image may not
be complete” / “error: command failed to execute correctly” during
checkpkg’s post-install initramfs regeneration, three times (once
per additional local arch) – expected in a disposable build chroot
missing a proper /boot setup, not a real package defect.
2026-08-24: 5.15.216 -> 5.15.217
Routine point release via update.sh 5.15.217, tarball confirmed on
cdn.kernel.org first. Unlike most recent point releases, this one had a
real (non-cosmetic) Kconfig change on the 32-bit archs, not just the
header-comment/toolchain-version diff: CONFIG_CAN_ESD_USB2=m ->
commented out (# CONFIG_CAN_ESD_USB is not set) on config.pentium4
(and presumably i686/i486 too, same config lineage). pkgrel stayed at
1 as usual for a pkgver bump. Built via repo_release.sh
(repo_build_staged.sh staged it under /data/INSTALL/linux-lts515 as
normal) across all 4 archs, all 12 files (3 pkgnames x 4 archs) built,
signed, and published with no failures. x86_64 alone took a genuinely
long time (multi-hour wall clock, mostly module compilation) — confirm
real progress via the live build log under
/var/lib/archbuild/archlinuxaba-x86_64/build/logdest/ and active
cc1/make processes before assuming a long-running build is stuck.
Mid-run SSH outage to the repo host, same failure mode as the
2026-08-01 entry below — euroweb.lan dropped the connection
partway through repo_publish.sh (Connection reset by peer /
Broken pipe / then ssh: connect ... Connection refused for
everything after). Only 5 of 12 files (main pkg x4 archs + docs-i486)
got uploaded before the drop; linux-lts515-docs for
i686/pentium4/x86_64 and all of linux-lts515-headers were still
missing. A grep limited to SIGNED/UPLOADED/ARCHIVED/FAILED
does not catch this — those lines all look normal, the failure only
shows up as Connection reset/Broken pipe/Connection refused/
rsync error further down the same log, and the overall backgrounded
command’s reported exit code was still 0. Always grep a repo-publish
log for those connection-failure strings specifically, and/or verify
the actual remote directory listing (repo_ssh "ls
\"\${REPOSITORY_REMOTE_PATH}/os/<arch>/\"") before declaring a publish
done, not just the tail of the log. Recovery: once the host answered
ping/ssh again, no rebuild needed — the local .pkg.tar.zst/.sig
for the missing files were already good, so re-ran repo_publish.sh
directly on just those 7 files, then confirmed via remote ls that no
5.15.216 entries remained anywhere before cleaning up the local
copies by hand (repo_release.sh’s own cleanup only fires on its
exit code, which had already been consumed/misread once here too).
2026-08-21: 5.15.215 -> 5.15.216, plus a staging-recovery precedent
Routine point release, tarball confirmed on cdn.kernel.org before
running. update.sh 5.15.216 reconciled all 4 archs’ configs
(x86_64/i686/i486/pentium4) cleanly – every diff was cosmetic-only
(just the # Linux/x86 5.15.215/216 Kernel Configuration header
comment), same pattern as every prior point-release update here.
Built the wrong way first: ran build_all_archs.sh directly inside
this arch/maintained/linux-lts515 package dir (in-place) instead of
starting with repo_release.sh/repo_build_staged.sh, which stage the
build under /data/INSTALL/linux-lts515 instead. By the time this was
caught the x86_64 compile was already well underway, so rather than
kill it and restart staged, let it finish (all 4 archs, all 12 files –
3 pkgnames x 4 archs – built successfully), then recovered by
migrating the result into the layout repo_build_staged.sh would have
produced:
- The existing
/data/INSTALL/linux-lts515was stale anyway (last touched 2026-07-05, still at 5.15.211 – three point releases behind). Moved it aside to/data/INSTALL/linux-lts515-oldrather than overwriting it, following the same rotation convention already used forlinux-lts510(-old/-older/-oldest). rsync -a --exclude=.gitfromarch/maintained/linux-lts515/into a fresh/data/INSTALL/linux-lts515/– carries tracked PKGBUILD/patches/configs/keys and the untracked build byproducts (downloaded tarball, the 12 produced*.pkg.tar.zst, per-arch build/package/namcap logs) together.git clean -fdinsidearch/maintained/linux-lts515to drop every untracked byproduct, restoring the tracked tree to exactly its pre-build state (verified viagit status --short– clean).- Signed (
repo_sign.sh) + published (repo_publish.sh) all 12 files straight from the/data/INSTALL/linux-lts515copy. All uploaded cleanly; old 5.15.215 entries archived per-arch as usual. - Left the downloaded tarball/logs sitting in
/data/INSTALL/linux-lts515afterward rather than trying to clean them out by hand – confirmed that staged dir has no working.git(rsync excludes it), sorepo_build.sh’s own post-build cleanup (which is driven bygit status --porcelain) would silently no-op there too even in the normal staged flow. Matches the untouched state the old-olddir was already in from 2026-07-05.
Generalized this 5-step recovery into memory/TOOLING_NOTES.md (search
“Recovering an in-place build”) for any future package caught mid-build
in place instead of staged.
- 2026-08-10: 5.15.213 -> 5.15.215, via
update.sh 5.15.215. Tarball confirmed available on cdn.kernel.org before running (HTTP 200) – no 404 games this time. All 4 archs’ config diffs were cosmetic-only (just the# Linux/x86 5.15.213/215 Kernel Configurationheader comment; no Kconfig changes), consistent with a point-release with no toolchain-visibility-gated option changes. Full builds (sudo extra-<arch>-build, no--nobuild) run detached in ascreensession as usual. x86_64 and i686 built clean on the first pass. i486 and pentium4 both failed identically and immediately – not a package/build issue at all, just the chroot’spacman -Systep:error: failed retrieving file 'core.db' from mirror.archlinux32.org : SSL connection timeout(both core.db and extra.db). Confirmed via plaincurl -sIthat the mirror was reachable again a bit later; simply re-ransudo extra-i486-build/sudo extra-pentium4-buildstandalone (no need to redo x86_64/i686) and both succeeded on the retry. i486/pentium4 apparently hit archlinux32.org for their chroot pacman sync (unlike x86_64/i686’s normal repos) – if this recurs, it’s that mirror specifically, not this host’s network. Signed+published all 12 files (3 pkgnames x 4 archs) viarepo_sign.sh+repo_publish.shdirectly (skippingrepo_build.shsince already built, per the established recovery pattern – see 2026-08-02 entry below). Caution: accidentally invokedrepo_publish.sha second time on the same already-uploaded files out of habit/checking-exit-code muscle memory – turned out harmless (repo_publish.sh just replaces the same-version repo entry with itself, no duplicate ARCHIVED/db-entry mess), but don’t rely on that; just check the first run’s output instead of re-invoking. - 2026-08-01: 5.15.212 -> 5.15.213, cosmetic-only config diffs (build
timestamp/toolchain version strings), no Kconfig changes. Full build
across all 4 archs succeeded and got signed, but
repo_publish.shlost its SSH connection to the repo host (euroweb.lan) partway through step 3/3 – host became fully unreachable (connection timed out) mid-run, not just one flaky request. Resulting remote state:linux-lts515(main) published on all 4 archs OK.linux-lts515-docspublished+repo-added on i486 only – i686/ pentium4/x86_64 never attempted.linux-lts515-headersnever attempted at all (connection was already down by then). Local*.pkg.tar.zst/.sigfor all 3 pkgnames x 4 archs are preserved (repo_release.sh’s cleanup only runs on success), so a plain rerun ofscripts/repo_release.sh maintained/linux-lts515once the host is reachable again should re-sign (harmless, already signed) and finish the publish/repo-add for the missing entries. No PKGBUILD changes needed, this was a pure infra outage. - Recovering from the outage: do NOT just rerun
scripts/repo_release.sh–repo_build.shunconditionally reinvokessudo <archbuild>per arch with no “already built” check, so it silently redoes the full kernel compile even when a valid signed package already sits in pkgdir (wasted ~1hr+ per arch, had to be killed mid-run). Instead, once local*.pkg.tar.zst/.sigalready exist and are good, skip straight toscripts/repo_sign.sh <pkgdir>/*.pkg.tar.zst(no-ops, already signed) +scripts/repo_publish.sh <pkgdir>/*.pkg.tar.zst, thenrm -fthe local files manually (repo_release.sh’s own post-publish cleanup) – confirmed working 2026-08-02, all 12 files (3 pkgnames x 4 archs) published cleanly this way. .nvchecker.tomltracks the upstream git tag (linux-5.15.y branch,git.kernel.org/.../stable/linux.git), but the PKGBUILDsource=()pulls a full release tarball fromcdn.kernel.org/pub/linux/kernel/v5.x/linux-$pkgver.tar.xz. These two can go out of sync: a git tag can exist (so nvchecker reports UPD) before/without kernel.org publishing the corresponding release tarball. Confirm real availability withmakepkg -do --skippgpcheck(unsandboxed); a genuine 404 means “not published yet” — revert the pkgver bump and retry later, don’t chase it further.- 2026-07-25: 5.15.211 -> 5.15.212, full update+build+publish across all 4
archs (x86_64, i686, i486, pentium4). Found and fixed a real ordering bug
in
update.sh: it reconciled the sharedconfigfile in place for x86_64 first, but only updated PKGBUILD’s checksum for it after the whole arch loop finished. Sinceconfig(unlikeconfig.i686/etc) is appended to every arch’s source list viasource_i686/source_i486/source_pentium4(those arrays add the per-arch config, they don’t replace the sharedconfigentry), the 32-bit archs’makepkg --nobuildre-validatedconfig’s checksum against the stale PKGBUILD entry after its content had already changed for x86_64, and failed with a checksum mismatch. Fix: move the main-config checksum update to run immediately after reconciling the x86_64 config, inside the loop, before moving to the next arch — seeupdate.sh’sif [ "$arch" = "x86_64" ]block. Also confirmed a new (previously undocumented) harmless chroot noise: during each arch’s post-build test-install, themkinitcpiopacman hook errorsfile not found: '/etc/vconsole.conf'andcommand failed to execute correctly— this is the chroot’s own test-install step, not the package build itself (which already succeeded by that point); same category as the pre-existing namcap/checkpkg noise below, don’t chase it. - 2026-07-02: 5.15.210 tag existed but tarball 404’d, twice (checked same day). Reverted both times, no diff left behind.
- 2026-07-04: same pattern again — nvchecker/git tag reported 5.15.211, but
update.sh 5.15.211hit a real 404 oncdn.kernel.orgfor the release tarball. Script auto-reverted the pkgver bump on the 404 path, but left an emptysrc/dir behind (its cleanup only runs after successful config reconciliation, not on this early-exit branch) — removed it manually. Package still at 5.15.210. Retry later. - 2026-07-03: 5.15.210 tarball became available. Full update done — see
update.shin the package dir, which now automates this whole process. Key points from doing it manually first:- Never use
updpkgsumson this package. Itssha256sumsarray has bespoke logic (the “fail if upstream’s .config changes” block, ~line
- that swaps in
sha256sums_pentium4/i686/i486only when the main config’s checksum matches a hardcoded literal duplicated in two places (the main array entry at index 2, and theifcondition string).updpkgsumsdoesn’t know about this and will desync it. Compute checksums by hand withsha256sumand update both occurrences of the literal.
config,config.i686,config.i486,config.pentium4need to be reconciled against the new kernel version withmake olddefconfig(this is exactly whatprepare()already does at build time — reuse it viamakepkg --nobuild --skippgpcheck, don’t reinvent it).- Must run the reconciliation inside each architecture’s real archbuild
chroot, not on the host:
sudo extra-<arch>-build -- -- --nobuild --skippgpcheck(note: needs a double--, seememory/TOOLING_NOTES.md). The chroot’s actual installed gcc/binutils versions get embedded in the config (CONFIG_CC_VERSION_TEXT/CONFIG_AS_VERSION/CONFIG_LD_VERSION), and some Kconfig options are gated on toolchain capability (e.g.CONFIG_CC_HAS_KASAN_SW_TAGSdisappeared for all three 32-bit subarchs in the 2026-07-03 update, because their chroot’s gcc 15.2.1 differs from x86_64 host/chroot’s gcc 16.1.1) — reconciling on the host would silently produce a wrong config for the 32-bit builds. - The reconciled
.configends up at/var/lib/archbuild/extra-<arch>/<user>/build/linux-lts515/src/linux-<ver>/.configafter the--nobuildrun; copy it back over the sourceconfig[.arch]file (needssudo cp+chownback to your user). - Even when the diff is only the header comment/version strings (no
Kconfig option changes), still persist it — user’s explicit
preference, don’t skip “cosmetic-only” diffs. Applied this to the
64-bit
configtoo even though its Kconfig content was unchanged. pkgrelstays at 1 for a pkgver bump (this package always resets it).- Clean up leftover
*-prepare.log,PKGBUILD-namcap.log, the downloaded tarball, andsrc/after--nobuildruns — none of these should be left behind. - Full builds (
sudo extra-<arch>-build, no--nobuild) take a while (kernel compile); run them detached (screen -dmS <name> ..., seememory/TOOLING_NOTES.md) if the session might end before they finish — a plain backgrounded shell command dies with the session (SIGHUP), a detachedscreendoesn’t. - Known-harmless chroot noise same as other packages: namcap crashes
with
ImportError: libalpm.so.14inside the chroot’s python env, and checkpkg says “target not found” (no local repo) — neither means the build failed, verify via presence of the produced log/package instead.
- Never use