firedancer-io / firedancer

Firedancer is Jump Crypto's Solana consensus node implementation.
https://firedancer.io
Other
768 stars 130 forks source link

Resurrect builds with noarch #1972

Closed anwayde closed 2 weeks ago

anwayde commented 1 month ago

Currently, our CI does not use noarch. noarch64 does not work with a bunch of stuff that requires FD_HAS_INT128. noarch128 addresses that but cannot build important targets like fdctl, fddev, integration-test since they need FD_HAS_SSE which is a requirement in disco/mux. We should address this and make sure we can build these targets with noarch as well to maintain a nice base for compiling under Arm, PPC, and BPF/SBPF.

ripatel-fd commented 1 month ago

@anwayde Making fdctl portable has lots of subtasks. I'll just list them out here for future reference. They are each a decent amount of work (> 2 weeks total) unless we want to go some cheap route.

ripatel-fd commented 3 weeks ago

Chatted with Anway. Unfortunately, the noarch target got removed from CI. We should at it back at some point.

anwayde commented 3 weeks ago

I've added the noarch64 target back to CI.

ripatel-fd commented 2 weeks ago

@anwayde Great, thanks. Can we close this then?

anwayde commented 2 weeks ago

We could, the reason I didn't was because fdctl still doesn't build with noarch. Was wondering if we should keep this open to track that? Or maybe that's not necessary. Either way, I leave the decision up to you @ripatel-fd and @lheeger-jump

ripatel-fd commented 2 weeks ago

I see no reason to build fdctl with noarch. On these embedded targets the assumptions that fdctl makes probably don't hold. Those include AF_XDP available, sandbox, etc. The noarch build target so far has mainly served to ensure individual components (like the sBPF VM or ELF parser) can build in isolation, not that entire Firedancer is supported on arbitrary architectures. @mmcgee-jump Do you have any thoughts on this?

mmcgee-jump commented 2 weeks ago

Yeah, we don't need to support noarch for fdctl (or anything other than linux+x86_64 for now)