Subject: [bug#45476] [PATCH] gnu: syncthing: Update to 1.12.0.

From: Leo Famulari <[email-masked]>
Date: Wed, 3 Feb 2021 18:54:02 -0500

On Thu, Jan 14, 2021 at 12:46:20PM +0100, Ludovic Courtès wrote:
> Leo Famulari <[email-masked]> skribis:
> > However, the mechanisms used to build Syncthing (and to build Go
> > software in general) have changed since that work was done, and the
> > go-build-system we have can no longer build recent versions of Syncthing
> > except by using the bundled source code.
> 
> But it can build this older version of Syncthing.  What’s fundamentally
> different between the way the old and the new version of Syncthing are
> built?

Basically, the Go language introduced a memoized cache for dependency
management. Yes, just like Guix and Nix. More generally, "things
changed" and the highly-choreographed orchestration of the old-style Go
build tools in go-build-system.scm no longer works for Syncthing's
dependencies, for some reason. Important to note: Go integrates
dependency management, compilation, and deployment.

> > We need to overhaul the go-build-system if we want to continue offering
> > unbundled Go packages.
> 
> Could you explain what needs to be done?  Perhaps starting a new thread
> on guix-devel, with an eye on recruiting interested hackers.  :-)

Sorry for the slow reply. I really ran out of energy for Go in Guix. As
for this question, in the past I learned the answer and wrote it,
somewhere in the Guix mailing lists. If I remember where, I'll reply
with a link. But, it's a good time for us to nurture the next generation
of Guix hackers who know about Go.