PengZheng edited a comment on pull request #401:
URL: https://github.com/apache/celix/pull/401#issuecomment-1074808117


   > It is also possible to update the GitHub Actions to use conan instead of 
directly working on cmake?
   > 
   > Correct me if I am wrong, but I think if we use Conant on CI level, both 
the conanfile.py and the cmake configuration is tested.
   > 
   > Or maybe we could add an extra build which build the now embedded 
test_package (and as result build celix and its deps)
   
   The existing actions test against distribution's native package manager. I 
think we should keep them running.
   Conan-driven test can be added like described by:
   http://codingadventures.org/2021/10/23/github-actions-and-conan/
   Of course we need to add an extra `conan build` to turn Conan options into 
CMake cache variables. This we only have to properly setup options in the 
`conan install` step.
   
   For user's convenience, we may setup a Conan server, and create nightly 
packages, and uploaded all artifacts (including dependencies) for all 
mainstream platforms to the server. When a stable release ready, we can also 
upload it there. For nightly build, I think the following should be enough:
   ```
   conan create . celix/2.2.3@zhengpeng/testing -tf 
examples/conan_test_package/ -o celix:celix_cxx=True -o celix:build_all=True
   conan upload "*" --all -r our_server
   ```
   
   Our build-all package satisfies an immediate testing/prototyping purpose. 
Usually, our end users need to do some customization for Celix and its 
dependencies (OpenSSL/Curl). Conan support downstream customization,  with the 
help of `-b missing`, our user can easily get what he/she wants.
   
   Ideally, we should release our package to the official conan-center. 
However, they promote build-system-neutral packages, while Celix is CMake-only:
   
   
https://github.com/conan-io/conan-center-index/blob/master/docs/error_knowledge_base.md
   
   > [#KB-H016](): "CMAKE-MODULES-CONFIG-FILES"
   
   > The binary package cannot contain module or config CMake files 
("Find*.cmake", "*Config.cmake", "*-config.cmake"). The package shouldn't 
contain specific build-system files to inform to the consumers how to link with 
it. In order to make sure that the package will be consumed with any 
build-system, conan-center repository encourages to declare a [def 
package_info(self)](https://docs.conan.io/en/latest/reference/conanfile/methods.html#package-info)
 method with all the needed information about the package.
   
   > The consumers of the package will be able to consume the packages using a 
specific 
[generators](https://docs.conan.io/en/latest/using_packages/conanfile_txt.html#generators)
 for the build system they use.
   
   Therefore, our package will trigger conan-center-hook errors. To solve this 
difficulty, we need to discuss it with conan developers. I plan to do it once I 
have Celix Conan package deployed in my day job and establish a (probably 
immature) CBD work flow.
   
   Before Conan-driven tests in place, I will watch for all changes to the 
master branch, and keep CMake/Conan consistent with the project structure. For 
example, there are several big PR pending, when merged, I will make necessary 
adjustments immediately. No need to worry other developers unintentionally 
breaking Conan support.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@celix.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to