1 |
On 9/17/19 7:10 AM, William Hubbs wrote: |
2 |
> On Tue, Sep 17, 2019 at 07:36:07AM +0200, Michał Górny wrote: |
3 |
>> On Mon, 2019-09-16 at 17:00 -0500, William Hubbs wrote: |
4 |
>>> On Mon, Sep 16, 2019 at 11:50:12AM -0700, Zac Medico wrote: |
5 |
>>>> On 9/16/19 11:35 AM, William Hubbs wrote: |
6 |
>>>>> On Mon, Sep 16, 2019 at 11:01:38AM -0700, Zac Medico wrote: |
7 |
>>>>>> For packages that I maintain, I'd prefer to continue using EGO_VENDOR to |
8 |
>>>>>> even with packages using go.mod. I hope that this go-module.class will |
9 |
>>>>>> not preclude this sort of usage. For example, the latest go-tools ebuild |
10 |
>>>>>> uses EGO_VENDOR together with GOFLAGS="-mod=vendor": |
11 |
>>>>>> |
12 |
>>>>>> https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8cc6d401139526e2f9a6dbadbd31f0ff2387705f |
13 |
>>>>> |
14 |
>>>>> Can you elaborate on why you want to keep EGO_VENDOR? |
15 |
>>>>> |
16 |
>>>>> The "go mod vendor" command above downloads all the correct versions |
17 |
>>>>> of the dependencies and puts them in the vendor directory, so I'm not |
18 |
>>>>> sure why you would need the EGO_VENDOR variable. |
19 |
>>>> |
20 |
>>>> EGO_VENDOR eliminates to need to generate and host monolithic tarballs |
21 |
>>>> containing vendored dependencies. It's more space-efficient in the sense |
22 |
>>>> that each vendored dependency is stored in a separate tarball, so |
23 |
>>>> multiple ebuilds can share the same tarball if the version of a |
24 |
>>>> particular vendored dependency has not changed. |
25 |
>>> |
26 |
>>> I see what you are saying, but I haven't yet found a way to generate |
27 |
>>> these separate tarballs that I'm comfortable with. Also, thinking about |
28 |
>>> this, there will be many more tarballs on our mirrors if we store one |
29 |
>>> dependency in each tarball than if we generate vendor tarballs that |
30 |
>>> contain all dependencies for a package. |
31 |
>>> |
32 |
>>> I would consider this an enhancement to the eclass if you still feel |
33 |
>>> that we need it, but let me get the eclass into the tree first then we |
34 |
>>> can work on that. |
35 |
>>> |
36 |
>> |
37 |
>> That sounds like a bad idea. If there are any potential enhancements |
38 |
>> that can happen, I'd rather see them happen before there's a bunch of |
39 |
>> ebuilds using the eclass in the wild, and potentially limiting possible |
40 |
>> changes. |
41 |
> |
42 |
> Like I just said on IRC, it would have been better if you responded in |
43 |
> terms of discussing the enhancement itself. |
44 |
> |
45 |
> The main blocker for me is that EGO_VENDOR is basically the same |
46 |
> information as go.mod, but it isn't quite the same format. |
47 |
> You can get close with "go list -m all", but EGO_VENDOR doesn't |
48 |
> automatically handle imports that start with things like golang.org/x or |
49 |
> gopkg.in; you have to manually fix those, and you would have to do that |
50 |
> every time. That seems to be a lot of work for little gain. |
51 |
|
52 |
It looks like it should not be too difficult to create a script that |
53 |
will convert from go.mod to EGO_VENDOR format. For example, take this |
54 |
go.mod file: |
55 |
|
56 |
https://github.com/golang/tools/blob/master/go.mod |
57 |
|
58 |
It contains a line like this: |
59 |
|
60 |
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 |
61 |
|
62 |
The part after the last hyphen corresponds to the commit hash which can |
63 |
be used directly or expanded like this: |
64 |
|
65 |
$ curl -sS https://api.github.com/repos/golang/net/commits/3b0461eec859 | jq -r .sha |
66 |
3b0461eec859c4b73bb64fdc8285971fd33e3938 |
67 |
|
68 |
The github owner and repo names can resolved like this: |
69 |
|
70 |
$ curl -sS https://golang.org/x/net | grep go-source |
71 |
<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}"> |
72 |
|
73 |
I've found that `go get` parses a similar meta element named "go-import" |
74 |
here: |
75 |
|
76 |
https://github.com/golang/go/blob/master/src/cmd/go/internal/get/discovery.go |
77 |
-- |
78 |
Thanks, |
79 |
Zac |