This announcement dropped today:
I realized that this is the missing piece for supporting Go modules in pkgsrc.
If you go back and reread the “fetch” section in Supporting Go Modules in
pkgsrc, it seems a bit awkward compared to a standard fetch action. The
reason is that go mod download
re-packs the source into its own zip format
archive.
The module proxy (https://proxy.golang.org/) solves this problem and enables a
simple solution for modules, very similar to lang/rust/cargo.mk. Basically,
a target similar to show-cargo-depends
that outputs a Makefile fragment
containing the names of modules that the current package depends upon. All
these become distfiles fetched from a hypothetical $MASTER_SITES_GOPROXY
.
Crucially, this means that the distfiles do not have to be stored in a
LOCAL_PORTS
subdirectory but can use the normal fetch infrastructure.
Now all that remains is implementing this :) There is some more time to do
that: Go 1.13 (to be released some time in summer) will use module support by
default. What’s more, a bunch of new software (including the various
golang.org/x/*
repositories) has go.mod
files these days, using
module-based builds by default.