Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Stop building RDMA in "in place" mode
When using `IN_PLACE=1`, the build assumes that the build directory will _also_ be the run directory[1], which doesn't hold for our case. Furthermore, it's actively problematic as it means we'll end up fairly long paths, which can cause sadness[2][3]. Specifically, rdma-core has an assert[2] that triggers if the path to one of the build dependencies is longer than what's allowed for UNIX sockets[3]. The assert uses `IBACM_SERVER_PATH`, which is set[4] to `@CMAKE_INSTALL_FULL_RUNDIR@/ibacm.sock`. That is in turn set[5] to ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_RUNDIR} (when `CMAKE_INSTALL_RUNDIR` isn't set to an absolute path, which is the case for the default of "var/run"). `CMAKE_INSTALL_PREFIX` is set to the project directory of rdma-core when `IN_PLACE=1`, which may be quite deep, and thus the whole thing is likely to exceed the 108 bytes allowed for `sun_path`. It's worth noting that since we only build in order to get the various header files so we can then generate bindings from them, the setting of the various `CMAKE_INSTALL_*` options that `IN_PLACE=1` set _shouldn't_ have anything to say for us. [1]: https://github.com/linux-rdma/rdma-core/blob/fb965e2d0f670d1e3474f9333b332f6b4954201c/CMakeLists.txt#L92-L100 [2]: #21 (comment). [3]: https://docs.rs/crate/ibverbs-sys/0.2.1+52.0/builds/1297723 [4]: https://github.com/linux-rdma/rdma-core/blob/fb965e2d0f670d1e3474f9333b332f6b4954201c/librdmacm/acm.c#L105-L106 [5]: https://man7.org/linux/man-pages/man7/unix.7.html). It's not [6]: https://github.com/linux-rdma/rdma-core/blob/fb965e2d0f670d1e3474f9333b332f6b4954201c/buildlib/config.h.in#L35 [7]: https://github.com/linux-rdma/rdma-core/blob/fb965e2d0f670d1e3474f9333b332f6b4954201c/CMakeLists.txt#L138
- Loading branch information