Packaging Go Libs

Derek (freebsd lists) 482254ac at razorfever.net
Wed Apr 19 10:15:02 UTC 2017


Agree with previous sentiments, and:

On 17-04-18 10:59 PM, Christopher Hall wrote:
>> You should use built in golang vendoring to ensure these
>> dependencies, as their is no guarantee that someone won't update the
>> library port and your app would break, so doing that is very fragile
>
> Currently the GH_TUPLE method is working as it specifies exact
> dependency versions or specific git hashes.
>
> but we made several attempts at submodules in vendor dir
> but have had problems building and go get -u breaks things.
>
> I am wondering if you might suggest a tool or do any other programs in
> ports use such a dependency tool.  Last time I searched ports tree I
> only saw GH_TUPLE used so I just followed that method.
>

 From my point of view, the only thing that should be in the 
vendor directory on checkout is the version-lock file.  This is 
different for different tools.

I have been using gb, as it makes the most sense to me:

https://getgb.io/

sysutils/hfm uses this

godep is also popular, from what I understand:

https://godoc.org/github.com/tools/godep

Vendoring changed internally in go with a GO15VENDOREXPERIMENT 
build environment variable (and then default in 1.6), although I 
have not yet played with it:

https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/edit

... from the docs, it sounds like it would be compatible with gb 
from a build standpoint - and you simply could use gb to track, 
fetch and lock versions in development - the same thing the ports 
GH_TUPLE covers.  What you do when it's not hosted at github, 
well....

Derek



More information about the freebsd-ports mailing list