Gentoo Archives: gentoo-dev

From: Alec Warner <antarus@g.o>
To: Gentoo Dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] [PATCH 3/3] dev-vcs/hub: migrate to go-module.eclass
Date: Fri, 13 Sep 2019 02:17:09
Message-Id: CAAr7Pr_tFsm6Mu4JfT8KAcBBbSVCpXPOKS-zTNDMdZHJfXgC2A@mail.gmail.com
In Reply to: Re: [gentoo-dev] [PATCH 3/3] dev-vcs/hub: migrate to go-module.eclass by Alec Warner
1 On Thu, Sep 12, 2019 at 6:56 PM Alec Warner <antarus@g.o> wrote:
2
3 >
4 >
5 > On Thu, Sep 12, 2019 at 5:14 PM Michael Orlitzky <mjo@g.o> wrote:
6 >
7 >> On 9/12/19 5:23 PM, Mike Gilbert wrote:
8 >> >
9 >> > Putting the dependencies in RDEPEND means users get stuck with yet
10 >> > another copy of the code installed, in addition to the copy that is
11 >> > statically linked into all reverse dependencies.
12 >> >
13 >> > It's not a very good solution to the problem.
14 >> >
15 >>
16 >> No argument there. The elegant solution to static linking is to not do
17 >> it. But I guess that's off the table? So now we're trying to find the
18 >> best not very good solution.
19 >>
20 >>
21 > Well I think you end up with a weird tradeoff here.
22 >
23 > Most people who build and package go-based packages use static
24 > compilation, so we could in theory build dynamically linked executables,
25 > but then we diverge from the upstream practice.
26 > Maybe this is the right approach, but I think its a bunch of extra
27 > engineering work (to make things build dynamically) and will be pretty
28 > different from what upstream is expecting.
29 >
30 >
31 > https://docs.google.com/document/d/1nr-TQHw_er6GOQRsF6T43GGhFDelrAP0NqSS_00RgZQ/edit describes
32 > the new execution modes; it even discusses this very topic!
33 >
34 > "This mode is mainly intended to support distro builders. They can
35 > distribute Go packages or groups of packages as shared libraries, and can
36 > thus update all Go programs by updating the shared libraries, without
37 > requiring the programs to be relinked."
38 >
39
40 Another thing I neglected to point out is that even with these dynamic libs
41 you end up with toolchain problems. Once you upgrade you go toolchain (goN
42 and go-N+1) and build a new libfoo with go-N+1, it becomes incompatible
43 with binaries built with go-N. Other languages have this problem as well,
44 but its not great and it's a great recipe to hose a system while you are
45 rebuilding your go programs after an upgrade.
46
47
48 >
49 > I wonder who pushed for this to Ian, and whether distros ended up using
50 > this kind of target?
51 >
52 > -A
53 >
54 >
55 >