-
Notifications
You must be signed in to change notification settings - Fork 45
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
Conversion of build system to CMake #384
Conversation
Don't forget to update documentation pages: Building ILLIXR, Modifying a plugin, Writing your own plugin. Write somewhere in the documentation the configuration places and precedence. Maybe keep some of |
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.
For the offload plugin, it would also need gstreamer. Right now this is installed manually by the user. A lot of the distro version of gstreamer is outdated, so, preferably, we would want to pull a branch from their repo here and link statically to it. Offloading currently use gstreamer's base and nvcodec plugins.
10ad748
to
e5a6c37
Compare
Regarding leaving parts of the |
Ah, I see the command in the documentation now; that is quite sufficient. I take back my objection to removing |
What are the pros/cons of vendoring dependencies like sqlite3pp, concurrentqueue, cxxopts vs pulling them in through CMake? |
Hi Doug, where is Sophus used? If we need it, I think we need to add libfmt-dev in the package installation as well. |
Using Vendor version:
Cons:
Building through CMake
Cons:
All in all, I am a big fan of vendor supplied libraries as they make management much easier and stable long term. There are times when building one of these from source is necessary (e.g. OpenCV on CentOS does not provide the viz module, so we build it from source in that instance), but these should be kept to a minimum. |
Sophus is used by the ORB_SLAM plugin. libfmt is not a required dependency for Sophus, but if we want to use it I can certainly add it to the list. |
I meant vendoring as copying the source code of third-party library into our source-tree (ref). If this is your preference, Concurrentqueue and cxxopts do have Ubunut packages we could switch to (I don't know about Fedora or CentOS). Sqlite3pp has no Ubuntu package, so it can either remain vendored in our repository or we can pull down a copy from the internet. |
A note on the OpenCV need of the "vis module". If this is what I'm
remembering, the requirement of the OpenCV "vis" module is actually a
problem for users of VTK who want a modern version of VTK.
My recollection is that the OpenCV vis module wants version 6.x of VTK,
but VTK is now on the 9.x version, so OpenCV is massively out of date
in that regard. It'd be better if we could avoid requiring the ancient VTK.
I'm not even sure there's a great use of OpenCV's vis module in ILLIXR.
Bill
… @charmoniumQ <https://github.com/charmoniumQ>
What are the pros/cons of vendoring dependencies like sqlite3pp,
concurrentqueue, cxxopts vs pulling them in through CMake?
Using Vendor version:
Pros:
* these libraries are guaranteed to be stable
* any dependencies they have will automatically be installed by the
vendor package manager
* this is standard practice in the industry
* these libraries will be kept up to date and compatible with the rest
of the system
* any plugins that depend on these libraries will be using the same
version and avoids conflicts and collisions
Cons:
* if there is a specific version you need this will not work, but then
one would have to think about why a specific version is necessary
Building through CMake
Pros:
* the specific version is under your control (but, again one would
need to think about why a specific version is needed)
Cons:
* you may need to worry about installing any dependencies of these
libraries manually
* system compatibility is not guaranteed in the long term
* you will need to manually update the cmake files when a new version
is needed
* Build times will be longer
* there could be conflicts with vendor installed versions at link/run time
* not all libraries are easy or friendly to build from source
All in all, I am a big fan of vendor supplied libraries as they make
management much easier and stable long term. There are times when
building one of these from source is necessary (e.g. OpenCV on CentOS
does not provide the viz module, so we build it from source in that
instance), but these should be kept to a minimum.
—
Reply to this email directly, view it on GitHub
<#384 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABYWARYFGCDDZ2K5LYZKCEDXLH7X5ANCNFSM6AAAAAAX73JE6I>.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
All of these are very small projects (some even just header only) so I could go either way (vendoring or using the OS repo) for these. For Sqlite3pp vendoring would be the only option. Ideally we would make these submodules, rather than having the code directly in our repo. |
For Ubuntu 18.04 this is true, but it is now end of life. Ubuntu 20.04 natively runs VTK 7.1, and Ubuntu 22.04 runs VTK 9.1, both with compatible OpenCV versions. I do not know off the top of my head what versions run in Fedora or CentOS (I suspect that Fedora is at least as recent as Ubuntu). If someone wants to have VTK 9 and a compatible OpenCV on an older system they will be responsible for installing it themselves. It is easy enough to do from their git repos. |
1de9bc4
to
703cd4c
Compare
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.
Hi Doug, the file build/_deps/kimera_vio/tmp/Kimera_VIO-gitclone.cmake
has empty paths for some git commands. I'm sending the file to your email.
|
This is now fixed |
Can we add default data path and demo_data path to the yaml files in profiles? For e.g., upzip the downloaded data.zip and set |
@qinjunj You can specify data and demo_data entries for each profile. Keep in mind that if the data needs to be downloaded it must be a url, not a local file path. |
Yeah I can update that myself. Was only wondering if we should set a default value so that the user will have something to run out of box. After all we have demo_data already there and |
The build system has been converted from a set of shell scripts to a CMake build system. The code should build on the following systems
The following build system changes were implemented:
cmake
. The only exception to this is OpenCV in CentOS. The OS repo does not provide the full version (the viz module is missing), in this instance CMake will pull the appropriate version from the OpenCV git repo and build and use it.The following code changes were implemented:
As far as the parameters for the executable go, they will follow this priority:
Note that not everything may be working completely at this point, but I felt that the build system updates should be tested out as the details are finished up.
Also note that the cmake arguments for which plugins to build can be found here (temporary home)