From: Timmy Douglas <mail@timmydouglas.com>
To: Helio Machado <0x2b3bfa0@gmail.com>,
Leo Famulari <leo@famulari.name>,
help-guix@gnu.org,
Katherine Cox-Buday <cox.katherine.e@gmail.com>,
Helio Machado <0x2b3bfa0@gmail.com>
Subject: Re: packaging a golang package
Date: Sun, 24 Jan 2021 23:18:02 -0800 [thread overview]
Message-ID: <87wnw14h91.fsf@timmydouglas.com> (raw)
In-Reply-To: <CANe01w6HZv4=n4HmfdtZECb78wT5SDA8PafbKmntgqDwav-yWA@mail.gmail.com>
Helio Machado <0x2b3bfa0@gmail.com> writes:
> So it seems. I'll debug it as soon as I can; the import process is
> unbearably long.
let me know what you find out--i can give it another try when you're
ready.
>> I sort of wonder if the `git-fetch` portion of go packages should be
>> something like `git-fetch-and-restore-go-modules` Maybe something like
>> `go mod vendor` could be used an the hash would be calculated on that?
>> I'm not familiar enough with the internals of go modules, but I'm not
>> really seeing the value in generating a bunch of package metadata on all
>> the module dependencies.
>
> Guix seems to have a strong opinion about dependency vendoring, but it's
> technically viable as long as you don't produce architecture-specific
> artifacts when packaging. See https://issues.guix.info/43872 for more
> information about the pitfalls I encountered while packaging go-ethereum
> the fast way.
I tried the go mod vendor approach on a fork I made and it was fairly
straightforward:
1. Update module name in go.mod
2. Run `go mod vendor`
3. Fix .gitignore to make git adding vendor/ easier
the downside is that the package is tied to my personal git. I think
merging updates wouldn't be too hard and I like how it doesn't pollute
the package repo with a bunch of dependencies (cat vendor/modules.txt|wc -l
--> 697), but I'm not sure it'd pass the bar to be accepted into
guix. But it's probably good enough for me to use personally.
$ cat ~/.config/guix-packages/coredns.scm
(define-module (coredns)
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix build-system go)
#:use-module ((guix licenses) #:prefix license:))
(define-public coredns
(let ((commit "78de01a9cddf140c04ec3c4095195177d21cacff")
(revision "0"))
(package
(name "coredns")
(version (git-version "1.8.1" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/timmydo/coredns")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "02gdj866mz17p1f0fgfjpbb9cah2ykziacahpkw0viq1vj231hai"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/timmydo/coredns"))
(synopsis "DNS server/forwarder, written in Go, that chains plugins")
(description "CoreDNS is a fast and flexible DNS server.
The key word here is flexible: with CoreDNS you are able to do
what you want with your DNS data by utilizing plugins. If some
functionality is not provided out of the box you can add it by
writing a plugin.")
(home-page "https://github.com/coredns/coredns")
(license license:asl2.0))))
coredns
next prev parent reply other threads:[~2021-01-25 7:18 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-08 7:01 packaging a golang package Timmy Douglas
2021-01-08 18:33 ` raingloom
2021-01-08 19:01 ` Leo Famulari
2021-01-10 0:32 ` Timmy Douglas
2021-01-11 6:09 ` Timmy Douglas
2021-01-17 13:31 ` Helio Machado
2021-01-25 7:18 ` Timmy Douglas [this message]
2021-01-25 20:49 ` Francois.JOULAUD--- via
2021-01-25 23:38 ` Helio Machado
2021-01-27 14:31 ` Katherine Cox-Buday
2021-01-28 8:18 ` Timmy Douglas
2021-01-28 10:32 ` adfeno--- via
2021-01-28 16:03 ` Ludovic Courtès
2021-01-28 21:10 ` adfeno--- via
2021-01-29 20:57 ` Elais Player
-- strict thread matches above, loose matches on Subject: below --
2021-01-20 3:27 jgart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wnw14h91.fsf@timmydouglas.com \
--to=mail@timmydouglas.com \
--cc=0x2b3bfa0@gmail.com \
--cc=cox.katherine.e@gmail.com \
--cc=help-guix@gnu.org \
--cc=leo@famulari.name \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.