我有一组 protobuf 类型,我想为序列化生成 reasonML 代码。到目前为止,我发现 ocaml-protoc 无法在我的系统上安装。使用码头工人,
FROM ocaml/opam:alpine
RUN opam remote add dev git://github.com/mirage/mirage-dev
RUN opam depext -i mirage
RUN opam depext conf-m4.1
RUN yes | opam install ocaml-protoc
然后运行命令:
docker run \
--mount type=bind,source=$(PWD)/../src/proto,target=/home/opam/ocaml \
--mount type=bind,source="$(PWD)"/../../proto,target=/home/opam/proto \
-ti eb1b1ed36a35 \
ocaml-protoc -ml_out=/home/opam/ocaml /home/opam/proto/chat.proto > /dev/null"
我已经能够编译一组 ml/mli 文件。但是,这些文件依赖于一些已卸载的库,例如Pbrt
. 摘抄:
let rec decode_friend_event_etype d =
match Pbrt.Decoder.int_as_varint d with
| 0 -> (Chat_types.Arrival:Chat_types.friend_event_etype)
| 1 -> (Chat_types.Departure:Chat_types.friend_event_etype)
| _ -> Pbrt.Decoder.malformed_variant "friend_event_etype"
--------------^
有没有一种干净的方法可以在不安装任何本机库的情况下解决这个问题?必须提供任何包含的源代码,以便 bucklescript 能够将其编译成 JS。
想到的解决方案是生成通用依赖项(例如 Pbrt)以及 proto 实现。有没有人找到解决这个问题的方法?