Replies: 12 comments 16 replies
-
Hi psyinf?
In the last few months I started to use conan <https://conan.io> quite
intensively to manage my dependencies. Since it easily integrates with
CMake I wonder if the vsg community is interested to make vsg available
here <https://conan.io/center>. Having some minor experience with the
process of creating a conan package I'd sort of volunteer to make one for
the vsg 1.0.0 release.
There are some open questions however:
- we need to specify the minimum Vulkan version
The VSG is design/implement to be backwards compatible back to Vulkan 1.1.
It's 1.2 when Vulkan really gets in its stride. Driver availability would
be the big question.
Does conan have Vulkan as part of the suite of dependencies it can pull
in? If so what is the Vulkan and glslLang version range?
- What build options, apart from static/dynamic linking must be
available
glslLang or no glslLang would be the big one. For most desktop apps I
think shader compiling and composition is useful so would expect glsgLang
There is also the ability to set the VSG_MAX_DEVICES to a higher number
than the default of 1. Leaving it at 1 is probably OK for 99% of users.
Multi-device support is only really something I've discussed within the
community. Perhaps as time goes on this will become more important, but
frankly if you want to use multiple devices then you are power user so
should be compiling the VSG from scratch anyway.
- An initial version would not include any of the companion projects
vsgXchange is pretty important for any desktop application development so
if the VSG is included vsgXchange needs to be distributed as well. This
then brings up the permulatios on the various dependencies that it supports.
What are your thoughts on this?
Death by permutations :-)
Cheers,
Rpbert/
… Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Hi Robert, Sorry for the alias-name and not introducing properly. Actually my name is Sebastian Messerschmidt, and it might ring a bell, since I've been part of the OSG community for a couple of years.
That's one item I was going to explore. If I got this correctly, the base Vulkan SDK basically is header only. Correct me If I'm wrong here.
Since those are optional, they could be added as an optional dependency, so users could compose the set of libraries they see fit.
When using conan one would usually add a dependency and some options. This would pull in the dependencies and If available for the requested platform/options/permutation the package usually is pulled as is. If not available, conan provides a build script and will build the dependent packages. So basically conan is exactly built to cover permutation hell introduced by C++'s ABI/compiler mismatches. If you feel this could be a valuable contribution to vsg, I'll invest at least some initial time to test it locally. It surely helped me in my previous projects to have OSG available at conan-center. Cheers |
Beta Was this translation helpful? Give feedback.
-
Hi Sebastian,
Conan being able to compile combinations that don't have binaries is
certainly helpful.
Would one normally put conan files into a repo? Or can this be part fo the
Cmake build?
I am planning on jumping back over to the OSG side to make stable release,
this I will have to juggle with client and VSG work, but one of things I'd
like to do, where possible, is to converge how both projects are managed at
C++, CMake and github level.
I don't know how much we'll be able to share, but I'd like to avoid having
to keep track of two different approaches as well as two different code
bases. I mention this as there may be opportunities on the packaging side
as well. I expect the OSG/VSG communities would find familiarity helpful
too.
Cheers,
Robert.
Message ID: <vsg-dev/VulkanSceneGraph/repo-discussions/590/comments/4184663@
github.com>
… |
Beta Was this translation helpful? Give feedback.
-
Hi, about the conan "files". In order to have the package available, one need to create a python configuration that follows the template I've linked in the initial post. Since my first attempts with conan only used a header-only library I need to figure out if there are any changes required to the CMake infrastructure in vsg. But since this wasn't really needed for OSG AFAIR I don't expect problems here. With your consent, I'd try to establish an initial version at conan-center and we iterate from there. Cheers |
Beta Was this translation helpful? Give feedback.
-
HI Sebastian,
Is it possible to trial packaging before it goes mainstream/officially part
of conon?
I am thinking it might be useful for me to try it out to better understand
the process and what end users will experience.
Cheers,
Robert.
|
Beta Was this translation helpful? Give feedback.
-
I've finished the first conan package descriptor (featuring the options to build static/dynamic library for all build types). Next steps are to add the glslang package as an option. The fork can be found here. For testing the local test guide can be used. TLDR; After building the package locally, it can be used like a package remotely available on conan-center. |
Beta Was this translation helpful? Give feedback.
-
I've stepped forward publishing/merge-requesting the VSG-conan package for 1.0.0. This is rather unfortunate, since it really is orthogonal to what conan tries to solve: offering packages with adjacent dependencies. As of now this changes the game, as it would require changes to the CMake files of VSG at least to keep it compatible with the conan-approach. I think a rather minimal approach would be to use the CMake tooling to check if a certain version of a dependency is available via CMake itself before actually "falling back" by checking out the submodule. Any thoughts? |
Beta Was this translation helpful? Give feedback.
-
@robertosfield Thanks for keeping me in the loop here. I've changed the still-pending pull request here to incorporate your changes. Since git is prerequisite for conan AFAIK, I took the liberty to model this without the preliminary check. I'm quite positive the pull-request will be merged any time soon (there was a lot of work for the reviewers due to conan 2.0 transition work). I also started preparing vsgXchange and vsgImGui to be integrated with conan (as I need them for my upcoming projects anyways). From there it should be pretty trivial to add the remaining repositories if needed by anyone. Long term goal is to have VSG fully available. Cheers |
Beta Was this translation helpful? Give feedback.
-
@robertosfield Fortunately I finally found some time to drive the conan packages here a bit closer to being accepted. There is one caveat for now: I had to drop the glslang support, as conan more or less dictates dependencies to be part of conan. Therefore simply checking out glslang etc simply doesn't work. In order to circumvent this I need to use glslang as a dependencies. Unfortunately the conan-package doesn't seem to export the public-headers (why on earth?). So I'd resort to create a vsg-glslang package here. For this I need exactly one thing from you: A tag/release of the VSG-1.0.x branch. Could you please provide this? Cheers |
Beta Was this translation helpful? Give feedback.
-
@robertosfield The issue is that conan is relatively strict about how to handle "dependecies". It relies on using conan-packages for external code and such. P.S. does the vsg-built glslang drop-in make use of the SPIRV optimizer? Cheers |
Beta Was this translation helpful? Give feedback.
-
Just to add to this discussion. Our company is heavily invested in conan/artifactory. It is integral to our CI build process. |
Beta Was this translation helpful? Give feedback.
-
I have too much work to manage with core VSG tasks to take on tasks like conan support and other 3rd party packaging schemes so have to rely upon the community for help. Where it's possible I'm happy to see changes to the CMake to make it easier for these 3rd party packaging schemes but it has to be clean and straight forward to maintain, if it looks like one of these packaging schemes put too much strain on VSG's existing CMake support then I'll not merge them, it's already a challenge to keep things building in all the different platform/build combinations that VSG users come up with - it's all too easy to fix things one set of users but break it for another set. So if you want to propose changes let me know I can make suggestions of whether that looks viable for long term support. As a general comment, in recent VSG-1.1.x developer releases glslang has been made an external dependency, this was meant to resolve build issues for end users, but it's actually caused it's own problems as glslang is so inconsistently distributed by 3rd party packaging, this might also be an issue for conan unless others have shaken down the problems with glslang. For myself, my priority is making CMake build itself easy for users to integrate it directly. |
Beta Was this translation helpful? Give feedback.
-
Hi,
In the last few months I started to use conan quite intensively to manage my dependencies. Since it easily integrates with CMake I wonder if the vsg community is interested to make vsg available here. Having some minor experience with the process of creating a conan package I'd sort of volunteer to make one for the vsg 1.0.0 release.
I've already contributed some header-only math library so I at least know the process and might be able to provide the initial work required for this. How to contribute is described here
I'd also document some key aspects on how to maintain/create packages for future releases.
There are some open questions however:
What are your thoughts on this?
Beta Was this translation helpful? Give feedback.
All reactions