apache / celix

Apache Celix is a framework for C and C++14 to develop dynamic modular software applications using component and in-process service-oriented programming.
https://celix.apache.org/
Apache License 2.0
160 stars 85 forks source link

Debian packages for building bundles w/o installing celix #635

Closed albrecht-j closed 10 months ago

albrecht-j commented 10 months ago

Hi all is it planned to release also debian packages with the necessary libraries included to build bundles without installing the whole celix in the system?

That could be a nice feature and makes it easier to include builds for bundles in CI-Piplines.

Thanks for the feedback

Best Regards Johannes

PengZheng commented 10 months ago

is it planned to release also debian packages with the necessary libraries included to build bundles without installing the whole celix in the system?

Currently, it is possible to select only what you need to build and install when using Conan package manager. For example, if you only need the framework, then only the framework and utils will be built and installed.

conan create . -c tools.cmake.cmaketoolchain:generator=Ninja -b missing -o celix/*:build_framework=True

The above installation will only contain what is needed to build bundles, nothing more. Generally speaking, you only specify what you need, and Conan takes care of everything else (including various 3rd party dependencies). You are guaranteed to have a minimal build satisfying your requirements. IMO, this is the easiest approach, which covers desktop usage and cross-compilation. It allows you to prune the whole dependency tree the way you like. For example, you can turn off any protocol you don't need in libcurl, or you can turn off libcurl entirely by -o celix/*:framework_curlinit=False.

As can be seen from conanfile.py, we have more than 40 build options. To support debian installation, we need to decide first how many debs should there be. Related issue: https://github.com/apache/celix/issues/204

I think we need to update our documentation to provide guidance for this. @pnoltes

PS: Celix 2.3.0 does not support this. Please use the latest trunk (the coming 2.4.0 release).

PengZheng commented 10 months ago

If the above does not satisfy your needs, feel free to reopen it.