[ https://issues.apache.org/jira/browse/CALCITE-1938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16124449#comment-16124449 ]
Francis Chuang commented on CALCITE-1938: ----------------------------------------- For Go libraries, building a binary out of a library isn't very useful. In Go, there is the concept of the GOPATH. It is an environment variable pointing to a folder where you store and work on your Go projects. GOPATH should contain the src/, pkg/ and bin/ folders. Projects are placed in `src/`, for example `src/github.com/apache/calcite-avatica-go`. Executables are placed in bin, and they are built by running `go install` in your project. Under `pkg/`, you'd find the package binaries. They are intermediate objects that are cached by the go tool. For example, if I run `go install` in `src/github.com/some-org/some-project` to build an executable, and that project imports a certain version of calcite-avatica-go, the calcite-avatica-go dependency will be built as `src/github.com/apache/calcite-avatica-go.a`. In Go, libraries are not shipped and built as binaries are they are not very useful. The built binaries under the pkg/ folder are only temporary objects cached by Go to improve build performance and they should be re-built during the compilation of an executable. The standard workflow is to use the dep tool or some third party dependency management tool. It will check out the source into the project's vendor directory, and if `go install` or `go build` is executed, it will build the final binary. >From my understand of maven and comparing with Go: - Go does not need the clean step, as running tests or building does not create temporary or binaries in the source tree. - To test, we run `go test $(go list ./... | grep -v /vendor/)`. All this does is tell the go tool to traverse the project for test files and execute them, but exclude anything in the vendor/ folder because they contain the source of our dependencies. - Go install is not meaningful for a library. If the project produced an executable, then `go install` can be used to build and place the binary into GOPATH/bin. However, since calcite-avatica-go is a library, and there is no main package in the code, it is not meaningful to build a binary. > First Apache release for Avatica Go > ----------------------------------- > > Key: CALCITE-1938 > URL: https://issues.apache.org/jira/browse/CALCITE-1938 > Project: Calcite > Issue Type: Bug > Components: avatica-go > Reporter: Julian Hyde > Assignee: Francis Chuang > > Make a release for Avatica Go. > Release number is TBD. > This will be the first Apache release for Avacica Go, so expect more > diligence / issues than usual. -- This message was sent by Atlassian JIRA (v6.4.14#64029)