Gentoo Archives: gentoo-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] rfc: Go ebuilds bundling multiple upstream sources
Date: Sat, 04 Jul 2015 20:33:57
Message-Id: 55984313.3020401@gentoo.org
In Reply to: Re: [gentoo-dev] rfc: Go ebuilds bundling multiple upstream sources by William Hubbs
1 On 07/04/2015 01:24 PM, William Hubbs wrote:
2 > On Sat, Jul 04, 2015 at 12:43:37PM -0700, Zac Medico wrote:
3 >> On 07/04/2015 12:32 PM, William Hubbs wrote:
4 >>> On Sat, Jul 04, 2015 at 12:19:28PM -0700, Zac Medico wrote:
5 >>>> On 06/30/2015 03:08 PM, William Hubbs wrote:
6 >>>>> The source code is where the compatibility between versions of Go is,
7 >>>>> not the static objects, so what if, for third-party go packages, we
8 >>>>> skip installing the static objects?
9 >>>>>
10 >>>>> The only down side of this would be that there might be longer rebuilds
11 >>>>> if the packages have multiple consumers, but it gets rid of the static
12 >>>>> objects.
13 >>>>>
14 >>>>> What do you think?
15 >>>>
16 >>>> I'll give real example involving go-tools. The go-tools build requires
17 >>>> go-net, which in turn requires go-text. If the go-net *.a files are
18 >>>> installed, then it is possible to build go-tools against go-net without
19 >>>> having go-text installed. If the go-net *.a files are not installed,
20 >>>> then you will have to install go-text before you can build go-tools. It
21 >>>> introduces an indirect build-time dependency between go-tools and go-text.
22 >>>
23 >>> Sure, but what I'm proposing is that we do not install any *.a files
24 >>> for Go software that is not part of dev-lang/go.
25 >>
26 >> Exactly the same type of situation can arise for packages that are not
27 >> part of dev-lang/go. For example, if consul's static api.a library is
28 >> not installed, then it will introduce indirect build-time dependencies
29 >> for the consul-template package.
30 >
31 > Hmm, I haven't looked at either consul or consul-template yet, but I'm
32 > thinking that if you use golang-build.eclass to install everything and
33 > make sure GOPATH is set correctly, consul-template will pick up
34 > everything it needs.
35 >
36 > What am I missing?
37
38 You need to recognize that "build-time for package A" is not the same as
39 "build-time for package B". When you build go-tools, you can't rely on
40 the build-time dependencies of go-net being present. Likewise, you can't
41 rely on the build-time dependencies of consul being present when
42 consul-template is built.
43 --
44 Thanks,
45 Zac

Replies