diff --git a/srcpkgs/gitea/patches/zapx-i686.patch b/srcpkgs/gitea/patches/zapx-i686.patch new file mode 100644 index 00000000000..60697a88ef5 --- /dev/null +++ b/srcpkgs/gitea/patches/zapx-i686.patch @@ -0,0 +1,63 @@ +commit edd64cbbe6cc4f22e3023bdef706a1053197bf0c +Author: Alex White +Date: Thu Jul 23 12:07:36 2026 -0700 + + Fixed 64-bit alignment panic in the interim struct on 32-bit platforms (#437) + + It's the same story as #147, #148, and #290, but for the v17 `interim` + struct: `bytesWritten` is accessed atomically but sits at a 4-byte + offset on 32-bit platforms, so the first segment write panics with + `unaligned 64-bit atomic operation`. + + We hit this on ARMv6 when upgrading bleve v2.5.7 → v2.6.0, the first + bleve release that writes zapx/v17 segments. We've pinned bleve at + v2.5.7 until a fixed v17 release is available. + + Verified on ARMv6 hardware (CI runner on a 32-bit ARM SBC). Before this + change, `TestBuild` panics: + + ``` + --- FAIL: TestBuild (0.00s) + panic: unaligned 64-bit atomic operation [recovered, repanicked] + ... + internal/runtime/atomic.panicUnaligned() + /usr/local/go/src/internal/runtime/atomic/unaligned.go:8 + internal/runtime/atomic.Xadd64(0x2cbc844, 0x17) + /usr/local/go/src/internal/runtime/atomic/atomic_arm.s:319 + github.com/blevesearch/zapx/v17.(*interim).incrementBytesWritten(...) + new.go:334 + github.com/blevesearch/zapx/v17.(*interim).writeStoredFields(0x2cbc7e0) + new.go:408 + ``` + + With this change, the full test suite passes on the same runner (and on + amd64 with `-race`). + + While auditing the remaining atomic 64-bit call sites I found the same + layout in `vectorIndexOpaque.bytesWritten` and `cacheEntry.refs` + (vectors build) — happy to send a follow-up PR for those if useful. + +diff --git a/vendor/github.com/blevesearch/zapx/v17/new.go b/vendor/github.com/blevesearch/zapx/v17/new.go +index 4d23793..1a38a69 100644 +--- a/vendor/github.com/blevesearch/zapx/v17/new.go ++++ b/vendor/github.com/blevesearch/zapx/v17/new.go +@@ -100,6 +100,9 @@ var interimPool = sync.Pool{New: func() interface{} { return &interim{} }} + // interim holds temporary working data used while converting from + // analysis results to a zap-encoded segment + type interim struct { ++ // atomic access to this variable, moved to top to correct alignment issues on ARM, 386 and 32-bit MIPS. ++ bytesWritten uint64 ++ + results []index.Document + + // edge list for nested documents: child -> parent +@@ -130,9 +133,6 @@ type interim struct { + lastNumDocs int + lastOutSize int + +- // atomic access to this variable +- bytesWritten uint64 +- + opaque map[int]resetable + } + diff --git a/srcpkgs/gitea/template b/srcpkgs/gitea/template index e091b08934b..3f65cc8d08a 100644 --- a/srcpkgs/gitea/template +++ b/srcpkgs/gitea/template @@ -1,7 +1,7 @@ # Template file for 'gitea' pkgname=gitea -version=1.27.0 -revision=2 +version=1.27.2 +revision=1 build_style=go go_import_path=gitea.dev go_ldflags=" -X main.Version=${version}" @@ -29,7 +29,7 @@ license="MIT" homepage="https://gitea.io" changelog="https://raw.githubusercontent.com/go-gitea/gitea/main/CHANGELOG.md" distfiles="https://dl.gitea.io/gitea/${version}/gitea-src-${version}.tar.gz" -checksum=012df875bfa7764ade92301ac5e4225fc2c2aab7b3b40b4d6e7149a926253496 +checksum=f6580cc326775969d0e6408d4eefd25e05fa3d4e1803deb2c0566235db809989 system_accounts="_gitea" _gitea_homedir="/var/lib/gitea"