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

From: Tom Willemse <[email-masked]>
Date: Wed, 05 May 2021 20:56:09 -0700

Hey Leo,

Leo Famulari <[email-masked]> writes:

> 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.

So I've been looking at this and I just wanted to run what I know so far
by you. I don't know if someone else has since picked this up and
finished this, but in case nobody has, this is what I have found so far.

So we can set the GO111CACHE to on, and set the GOMODCACHE where we want
it and potentially link in all of the inputs that it needs. For now
other than getting everything to have the right name doesn't seem like
such a big problem. But it's that name that I think might get in the
way.

So the Go mod cache is a directory structure in which each module a
program (or library) depends on is contained. Each module is under a
directory containing both the module's name and its version. For certain
packages this means that it doesn't just contain any version, but it
contains a partial hash of which submit it's based on and also the date
on which it was committed.

This doesn't seem impossible to do, we should have most of that
information available, possibly we can get at the rest. The only thing I
was thinking is that this might cause an explosion of packages to be
maintained, because we won't be able to just have the latest version and
have everything depend on that, we'll have to have all of the versions
that any of the software in the packages requires.

If there is some Guix magic that we could use here to make this
maintainable I'd love to know, but for now it looks like the minimum we
would need to maintain is a list of (version, hash, dependencies).

On the other hand if this was expected and we want to do this, I can
happily keep trying to get this to work.

Cheers,

Tom

P.S.: I noticed that the original point of this issue was to update
syncthing to 1.12.0. The current version in Guix is 1.15.1 (I think you
were the one to update it), so technically that part of this issue is
done.