conan-io / conan

Conan - The open-source C and C++ package manager
https://conan.io
MIT License
8.27k stars 981 forks source link

[question] Deploying files from skipped dependencies #17313

Open schaber-hxg opened 22 hours ago

schaber-hxg commented 22 hours ago

What is your question?

Hi! I have a question regarding deploying files from the conan cache to another directory. We do that by parsing the json output of a conan install command. We know of the (custom) deployers feature, more on that later. As i understand, the _packagefolder is set to None on purpose for skipped dependencies in the graph. You explained that in this issue: https://github.com/conan-io/conan/issues/14299#issuecomment-1637231388. I guess one reason to skip is when linking a static library A into another shared library B that is then used by an application. In this case no library files of A (e.g. .dll or .so) are required by the application. In our case this assumption (that no files of A need to be made available to the application) does not hold: the static library A provides resource files that may be used by the application (via lib A). The libraries in question are Qt with webengine and libdrm. libdrm provides files via _cppinfo.resdirs that we want to deploy to our application. We read the json output of a conan install command to get the paths to the library files and deploy them. For libdrm the package_folder is None and we cannot get the resource files. We are aware of the deployers feature of conan install and evaluate using it. However, even when using deployers the package_folder is still None I think.

We are still investigating if the resources files of libdrm are really required in our application. Regardless of the outcome it would be interesting what your thoughts are on this. Are you aware of that use case? Is the qt package supposed to include the resource files of libdrm (and it's a bug in the qt recipe)? Is there another way to access the resource files if the package_folder is None?

Conan version 2.7.1, OS: Linux, compiler gcc

Thanks for your work on conan

Have you read the CONTRIBUTING guide?

AbrilRBS commented 21 hours ago

Hi! More can be said about the QT aspects of your question, but regarding your skip issue, if your use-case requires all binaries to be present, you might want to try using the tools.graph:skip_binaries=False conf (either your profile or CLI invokation), which will force Conan not to skip anything you might need for the deployers/your custom setup.

Let me know if this helps, and I'll let others chime in for the other questions :)