github / gh-ost

GitHub's Online Schema-migration Tool for MySQL
MIT License
12.44k stars 1.26k forks source link

Modified vendor code in `gcfg` #501

Open nikhilmat opened 7 years ago

nikhilmat commented 7 years ago

Hello!

While trying to consume gh-ost as a go library, I included it in an application that is using godep to manage the dependencies. When gh-ost is pulled in, it ignores the project's vendor directory and installs the dependencies needed by gh-ost into the top level vendor directory in the consuming application. A while back there were some modifications to the gcfg library checked in to this repo to add the RelaxedParserMode (https://github.com/github/gh-ost/commit/4774b67ffdc6e87837ca1a2d413fe416f938eeba#diff-a44ddd65a1cbf0f5ef8b69bde1953565). When godep resolves gcfg the upstream version, I get the following compiler error because this flag is not present:

us-nmathew1:migrant nikhil.mathew$ go run ./src/main.go
# github.com/gusto/migrant/vendor/github.com/github/gh-ost/go/base
vendor/github.com/github/gh-ost/go/base/context.go:689: undefined: gcfg.RelaxedParserMode
vendor/github.com/github/gh-ost/go/base/context.go:690: undefined: scanner.RelaxedScannerMode

Any ideas on how best to proceed here? Is it possible to remove this flag and use the upstream gcfg? Currently, I've had to make these same changes in my consuming application's vendor directory and be careful when updating godep to maintain the changes. Relatedly, any thoughts on using a tool like godep to manage the dependencies?

shlomi-noach commented 7 years ago

Is it possible to remove this flag and use the upstream gcfg

Unfortunately there was a reason this flag was introduced, and so the answer is no.

Currently, I've had to make these same changes in my consuming application's vendor directory and be careful when updating godep to maintain the changes.

Same.

Relatedly, any thoughts on using a tool like godep to manage the dependencies?

I'm dissatisfied with practically all solutions, but of course I am also dissatisfied with not using them. If anything, I'd go for the official go dep tool (not to confuse with godep). However as I have many things on my plate right now I'd need someone to assist on this. Most notably I need to get a sense of the disadvantages of using go dep.

dixon14 commented 1 year ago

Hi @nikhilmat @shlomi-noach can I ask what updates did you guys update in your dependency management file (for me: go.mod to overcome this issue? I am currently importing gh-ost as a go-library as well, and is facing the exact same issue.

github.com/github/gh-ost/go/base
vendor/github.com/github/gh-ost/go/base/context.go:811:7: undefined: gcfg.RelaxedParserMode
vendor/github.com/github/gh-ost/go/base/context.go:812:14: undefined: gcfgscanner.RelaxedScannerMode

Is quite urgent for the build I am about to make, hope to get some clarity on this 😃