-
Notifications
You must be signed in to change notification settings - Fork 467
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
reconciling fileccoin/ipfs go-ipld-cbor incompatibility #643
Comments
Is anything blocking using the refmt cbor branch? |
Let me get a concrete answer to that. I dumped state above in case why had some wisdom, I was half-done investigating. |
OK @Stebalien @whyrusleeping in ipfs/kubo#5243 I've updated all the ipfs deps to use the new versions that use the new go-cid. I also updated it to use go-ipld-cbor v1.4.5 which is basically the refmt branch. The only change I had to make to get it to pass tests was trivial. So to answer the question "is anything blocking using the refmt cbor branch" there are three things I can think of:
|
My one issue is that all CIDs become |
Finding more dependency issues, I wanted to see if we can switch to gossipsub, now that it got merged, but the go-libp2p-floodsub version depends on a different multiaddr than the version of go-libp2p than the one we are using.. |
Does anyone else think that it might be beneficial to step back and take a look at how we might re-architect the dependency graph so that it is less painful? I'm wondering if for example we couldn't group some of the lowest-level dependencies together into one repo. |
thats kinda what go-libp2p is. We should just be depending on go-libp2p, and not the plethora of other sub-dependencies. That way fixing this is just:
and done, but as it stands we have to go update each of the child dependencies, because they are explicitly in the package.json for some reason. |
Can I go and make this change? |
@whyrusleeping what's required here is:
Is that about right? |
I'm seeing something I don't understand with gx. Before starting on the above I wanted to make sure that rewrite worked like I thought it worked and that if on master i did a It's picking up versions of go-ipld-cbor, go-log, and go-ipfs-cmds that are different from what's explicitly listed in go-filecoin's package.json. |
@phritz that seems off... Something is wrong in the dep tree. Try running |
When I run it on master I see:
|
@whyrusleeping is it the case that there should be zero dupes in our dependencies? For example if we depend on sys and fuse, and fuse depends on sys then versions of sys must always match? I know that there are situations where filecoin just won't build unless they match because packages are interoperating, but what about the case where they are not? Re deps in general I'm wondering about things like:
|
They don't always need to match, no. Ones that don't ever touch are fine to be different versions. However, our gx plans for this quarter include making this problem go away a bit. But:
For this, you can grab the current hash of
Yeah, it is. We're working on improving it. |
I've spun two sub-issues out: @dignifiedquire unclear if these address your issue in #643 (comment) but I suspect so. |
Also for the record:
|
In my most recent update, i used mainline go-ipld-cbor instead of our fork. |
sweeeet |
Dumping state for why, this work is still in progress.
As part of #599 we made a small change to go-cid and released a new version (0.7.22), with the aim of propagating the change through to go-filecoin. Since ~everything depends on go-cid, @Stebalien updated a huge number of ipfs repos dependent on go-cid to the new version and released them. What remains is to update go-filecoin's dependencies to those newly released packages.
However! go-filecoin and ipfs use different versions of go-ipld-cbor. ipfs uses 1.2.13 which is built from https://github.com/ipfs/go-ipld-cbor and filecoin uses 1.4.1 which is built from a fork that lives at https://github.com/filecoin-project/go-ipld-cbor (the fork came from the refmt branch in the original repo).
We have basically two options:
Update ipfs to use the new go-cid-based dependencies, release it (for filecoin), and then have filecoin depend on this new version. DO NOT MERGE update go-ipfs and deps to go-cid 0.7.22 ipfs/kubo#5243 is a WIP that updates ipfs to use the new dependencies. In order to bring it over the finish line we need to resolve the issue that ipfs and filecoin depend on incompatible versions of go-ipld-cbor: either ipfs needs to use the refmt-based fork or filecoin needs to go back to the non-refmt-based version. Not sure what would need to happen to take the new deps but make ipfs master stay dependent on 1.2.13 while moving a branch for filecoin to 1.4.5 (there's a PR out for this release) -- that's maybe the next step to investigate here.
Update the ipfs branch that go-filecoin depends on (release-0.4.15-rc1) to use the new go-cid-based dependencies. I started on this in DO NOT MERGE partially update release-0.4.15-rc1 to use new deps ipfs/kubo#5244, i think i almost have all the deps updated but is revealing a lot of code incompatibilities: the release branch is months older than master against which the deps were presumably tested. This PR also moves ipfs from 1.2.12 to 1.4.5 (bump deps and release 1.4.5 go-ipld-cbor#4 -- not merged yet bc i wanted to have a better handle on what's going on here), I'm guessing we'll need to do some fixups.
Based on how painful 2 is looking and the fact that filecoin shouldn't depend on too-stale code, I think we want to do 1.
ps Something I haven't looked at yet is how filecoin works right now given that it depends on a version of ipfs that uses a different go-ipld-cbor version than it. I'm just dumping state so why can take a look.
The text was updated successfully, but these errors were encountered: