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

From: Leo Famulari <[email-masked]>
Date: Tue, 16 Feb 2021 15:50:36 -0500

On Mon, Feb 15, 2021 at 05:11:44PM -0800, Tom Willemse wrote:
> I've been trying on my own to see if I could update Syncthing to 1.12.0
> since I'm trying to switch from Archlinux to Guix. It's been a learning
> experience but I keep getting stuck since I ultimately don't know what
> I'm doing, I've only been using Guix off-and-on for a short while.
> 
> I would really love for this to be done, and since I see in this thread
> that someone is needed to work on the go-build-system for this, I would
> be happy to try my best under the guidance of Leo. Unless you've posted
> to guix-devel already and have found someone else to do it, in which
> case I'd still be happy to help out in whichever way I can.
> 
> Please let me know what I can do to help out with this.

Thanks for your interest!

As far as I know, nobody has started working on this problem yet.

If you want to help develop Guix, you'll need to learn the Guix
development workflow, which is outlined in the manual chapter
Contributing. Specifically, the sections Building From Git and Running
Guix Before It Is Installed:

https://guix.gnu.org/manual/en/html_node/Contributing.html

The goal is to be able to use Guix from your Git tree with the
'pre-inst-env' script.

Guix's go-build-system is implemented in these two files:

https://git.savannah.gnu.org/cgit/guix.git/tree/guix/build-system/go.scm?h=v1.2.0
https://git.savannah.gnu.org/cgit/guix.git/tree/guix/build/go-build-system.scm?h=v1.2.0

The second file, go-build-system.scm, contains the actual build-system
logic.

What needs to happen, basically, is for the build system to be rewritten
to take into account "Go Modules". They were introduced after our
go-build-system was created, and they are the mechanism used by the Go
language to handle dependencies.

I gave an extremely brief summary of the situation upthread:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45476#20

I think that things have changed enough with Go that, if I were doing
this work, I'd start over by creating a "go-build-system2", rather than
trying to adapt what already exists. It's common to base new build
systems off of gnu-build-system, and change the parts that need
changing.

The Guix community is eager to help new contributors. Please, don't
hesitate to ask for advice, on the mailing lists or the #guix IRC
channel.