Closed traversaro closed 1 week ago
Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipes/zenoh
) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipes/zenoh:
{{ stdlib("c") }}
as well. Note that this rule applies to each output of the recipe using a compiler. For further details, please see https://github.com/conda-forge/conda-forge.github.io/issues/2102.Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipes/zenoh
) and found it was in an excellent condition.
Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipes/zenoh
, recipes/zenoh-c
, recipes/zenoh-plugin-webserver
) and found some lint.
Here's what I've got...
For recipes/zenoh-c:
For recipes/zenoh-plugin-webserver:
Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipes/zenoh
, recipes/zenoh-c
, recipes/zenoh-plugin-webserver
) and found it was in an excellent condition.
The recipe is ready for review, thanks! Note that the CI already passed, the CI restarted as I squashed a lot of commits. @conda-forge/help-c-cpp @conda-forge/help-rust @conda-forge/staged-recipes
To help direct your pull request to the best reviewers, please mention a topic-specifc team if your recipe matches any of the following: conda-forge/help-c-cpp, conda-forge/help-cdts, conda-forge/help-go, conda-forge/help-java, conda-forge/help-julia, conda-forge/help-nodejs, conda-forge/help-perl, conda-forge/help-python, conda-forge/help-python-c, conda-forge/help-r, conda-forge/help-ruby,or conda-forge/help-rust. Thanks!
The one comment is probably better addressed in a feedstock where you get more detailed rerender error messages.
The one comment is probably better addressed in a feedstock where you get more detailed rerender error messages.
Exactly, that was my plan. Thanks for the review!
Fix https://github.com/conda-forge/staged-recipes/issues/26053 .
PR content
This PRs adds some initial recipes for Zenoh ecosystem (https://zenoh.io/).
In particular, it contains the following recipes that generate the following packages (structure and naming inspired by the Debian and homebrew existing packages):
zenoh
recipe, corresponding to the https://github.com/eclipse-zenoh/zenoh repo, that generates the packages:zenoh-rust-abi
, meta-package that captures the Rust ABI used byzenohd
and all the Rust pluginszenohd
, containing thezenohd
zenoh router executablezenoh-plugin-rest
, rust plugin that is dlopen-ed byzenohd
zenoh-plugin-storage-manager
, rust plugin that is dlopen-ed byzenohd
zenoh
, metapackage that depends onzenohd
,zenoh-plugin-rest
andzenoh-plugin-storage-manager
for consistency with the equivalent package available for Debian and homebrewzenoh-c
recipe, corresponding to the https://github.com/eclipse-zenoh/zenoh-c repo, that generates the packages:libzenohc
package, containing a C library implemented using rustzenoh-plugin-webserver
recipe, corresponding to the https://github.com/eclipse-zenoh/zenoh-plugin-webserver repo, that generates the packages:zenoh-plugin-webserver
, rust plugin that is dlopen-ed byzenohd
I typically avoid to include multiple recipes in the same PR, but in this case this is useful to show how future
zenoh-*
packages may be packaged.Zenoh specificity
The most important thing is to distinguish two kind of
zenoh
packages:zenohd
(that typically are namedzenoh-plugin-*
orzenoh-backend-*
). These packages need special care as they need to be compiled using exactly the same dependencies and rust compiler version used to compilezenohd
, as otherwise ABI breakage could happen (see https://github.com/eclipse-zenoh/zenoh/tree/0.11.0?tab=readme-ov-file#plugins). The fact that all plugins of a givenzenoh
version are built with the same packages of the same releasezenohd
is ensured by theCargo.lock
files in zenoh repositories, that are appropriately aligned (see for example https://github.com/eclipse-zenoh/zenoh-plugin-webserver/commit/ec2380531d3500606a1afc1819efe8db0b0a277b). So to ensure that allzenohd
andzenoh
plugins installed in the same environment are compatible, we created thezenoh-rust-abi
package on whichzenohd
and allzenoh
plugins depend. The version ofzenoh-rust-abi
is defined as{{ zenoh_version }}.{{ rust_compiler_version }}
, ensuring that if necessary a given zenoh release can be compiled for a newer rust compiler version.An example of the first kind of package is
libzenohc
contained in this PR, it has a run dependency onzenoh-rust-abi
, but just to ensure thatlibzenohc
is installed with azenohd
with the same version:On anothe hand, an example of the second kind of package is
zenoh-plugin-webserver
, that needs to match the ABI that zenohd expects, and so has the following constraint onzenoh-rust-abi
:(the hosts dependency becomes a run dependency thanks to
zenoh-rust-abi
'srun_exports
.Alternatives considered
Possible modifications to the packaging strategies that I considered but eventually did not do:
zenoh
packages that need to share the same rust abi (so basicallyzenohd
and all thezenoh-plugin-*
andzenoh-backend-*
packages) in the same recipe/feedstock. I excluded this in the end as there are many such packages (see https://github.com/search?q=org%3Aeclipse-zenoh+zenoh-plugin&type=repositories and https://github.com/search?q=org%3Aeclipse-zenoh+zenoh-backend&type=repositories) and so it would be eventually be difficult to manage all of them in a single feedstock.rust_compiler_version
inconda_build_config.yaml
, but without that I was unable to use the{{ rust_compiler_version }}
in the recipes, so I found no other solution to be able to compute the version of thezenoh-rust-abi
.Checklist
url
) rather than a repo (e.g.git_url
) is used in your recipe (see here for more details).