Hi Simon, It’s a temporary workaround before we can switch to module-awareness builds in Debian.
You can see more details on my short talk at mini debconf Hamburg or another talk with more details at debconf26 if I eventually get visa approved. :) Best regards, -Andrew Simon Josefsson <[email protected]>於 2026年6月24日週三,12:06寫道: > All, > > Is the DEB_GOMINCOMPAT interface documented? Could someone share > knowledge around this? > > It seems for some packages (e.g., torchwood, sigsum-go) the defaults > makes the Go compiler mis-compile code. Setting DEB_GOMINCOMPAT to, > say, 1.24 makes Debian's go compiler produce correct code. > > Wisdom from mw on irc: > > I found out that in go 1.22 there was an optimization intruduced for > httpmux which basically lets http.Servemux.HandleFunc read strings > looking like this: "POST /add-checkpoint" as typed pair of <method>, > <path>. When compiling with go build, the version in go.mod will > enable this optimization based on go 1.24.0. > > In the debian case, that doesn't get picked up and the go compiler > falls back to the pre-optimized behavior. Which means the http routes > will look as the literal string "POST /add-checkpoint", and therefore > 404. > > Adding export DEB_GOMINCOMPAT := 1.24 to debian/rules resolved this. > > As far as I can tell, this does not only affect library or test code but > also binaries. It seems bad that Debian's Go compiler ends up in a > pre-1.22 code generator mode somehow. > > Does anyone have a good explanation of the actual problem here? With > trade-offs how to solve it? > > Is the best way forward really to sprinkle DEB_GOMINCOMPAT:=1.24 into > our debian/rules? I'm confirmed it modify how both torchwood and > sigsum-go behaves. I've seen some debian/rules starting to use this > already (e.g., golang-opentelemetry-collector). > > Another solution would be to pick the Go version from go.mod, but I'm > not convinced it is a good idea. > > /Simon >
