Robert Burke created BEAM-5465:
----------------------------------

             Summary: Have the sdks/go gradle tasks clean up the vendor 
directories on clean
                 Key: BEAM-5465
                 URL: https://issues.apache.org/jira/browse/BEAM-5465
             Project: Beam
          Issue Type: Bug
          Components: build-system, sdk-go
            Reporter: Robert Burke


The sdks/go/\{test,examples,container} directories depend on the main beam 
package, which cause gogradle to vendor the beam package in those directories.
 
The gogradle plugin doesn't clean up the [vendor 
directories|https://golang.org/cmd/go/#hdr-Vendor_Directories] that it sets up 
on builds, when clean is invoked.
 
This leads to stale copies of the Go SDK's beam package vendored in local 
directories, which can lead to build failures of other tasks that invoke the 
tests or similar, when the code in those directories uses a more recent version 
of beam than what is cached.
 
This doesn't happen for users directly using the go tool, with their git repo 
nested under Go PATH, since the go tool will correctly use the local repo copy 
of beam.
 
A workaround on a Unix machine or similar, invoked from the beam repo root, is 
to delete the vendor and gogradle directories, and retry the task.
 
rm -rf sdks/go/\{vendor,.gogradle} 
sdks/go/\{test,examples,container}/\{vendor,.gogradle}
 
This cause gogradle to fetch a more recent copy of beam for vendoring.
 
Ideally we fix the clean tasks for the go directories to delete the vendor 
directories as well, which will resolve the issue more reliably for those using 
gradle to test their changes against the go sdk.

Related: BEAM-5379 is for avoiding the vendoring & cleaning cycle all together 
and migrating to gomodules.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to