Resolution for Opam Build Issues in Opendal's OCaml Bindings during Release
- Dominant language
- Rust
- Stars
- 5.4k
- Forks
- 825
- Avg merge
- 1d 14m
- Merged PRs (30d)
- 127
Description
During the release process, the `OCaml bindings` for Opendal encountered some issues, one of which is as follows. `Opam`, OCaml's package manager, builds from the project's root directory. This requires the presence of files such as `opendal.opam` and `dune-project` in the project's root directory. However, this is not suitable for the Opendal project because these files are specific to just one binding used by Opendal.
A feasible solution currently is to replace `opendal = { path = "../../core" }` with a specific version in the `Cargo.toml` file located in `binding/ocaml`. This allows the binding to be built independently. Consequently, during the release, we can package this binding separately as `apache-opendal-$release_version-binding-ocaml-src.tar.gz`, thus circumventing issues with Opam builds.
However, this approach introduces challenges, such as coordinating development between the binding and the core during ongoing development. I would like to hear everyone's thoughts on how to address these challenges.
Contributor guide
Research direction
Start with binding/ocaml/Cargo.toml and the release process described in the issue. Compare the proposed versioned core dependency and separate apache-opendal-$release_version-binding-ocaml-src.tar.gz package, then determine a development and release workflow that permits independent Opam builds without blocking core-binding development.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ocaml, rust
- Domain
- build-system, release
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100