On Mon, Mar 11, 2019 at 3:02 AM Manlio Perillo <manlio.peri...@gmail.com>
wrote:

> On Monday, March 11, 2019 at 6:12:05 AM UTC+1, Wael Nasreddine wrote:
>>
>> On Sunday, March 10, 2019 at 6:44:10 PM UTC-7, Manlio Perillo wrote:
>>>
>>> On Monday, March 11, 2019 at 2:06:44 AM UTC+1, Wael Nasreddine wrote:
>>>>
>>>>
>>>>
>>>> On Sunday, March 10, 2019 at 5:01:01 PM UTC-7, Manlio Perillo wrote:
>>>>>
>>>>> On Monday, March 11, 2019 at 12:30:02 AM UTC+1, Wael Nasreddine wrote:
>>>>>>
>>>>>> TL;DR Given a Go module, assuming that I have already done `go mod
>>>>>> download`: Is it possible to prevent network access if I delete the 
>>>>>> entire
>>>>>> `$GOPATH/pkg/mod/cache`?
>>>>>>
>>>>>>
>>>>> Yes.  Use `go mod vendor` and the -mod=vendor build flag.
>>>>>
>>>>
>>>> This works! Thank you!
>>>>
>>>> Is the vendor mode going to be supported per Go 1.x compatibility? As
>>>> in, can I assume it works for all 1.x versions >= 1.11?
>>>>
>>>
>>> Go 1.x compatibility does not cover the go tools.
>>>
>>> However the vendor mode should remain because it was added to solve a
>>> specific use case, and has nothing to do with the old vendoring support:
>>> https://golang.org/cmd/go/#hdr-Modules_and_vendoring
>>>
>>> See also:
>>> https://golang.org/cmd/go/#hdr-Maintaining_module_requirements
>>>
>>> "If invoked with -mod=vendor, the go command assumes that the vendor
>>> directory holds the correct copies of dependencies and ignores the
>>> dependency descriptions in go.mod."
>>>
>>>
>> Thank you for the documentation link, this is very helpful!
>>
>> On Sunday, March 10, 2019 at 6:59:07 PM UTC-7, Manlio Perillo wrote:
>>>
>>> On Monday, March 11, 2019 at 12:30:02 AM UTC+1, Wael Nasreddine wrote:
>>>>
>>>> TL;DR Given a Go module, assuming that I have already done `go mod
>>>> download`: Is it possible to prevent network access if I delete the entire
>>>> `$GOPATH/pkg/mod/cache`?
>>>>
>>>>
>>> Another solution is to delete only $GOPATH/pkg/mod/cache/vcs.  This is
>>> the directory that takes more disk space since it contains the full history
>>> of the vcs.
>>>
>>
>> That was my first attempt, however it did not work as expect because the
>> contents of $GOPATH/pkg/mod/cache/download does change anytime a new
>> version is created upstream. My hash failed to match multiple times a day!
>>
>
> It may be caused by the missing pkg/mod/cache/vcs, but it seems unusual.
> I was assuming GOPATH was on a temporary directory.
> And indeed you wrote that GOPATH is set to $NIX_BUILD_TOP/go, but later
> you wrote that it is set to a temporary directory.
>
>
I am removing the entire cache folder, as the content changes when the git
repository of any of the dependencies change. So if I would hash the cache
folder to A and one of the dependencies get a pull request merged upstream,
even though it does not technically change the version that Go is building
with you will still get B when you hash it. This break the concept of
packaging :(


You can try with the following flow (not tested).
>
> 1. download modules with `go mod download`
> 2. *copy* the content of $GOPATH/pkg/mod/cache/download to the output
> directory
> 3. set GOPROXY=file:///$out/... when you `go build`
>

> See also https://roberto.selbach.ca/go-proxies/
>
>
This is quite interesting, thank you for this! However, as I said above the
contents of the download directory changes as upstream changes :(

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to