On Fri, 14 Feb 2014 17:13:27 -0600
William Hubbs <willi...@gentoo.org> wrote:

> On Fri, Feb 14, 2014 at 11:02:49AM -0500, Emery Hemingway wrote:
> > On Fri, 14 Feb 2014 13:30:10 +0100
> > Jan Matejka <y...@gentoo.org> wrote:
> > 
> > > On Thu, 13 Feb 2014 11:59:16 -0600
> > > William Hubbs <willi...@gentoo.org> wrote:
> > > 
> > > > Hi all,
> > > > 
> > > > I responded to this a while back, but I guess my email didn't
> > > > go out for some reason.
> > > > 
> > > > As the primary go maintainer, I do want to be involved in
> > > > this. :-)
> > > > 
> > > > On Tue, Feb 11, 2014 at 01:38:44AM +0100, yac wrote:
> > > > > On Mon, 30 Dec 2013 15:48:17 -0500
> > > > > Emery Hemingway <em...@vfemail.net> wrote:
> > > > > 
> > > > > > I really like working with Go, and would like to see a
> > > > > > means of merging Go packages with Portage. In short I am
> > > > > > asking if anyone else is interested in a Go project.
> > > > > 
> > > > > I might be. I have packaged something for private use but it
> > > > > just a bunch of hacks. Anyway, I have some production go code.
> > > > > 
> > > > > >
> > > > > > For those who aren't familiar with Go, I will sumarise why
> > > > > > Portage and Go do not play well together.
> > > > > >
> > > > > > Go is static linked by default.
> > > > > > The Go compiler creates static libraries and binaries.
> > > > > > Libraries compilied with different versions of Go (1.1/1.2)
> > > > > > may not be linked into the same binary.
> > > > > 
> > > > > Haskell is staticaly linked as well (by default) and you can
> > > > > see the gentoo haskell project. I don't see this as a
> > > > > problem, we just will have all dependencies in DEPEND and
> > > > > will have to scope on the go compiler version under something
> > > > > like /usr/lib/go-1.{1,2}/...
> > > > 
> > > > That could be done easily enough, but what about the tools
> > > > in /usr/bin (there aren't many, but there are a couple), and
> > > > these do not change name with each version of go.
> > > 
> > > Please see what python does for different python versions (which
> > > you omitted from my previous email).
> 
> I omitted it, because thinking about it, we don't need to worry about
> this. There isn't a reason you would want go 1.1 and go 1.2 on your
> system. Source level compatibility is guaranteed for all go1 programs
> [1].
> 
> > I've modified the go-1.2 ebuild to install to usr/lib/go1.2 and I'm
> > working on an eselect module to manage the symlink to
> > usr/bin/[go,gofmt]
> 
> I would just install to /usr/lib/go1 and not worry about the eselect
> module; there should not be a need to keep several versions of go1
> around, again, because go1.x releases will be source compatible.
> 
> We could even just leave this as /usr/lib/go, because upstream doesn't
> even know if a go-2 specification will happen.
> 
> > The default GOROOT that go looks at for base libraries seems to be
> > compiled in so this should be pretty easy, like python but simplier.
> 
> It looks for standard libraries in GOROOT_FINAL which is set in the
> ebuild and compiled into the binaries.
> 
> Third party libraries are interesting in this case, because, all of
> the third party libraries we install will not be usable once the user
> upgrades from say go-1.2 to go-1.3. However, rebuilding those
> libraries from source will work.
> 
> William
> 
> [1] http://golang.org/doc/go1compat

The reason I thought go should be slotting was that all compliled
libraries would break when go was replaced.

Mabye the only the library source could be installed, and a cache of
compiled libraries could be overlayed over that...


Reply via email to