-
-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Go module support #5849
Go module support #5849
Conversation
License: MIT Signed-off-by: Matt Joiner <anacrolix@gmail.com>
License: MIT Signed-off-by: Matt Joiner <anacrolix@gmail.com>
db59dde
to
bfbec3a
Compare
@anacrolix See #5435 for moving to a |
License: MIT Signed-off-by: Matt Joiner <anacrolix@gmail.com>
License: MIT Signed-off-by: Matt Joiner <anacrolix@gmail.com>
License: MIT Signed-off-by: Matt Joiner <anacrolix@gmail.com>
License: MIT Signed-off-by: Matt Joiner <anacrolix@gmail.com>
License: MIT Signed-off-by: Matt Joiner <anacrolix@gmail.com>
This will need quite a bit of discussion before we consider it. |
Where would such a discussion occur? |
We generally like to discuss large changes in issues first. Both in your issue (to discuss adopting go modules) and #5850 (where I've brought up simply switching to them entirely). |
Can this be reopened? |
No, it cannot. See: #5850 (comment) |
I don't follow, the comment does not make sense. |
The issue is that semver/
gx forces exact version matching so isn't a problem. If we update package D, we'd have to use the latest versions of the packages in I. go- |
Can you link to go-dep? I'm not sure what to what you refer. I don't see how the situation you describe is a problem. One would not update D for just for the sake of it (particularly if D is not a direct dependency of go-ipfs), and I's and go-ipfs's tests would fail if one did and it was a problem in either of them. Furthermore, if the change in D was truly breaking, the good author of that package would create a new major version preventing irresponsible updates downstream. |
Sorry, too many package managers. I meant go-mod (the go module system).
This ^^. If we use this PR as-is, we don't get the ability to specify version constraints like this. Really, we don't need a breaking change to run into this issue. All we need to do is:
With full go modules support in packages D and I, updating the minimum version of package I in go-ipfs will automatically update the minimum version of D. As it stands, we could end up updating D without updating I. Basically, we're already using a package manager with basic version constraint checking. Merging this PR without fully switching over all of our other packages to use go-mod would be a pretty big step backwards. |
As it is, people not being able to build without using a standard tool is the biggest blocker. This PR addresses that. Updates to transitive dependencies are still visible in updates downstream, they're listed as I find that MVS puts all the power in the hands of the most downstream project, which should be able to make the important decisions about dependencies. Existing popular package constraint systems allow middle packages to meddle and alter builds without agreement from the downstream projects. Maybe |
That only applies to dependencies that have go.mod files. My point was that, as-is, our packages don't have them (and most aren't even using semver). |
Per #5848 .