From: Zac Medico <zmedico@gentoo.org>
To: gentoo-dev@lists.gentoo.org, mgorny@gentoo.org,
William Hubbs <williamh@gentoo.org>
Subject: Re: [gentoo-dev] [PATCH 1/1] go-module.eclass: introduce new eclass to handle go modules
Date: Tue, 17 Sep 2019 10:40:43 -0700 [thread overview]
Message-ID: <1d187ef7-25f0-ac53-6cb7-8f4182f54fec@gentoo.org> (raw)
In-Reply-To: <20190917141028.GA5659@linux1.home>
[-- Attachment #1.1: Type: text/plain, Size: 3784 bytes --]
On 9/17/19 7:10 AM, William Hubbs wrote:
> On Tue, Sep 17, 2019 at 07:36:07AM +0200, Michał Górny wrote:
>> On Mon, 2019-09-16 at 17:00 -0500, William Hubbs wrote:
>>> On Mon, Sep 16, 2019 at 11:50:12AM -0700, Zac Medico wrote:
>>>> On 9/16/19 11:35 AM, William Hubbs wrote:
>>>>> On Mon, Sep 16, 2019 at 11:01:38AM -0700, Zac Medico wrote:
>>>>>> For packages that I maintain, I'd prefer to continue using EGO_VENDOR to
>>>>>> even with packages using go.mod. I hope that this go-module.class will
>>>>>> not preclude this sort of usage. For example, the latest go-tools ebuild
>>>>>> uses EGO_VENDOR together with GOFLAGS="-mod=vendor":
>>>>>>
>>>>>> https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8cc6d401139526e2f9a6dbadbd31f0ff2387705f
>>>>>
>>>>> Can you elaborate on why you want to keep EGO_VENDOR?
>>>>>
>>>>> The "go mod vendor" command above downloads all the correct versions
>>>>> of the dependencies and puts them in the vendor directory, so I'm not
>>>>> sure why you would need the EGO_VENDOR variable.
>>>>
>>>> EGO_VENDOR eliminates to need to generate and host monolithic tarballs
>>>> containing vendored dependencies. It's more space-efficient in the sense
>>>> that each vendored dependency is stored in a separate tarball, so
>>>> multiple ebuilds can share the same tarball if the version of a
>>>> particular vendored dependency has not changed.
>>>
>>> I see what you are saying, but I haven't yet found a way to generate
>>> these separate tarballs that I'm comfortable with. Also, thinking about
>>> this, there will be many more tarballs on our mirrors if we store one
>>> dependency in each tarball than if we generate vendor tarballs that
>>> contain all dependencies for a package.
>>>
>>> I would consider this an enhancement to the eclass if you still feel
>>> that we need it, but let me get the eclass into the tree first then we
>>> can work on that.
>>>
>>
>> That sounds like a bad idea. If there are any potential enhancements
>> that can happen, I'd rather see them happen before there's a bunch of
>> ebuilds using the eclass in the wild, and potentially limiting possible
>> changes.
>
> Like I just said on IRC, it would have been better if you responded in
> terms of discussing the enhancement itself.
>
> The main blocker for me is that EGO_VENDOR is basically the same
> information as go.mod, but it isn't quite the same format.
> You can get close with "go list -m all", but EGO_VENDOR doesn't
> automatically handle imports that start with things like golang.org/x or
> gopkg.in; you have to manually fix those, and you would have to do that
> every time. That seems to be a lot of work for little gain.
It looks like it should not be too difficult to create a script that
will convert from go.mod to EGO_VENDOR format. For example, take this
go.mod file:
https://github.com/golang/tools/blob/master/go.mod
It contains a line like this:
golang.org/x/net v0.0.0-20190620200207-3b0461eec859
The part after the last hyphen corresponds to the commit hash which can
be used directly or expanded like this:
$ curl -sS https://api.github.com/repos/golang/net/commits/3b0461eec859 | jq -r .sha
3b0461eec859c4b73bb64fdc8285971fd33e3938
The github owner and repo names can resolved like this:
$ curl -sS https://golang.org/x/net | grep go-source
<meta name="go-source" content="golang.org/x/net https://github.com/golang/net/ https://github.com/golang/net/tree/master{/dir} https://github.com/golang/net/blob/master{/dir}/{file}#L{line}">
I've found that `go get` parses a similar meta element named "go-import"
here:
https://github.com/golang/go/blob/master/src/cmd/go/internal/get/discovery.go
--
Thanks,
Zac
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 981 bytes --]
next prev parent reply other threads:[~2019-09-17 17:40 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-16 14:17 [gentoo-dev] [PATCH 0/1] introduce new eclass to handle go modules (round 3) William Hubbs
2019-09-16 14:17 ` [gentoo-dev] [PATCH 1/1] go-module.eclass: introduce new eclass to handle go modules William Hubbs
2019-09-16 17:40 ` William Hubbs
2019-09-16 17:48 ` Zac Medico
2019-09-16 18:26 ` William Hubbs
2019-09-16 19:50 ` Zac Medico
2019-09-16 18:01 ` Zac Medico
2019-09-16 18:35 ` William Hubbs
2019-09-16 18:50 ` Zac Medico
2019-09-16 22:00 ` William Hubbs
2019-09-17 5:36 ` Michał Górny
2019-09-17 14:10 ` William Hubbs
2019-09-17 17:40 ` Zac Medico [this message]
2019-09-16 18:05 ` Michał Górny
2019-09-16 18:46 ` William Hubbs
2019-09-16 19:19 ` Michał Górny
2019-09-18 17:49 ` Michael Orlitzky
2019-09-18 18:04 ` Alec Warner
2019-09-18 19:15 ` Michael Orlitzky
2019-09-18 19:33 ` Alec Warner
2019-09-19 1:09 ` Michael Orlitzky
2019-09-18 19:28 ` Zac Medico
2019-09-18 21:11 ` William Hubbs
-- strict thread matches above, loose matches on Subject: below --
2019-09-18 20:26 [gentoo-dev] [PATCH 0/1] introduce an eclass to handle go modules (round 5) William Hubbs
2019-09-18 20:26 ` [gentoo-dev] [PATCH 1/1] go-module.eclass: introduce new eclass to handle go modules William Hubbs
2019-09-18 20:29 ` Michał Górny
2019-09-18 21:28 ` William Hubbs
2019-09-19 1:02 ` Michael Orlitzky
2019-09-16 22:47 [gentoo-dev] [PATCH 0/1] introduce new eclass to handle go modules (round 4) William Hubbs
2019-09-16 22:47 ` [gentoo-dev] [PATCH 1/1] go-module.eclass: introduce new eclass to handle go modules William Hubbs
2019-09-13 15:49 [gentoo-dev] [PATCH 0/1] Introduce new eclass to handle go modules (round 2) William Hubbs
2019-09-13 15:49 ` [gentoo-dev] [PATCH 1/1] go-module.eclass: introduce new eclass to handle go modules William Hubbs
2019-09-13 15:58 ` William Hubbs
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=1d187ef7-25f0-ac53-6cb7-8f4182f54fec@gentoo.org \
--to=zmedico@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
--cc=mgorny@gentoo.org \
--cc=williamh@gentoo.org \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox