-
-
Notifications
You must be signed in to change notification settings - Fork 730
Introduce pixi for dependency management and build orchestration #1201
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
base: main
Are you sure you want to change the base?
Conversation
| #ifndef ROS_PARSER_H | ||
| #define ROS_PARSER_H | ||
|
|
||
| #include <cstdlib> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needed this because otherwise (somtimes), malloc and free could not be found in the fmt include.
|
|
||
| [package.build.config] | ||
| # Prefer dynamic linking for zstd and lz4 to use conda-provided libraries | ||
| extra-args = ["-DPREFER_DYNAMIC_ZSTD=ON", "-DPREFER_DYNAMIC_LZ4=ON"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Without this it would use the system static libraries instead.
|
Noticed some annoying things, with this still upstreaming some work to pixi to fix this :) |
|
any progress? Looking forward to see this in action |
|
Next release should fix some of the caching issues on pixi side of things, and then I'll ping you for a test drive :) |
Hey @facontidavide, this is one of the pixi maintainers here. This is my first attempt at using PlotJuggler as a use-case to build with RoboStack and standalone using pixi and the pixi build. Feature, more on this: https://pixi.sh/latest/ and specifically pixi build: https://pixi.sh/latest/build/ros/ and https://pixi.sh/latest/build/cpp/.
This gives users the ability to build and run PlotJuggler using a couple of different configurations, with just a pixi installation, no cmake or ROS needed. There are still some drawbacks, like the ROS plugins not being available for noetic on anything but linux-64, and for jazzy just missing on windows. As well as the project rebuilding too often, and needing a kind of weird configruration of multiple pixi.toml's for the different package configurations.
Note the ros backends use the package.xml for reading dependency information, while the cmake version has the dependencies specified.
However, I do feel its a promising start, so that's why I'm opening the PR in draft so you can take a quick look. To test it out you need a pixi installation: https://pixi.sh/latest/installation/
Some things I needed to do to get things compiling, I've mainly tested on macOS arm.
Main CMakeLists.txt
LZ4 detection (cmake/find_or_download_lz4.cmake) & ZSTD detection (cmake/find_or_download_zstd.cmake)
Pixi
To run with pixi there is basically a
pixi run starttask for the different environments and that should build and install it correctly into an isolated environment. Take a look at thepixi.tomlto kind of get the gist.Future work
[dev]prefix-dev/pixi#4721. This will make this whole thing infinitely more useful I think.Anyways, sorry for the long description, and would be great to hear your thoughts.