Closed kloczek closed 5 months ago
Duplicate of #650, #594, and #549, and the answer is the same. Please don't open additional issues about this.
Two of those tickets are about to the same issue.
I'm using raft from https://github.com/cowsql/raft/ (0.22.1).
Just checked raft 0.22.1 source code.
[tkloczko@pers-jacek raft-0.22.1]$ grep -r raft_register_state_cb
[tkloczko@pers-jacek raft-0.22.1]$
https://github.com/canonical/raft/ is at the moment archived so it is no longer maintained. Q: where is raft which I should use? 🤔
From https://github.com/canonical/raft/
The dqlite team is no longer maintaining our raft implementation as an independent project. Instead, the raft source code has been incorporated into canonical/dqlite as a private implementation detail
and looks like just released new version wants to use system installed raft
checking pkg-config is at least version 0.9.0... yes
checking for SQLITE... yes
checking for UV... yes
checking for RAFT... no
configure: error: Package requirements (raft >= 0.18.1) were not met:
Package 'raft', required by 'virtual:world', not found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
So I'm now puzzled a bit 🤔
What about dropping support for external linking to libraft altogether? Not sure what it is needed for, but it seems to mostly just bring confusion.
@kloczek Apologize for the confusion, I thought I'd explained this fully elsewhere but maybe I left some key details out. The following are all true:
--enable-build-raft
is now the preferred way to build dqlite.canonical/raft
is archived and not receiving new releases (past v0.18.1).--enable-build-raft
) to maintain backward compatibility.--enable-build-raft
will be the default and only choice. This is why you should switch to --enable-build-raft
as soon as possible.I hope that covers everything!
@freeekanayaka
What about dropping support for external linking to libraft altogether? Not sure what it is needed for, but it seems to mostly just bring confusion.
I wanted to give users of dqlite a transition period to switch over to the new build configuration. We will definititely remove the option to link a libraft eventually.
@freeekanayaka
What about dropping support for external linking to libraft altogether? Not sure what it is needed for, but it seems to mostly just bring confusion.
I wanted to give users of dqlite a transition period to switch over to the new build configuration. We will definititely remove the option to link a libraft eventually.
Yeah, I gathered that, but I don't quite see why a user would want to stick to the old configuration.
If you just make the new configuration the default, that will be virtually transparent to users, because you're removing a dependency, not adding one. And on the plus side people won't be confused, it should just work afaict.
If you just make the new configuration the default, that will be virtually transparent to users, because you're removing a dependency, not adding one.
I agree this is convenient, but it seems like a potential violation of expectations that code from libraft.so no longer runs after an upgrade in this case. What if someone has installed a patched libraft and is relying on dqlite to call into that patched code? The transition period gives people a chance to explicitly turn on --enable-build-raft
and simultaneously update how they build and install dqlite to reflect that libraft is no longer in the loop.
That said, we've had three releases now featuring --enable-build-raft
, so it's probably a good idea to retire it with the next release. Thanks to you both for pointing out the potential confusion.
Looks like something is wrong and build fails with: