apache / apache/opendal

Resolution for Opam Build Issues in Opendal's OCaml Bindings during Release

Open
#4,057 8 comments 2 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.