如何解决有没有办法优雅地拒绝在不受支持的操作系统上安装 opam 包?
我正在开发一个 opam 包,虽然将来有望在所有操作系统上运行,但目前仅在 Linux 上构建。我想告诉尝试在 MacOS 等上安装的用户,该过程不会成功。我在 opam 包描述中看到过这样的事情:
opam-version: "2.0"
authors: "Person Maintainerson"
maintainer: "Person Maintainerson"
build: [
["./configure"
"amd64-linux" {os = "linux"}
"amd64-macosx" {os = "macos"}
"amd64-cygwin" {os = "cygwin"}]
[make]
]
install: [
[make "install"]
]
synopsis: "A one-line description"
url {
src: "proto://path/to/source.tar.gz"
}
但我不知道如何告诉 opam 不要做某事。
在 opam manual 中有关于如何为失败打印特定消息的说明,但从示例中我不清楚 <filter>
的语法是什么。
post-messages: [ <string> { <filter> } ... ]
:允许在安装结束后向用户打印特定消息。特殊的布尔变量 failure 在过滤器的范围内定义,可用于在出现错误时打印消息(通常是有关如何解决的提示,或指向未解决问题的链接)。成功也被定义为 !failure 的语法糖。
解决方法
有一个 available:
字段应该适用于此:http://opam.ocaml.org/doc/Packaging.html#Advanced-usage
操作系统约束:可用字段是一个公式,它根据操作系统或其他全局 opam 变量确定您的包的可用性。例如:
available: [ os != "macos" ]
在您的情况下,我认为它应该是 [ os = "linux" ]
。
顺便说一句,如果您决定使用 dune-project
文件来生成您的 opam
文件,您将需要一个模板,如下所示:https://github.com/yawaramin/ocaml-decimal/blob/2907175c02ca1bb117ee9703b8d642b721a3d6e8/decimal.opam.template
这是因为 dune-project
文件(还)不支持 available:
opam 字段,所以它们需要这个额外的模板文件来传递它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。