-
Notifications
You must be signed in to change notification settings - Fork 147
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
Flatpak TeleSculptor #425
Comments
The issue is that the current If you want to build against VTK 9 you can change the |
Thanks for reply. I decide to go with VTK 8.2.0. |
I see. I don't think and of our testing covers gcc 10 yet. Again, you should be able to make it work with VTK 9 if you use the |
Does superbuild work without network connection? I am trying to build a Flatpak for Telescuplter. So it do not allow external download, all dependencies will have to be included first. Thanks. |
Fletch does require a network connection to download the source packages for the projects it builds. However, you can run that download step once and cache the downloads. It doesn't download if the files are found locally. I don't know much about Flatpak, but isn't that a system for packaging binaries? Wouldn't you build the software locally and then package all the binaries into Flatpak? Note that the superbuild does something similar already but it creates a |
Yes, Flatpak is the system for packaging binaries. Is can be build locally and in Github. There are Flatpak store called Flathub, which I am trying to submit too. Step to start building Flatpak can be summed up: This is what I worked on so far: https://github.com/kevinsmia1939/com.github.Kitware.TeleSculptor Inside the com.github.Kitware.TeleSculptor.yaml, you will see a lot of dependencies being downloaded (in source: section). The build process is from top to bottom, so kwiver and fletch must be on top of telescupltor. The inconvenient thing is that it does not allow cmake or other stuff to download anything except flatpak-builder itself. I think most Linux package build system avoid network connection when building anyway, I think it is to ensure reproducible build. Which kinda make the superbuild not so applicable for flatpak. One of the solution is to link kwiver, fletch, etc as git submodules in Telesculptor (something like this https://github.com/OpenChemistry/tomviz/tree/master/thirdparty). So when Flatpak download Telesculptor with submodule, all deps will be downloaded too. So maybe create another folder, called it something like 3rdparty or dependencies, and put kwiver and fletch submodule in there, and point cmake to that folder. |
The problem with git submodules is that not everything fletch builds comes from another git repository. How do you normally specify how to build dependencies for a flatpak? |
Just use URL with type archive or git.
or
I'm in the process of hunting for these deps to add it in. |
Here is the file that documents/controls what archives Fletch downloads: Some of these have alternate versions depending on how you configure Fletch. Likewise some dependencies might not be needed if they are not enabled in Fletch. TeleSculptor does not turn everything on in Fletch. The packages enabled and versions used are documented here: |
Does the VTK build flag controlled by Fletch? |
TeleSculptor specifies a Fletch configuration that tells Fletch to build VTK and selects from a small number of version choices (e.g. 8.2 and 9.0). Then when Fletch is built it downloads the selected VTK source archive and provides more specific CMake configuration describing how to build VTK depending on which version was selected and what OS we are building on. That configuration is here: Does that answer your question? |
Thanks, that clear it up, but that is some complicated dependencies. |
Hi, Is there a way to make Fletch prefer system installed dependencies? I look through cmake files but it is not clear to me. I already have Eigen install for example, but Fletch attempt to download Eigen which it failed because there is no network connection inside Flatpak-builder. |
Kevin, I have recently gone through the procedure of building the TS <= Kwiver <= Fletch chain on Ubuntu 20.04 using Ubuntu's pre-built packages and left my comments in a shared document. I have found that using cmake-gui simplifies package selection via various flags of what to enable/disable in Fletch, Kwiver or TeleSculptor. One can disable most of the packages in Fletch and use Linux distro's pre-built binaries. However, I still had to build Proj4, log4cplus, VXL in Fletch and referenced them in Kwiver and TeleSculptor builds. |
In theory you should be able to turn on only the components you don't have as system packages in Fletch and then let CMake find system packages to fill in the rest. However, we don't test this approach regularly and it is likely that some of your system packages may not be compatible with KWIVER, TeleSculptor, or other packages in Fletch. The purpose of Fletch is to provide a consistent collection of third-party dependency versions that we can build across different platforms. It's hard to support package manger versions of dependencies because every OS packages different versions. I think the easiest way to make this work (but not necessarily the best from a maintenance perspective) would be to transfer the URLs from the |
@mleotta |
Let me just try using master branch of TeleSculptor and Kwiver first. |
Yes, that's right. There is no hard requirement that you use Fletch. Fletch is a convenience tool for helping to obtain and build the right versions of all the third party libraries and make them work together. It also indirectly documents which versions you need and how to configure them to work together. However, if you can provide these packages directly you can skip fletch. The design of KWIVER is such that the core has very view dependencies, but then we bring in many more dependencies through plugins (AKA "arrows"). You can successfully build KWIVER and TeleSculptor without most of the dependencies; however, you would not actually be able to run many algorithms if you don't build the plugins. The KWIVER core (called "vital") depends only on Eigen. KWIVER stream processing toolkit (sprokit) also requires Boost. TeleSculptor can build on that minimal KWIVER and also requires Qt, qtExtensions, VTK, and optionally PDAL. That will get you a GUI you can open. But to do any interesting work you need several KWIVER arrows (plugins) that depend on OpenCV, VXL, Ceres, FFmpeg, etc. |
We would welcome your contribution of a Flatpak manifest, even if it's work in progress. |
Just include log4cplus as deps inside Flatpak manifest. Also, I just successfully build Tomviz. Need refinement. |
That's great. So you got it working? If you want to contribute that manifest file to TeleSculptor you can make a PR. That way others can find it. I would put it in |
@mleotta I noticed that Fletch download PROJ 4.9.3. But GDAL won't build with PROJ >= 6. Also do Telescupltor need network connection to work with some feature? |
I think I will give up for now. Fletch and Kwiver is hard to package correctly, life is pain :( . |
@mleotta I try building Telesculptor superbuild locally (without Flatpak) I noticed that if a file Thanks |
In short yes. Those files in the |
Actually we might just need to turn on OpenBLAS in Fletch in the TeleSculptor superbuild. That would mean it's a TeleSculptor bug. Let me test that. |
@mleotta I got pass that error above, I just need to build lapack as well. But I have another issue with Fletch not detect ceres solver.
I fix it, it turns out that I submit a patch here: Kitware/fletch#658 |
Right now I stuck at compiling openCV.
I could try to download these boostdesc_bgm.i, but do you need this xfeature2d module? Edit: downloading boostdesc, etc might be difficult. Since opencv_contrib is a archive file. I will have to place boostdesc file in it as soon as it was unpack by fletch, I don't think this is possible on my side since Fletch manage all that. |
There are some features of xfeature2d in opencv_contrib that we use, but I don't think they are currently used by default. Mostly notably xfeatures2d contains the SIFT descriptor and we have an option in TeleSculptor to use that, but the default is currently the ORB descriptor, which I believe is in the main opencv repository. I think if you build without opencv_contrib you can still have a working TeleSculptor |
Thanks for reply, I manually disable opencv_contrib and build it again. Thanks |
1 similar comment
Thanks for reply, I manually disable opencv_contrib and build it again. Thanks |
Okay. The master branches of Fletch, KWIVER, and TeleSculptor all support VTK 9 now. It's just not part of the latest versioned release yet. I'm surprised that VTK 8.2 has issues with newer CMake. CMake is usually pretty good about backwards compatibility. |
Hi, I tried telesculptor master and fletch master but failed to build.
|
The default version of VTK in Fletch is still 8.2 (see here), however, Fletch, KWIVER, and TeleSculptor now all support VTK 9.0 and building 9.0 is available as a CMake option in Fletch. If you are using the superbuild you would need to change this line I'm not sure why you are getting that specific error. |
I tried latest master release of fletch and telesculptor.
|
I haven't seen that error before. You might want to post an issue on the Fletch Github page. |
Agreed, thanks Matt.
I was just looking into the issue a little bit because it feels much like
the issues we had with the PDAL update branch, where libcurl with headers
is required. Given that ( I assume ) Telesculptor is using the Fletch
default PDAL, it should have correctly picked up the inclusion or absence
of libcurl and done the correct thing.
When you post the issue to the Fletch github page, please include things
like the CMake version you're using, the OS/distro, gcc version and if you
have libcurl installed with headers or not and the version of libcurl you
have installed. It might also be useful to view the PDAL CMakeCache.txt so
I can see what it's using for libcurl and possible other configuration
options.
Thanks!
…-Dave
On Mon, May 17, 2021 at 9:29 AM Matt Leotta ***@***.***> wrote:
I haven't seen that error before. You might want to post an issue on the
Fletch Github page.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#425 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABKEAWQVWD3VTYUFNDYB7I3TOEK2LANCNFSM4Y256I3A>
.
--
David Stoup
Principal Engineer
Kitware, Inc.
1712 Route 9, Suite 300
Clifton Park, NY 12065-3104
518-881-4949 (W)
518-312-3946 (M)
518-371-4573 (F)
|
Hi @mleotta It just occurred to me that I can just ship the binary instead of building from source. I have to build ICU 60, because most distro use newer version now. Flatpak run TeleSculptor-1.1.2-Linux-x86_64.sh and automatically answer yes to the license agreement. From what I see, the extracted files does not have License file(?), I will copy the LICENSE from the source instead and put it somewhere manually, where do you want it to be? (/bin /share /lib ...) TeleSculptor does not have .desktop and .metainfo is that right? If so I will create them. Do I need to install numpy and pybind11 as well? Or does this binary already bundled them? Please let me know what you think. The install command is basically this.
Thanks. |
Also, will you update Qt soon? I see that it still use 5.11, but it reach the eol already. I have some problem. Could this be because TeleSculptor use Qt 5.11? |
If installing from binary is acceptable for Flatpak then I have no objections. Yes, it seems the license file is not installed, so not in the package, we could add it if that is a standard thing to package. I assume it would go under We are working on updating Qt to 5.12 as well as various other improvements that will go into TeleSculptor v1.2.0. I'm hoping to get that out soon, but waiting on corresponding Fletch and Kwiver releases. I'm not sure about that file dialog issue. What OS are you on? We probably need to do more UI testing across different Linux distros. @borovik135, you've been using the UI on Linux recently. Have you had this issue creating a new project? |
Thanks for reply, I create .desktop and metainfo.xml file already, I will be submitting it to you soon. I use openSUSE Tumbleweed KDE. I think I will just wait until TeleSculptor update to Qt 5.12, and use KDE Sdk 5.12 so it would be easier to figured out. |
When trying to build TeleSculptor without Fletch I am able to get up to this point, where I am missing kwiver::kwiver_adapter, kwiver::kwiver_algo_qt_widgets. I am quite sure Boost contains everything it should because Kwiver detects it. Any suggestions what might me missing?
|
Hi, I'm here to report that the new TeleSculptor works now, I can choose the folder properly now. |
I submit pr to flathub here, waiting to be build and test. |
@mleotta |
@kevinsmia1939 I would suggest putting those files in |
I create TeleSculptor Flatpak! This is a test repo, but it can be install like this.
|
I guess this can be close now. |
Hello,
I am trying to build Telesculptor for Linux Flatpak.
I got the error below.
I build Kwiver 1.5.1 with cmake with the flags,
Build qtExtensions master branch with cmake with default flag. https://github.com/Kitware/qtextensions
Build VTK 9.0.1 with cmake with these flags,
And finally Telesculptor 1.1.1 with Cmake.
Could this issue be relate to this?
Kitware/kwiver#517
I got this error.
The text was updated successfully, but these errors were encountered: