[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Best approach to update Go packages with the version in the go import path



  Hello go team,

I'm wondering about the best approach to take for modern Go packages that include the version in the Go path.

As an example, gotest.tools, ie. the Debian package "golang-github-gotestyourself-gotest.tools-dev" [1].

  * current version in Debian is 2.x, and it goes by the Go import path "gotest.tools"

  * latest version upstream is 3.x, with the Go import path "gotest.tools/v3"

I'd like to update the package in Debian to 3.x, here are my options:

  1) just bump the package to latest. Problem: it will break any package that build-depend on it, due to the change in the Go import path.

  2) introduce a new package that I will name "golang-github-gotestyourself-gotest.tools-v3-dev". Problem: this new package will have to go through the NEW queue again.

To me, option 2 is the most appealing, but also the most problematic. I mean, now that some Go packages have their major version in their path, we can package concurrent major versions of a same package in Debian, and that's an improvement. It will help us to solve the dependency hell in some cases I'm sure. For example, to build the latest version of docker.io, I actually need both version of gotest.tools, because some components of docker.io use the v2, and others use the v3. In this situation, having both versions of gotest.tools in the Debian archive helps a lot, and avoid painful patching.

But on the other hand, if it means that every time a new major version of a Go package is released, it has to go through the NEW queue again... Sounds like a showstopper.

What's your thoughts on that? Did some of you already tackled a similar issue? Are they other options apart from the two I mentioned here?

Thanks,

  Arnaud

[1]: https://salsa.debian.org/go-team/packages/gotest.tools


Reply to: