enough-analyst-54434
05/14/2016, 12:04 AMenough-analyst-54434
05/14/2016, 12:04 AMenough-analyst-54434
05/14/2016, 12:04 AMenough-analyst-54434
05/14/2016, 12:05 AMrough-minister-58256
05/14/2016, 12:05 AMrough-minister-58256
05/14/2016, 12:05 AMrough-minister-58256
05/14/2016, 12:06 AMenough-analyst-54434
05/14/2016, 12:06 AMenough-analyst-54434
05/14/2016, 12:06 AMrough-minister-58256
05/14/2016, 12:06 AMenough-analyst-54434
05/14/2016, 12:08 AMenough-analyst-54434
05/14/2016, 12:09 AMenough-analyst-54434
05/14/2016, 12:09 AMrough-minister-58256
05/14/2016, 12:10 AMrough-minister-58256
05/14/2016, 12:10 AMNone
enough-analyst-54434
05/14/2016, 12:10 AMrough-minister-58256
05/14/2016, 12:10 AMenough-analyst-54434
05/14/2016, 12:10 AMenough-analyst-54434
05/14/2016, 12:11 AMrough-minister-58256
05/14/2016, 12:15 AMrough-minister-58256
05/14/2016, 12:16 AMrough-minister-58256
05/14/2016, 12:16 AM```There is trouble in the way that pants creates fake dependencies for undeclared Go deps it creates. This logic starts at <https://github.com/pantsbuild/pants/blob/7a7f51390cacd82a3e982eaf4516c510f23092c0/contrib/go/src/python/pants/contrib/go/tasks/go_fetch.py#L189>
I believe this problem comes up when it sees <http://bazil.org/fuse/fs/fstestutil|bazil.org/fuse/fs/fstestutil> (e.g.) and it's not clear whether that lives at <http://bazil.org/fuse/fs/fstestutil|bazil.org/fuse/fs/fstestutil>: or <http://bazil.org/fuse:fs/fstestutil|bazil.org/fuse:fs/fstestutil> . This is harder because pants' go support doesn't create multiple targets explicitly.
If it creates a fake library it would not have rev set, and would end up with rev set to None, leading to trying to fetch None.tar.gz.```
rough-minister-58256
05/14/2016, 12:17 AMGo code is organized into "packages". E.g., <http://bazil.org/fuse|bazil.org/fuse> or os/exec. Each package is on its own. Except that often nested packages come from the same source. So <http://bazil.org/fuse|bazil.org/fuse> and <http://bazil.org/fuse/fs|bazil.org/fuse/fs> come from the same tarball. We make this work at twitter by putting the lines in our pants.ini for matchers. (Grep for <http://bazil.org/fuse|bazil.org/fuse> to see this.) This has some weirdnesses in pants world because we cannot go directly from the go package name to the target address in the BUILD space because <http://bazil.org/fuse/fs|bazil.org/fuse/fs> is from 3rdparty/go/bazil.org/fuse:fs , not 3rdparty/go/bazil.org/fuse/fs: (notice the different placement of the colon).
There is code in pants's go fetcher to try and guess what target it comes from to help you debug undeclared dependencies. This code is at <https://github.com/pantsbuild/pants/blob/7a7f51390cacd82a3e982eaf4516c510f23092c0/contrib/go/src/python/pants/contrib/go/tasks/go_fetch.py#L189> . This may be causing resolution to find the synthetic target instead of the declared target. (The synthetic target has no explicit revision set; the explicit target has a revision set).
There is one more issue: the code for <http://bazil.org/fuse|bazil.org/fuse> is currently hosted at github. Go supports this by using a protocol of looking for meta tags in the html of the former that redirects you to the latter. Support for this was recently added to pants and may be contributing to the change in behavior. That happened in <https://github.com/pantsbuild/pants/commit/7a7f51390cacd82a3e982eaf4516c510f23092c0>
rough-minister-58256
05/14/2016, 12:18 AMenough-analyst-54434
05/14/2016, 12:25 AMbuildgen
?enough-analyst-54434
05/14/2016, 12:25 AMrough-minister-58256
05/14/2016, 12:26 AMenough-analyst-54434
05/14/2016, 12:26 AMenough-analyst-54434
05/14/2016, 12:26 AMrough-minister-58256
05/14/2016, 12:26 AM