如何在错误情况下中止macports端口文件?

问题描述

我正在研究 cc65 上的版本变更,并且遇到了 linuxdoc-tools 问题。由于我无法修复 linuxdoc-tools ,并且有一种简单的解决方法,因此我决定添加一个if语句,以将解决方法告知用户

    if {! [file exists ${prefix}/bin/perl] } {
        ui_error "
«${prefix}/bin/perl» is missing but the linuxdoc-tools depends on it.

Please create an appropriate symbolic link for linuxdoc-tools to work.
"
    exit 1
    }

粗暴但我能做的最好,因为我既不是 perl5 也不是 linuxdoc-tools 维护者,并且我不想花很多时间在版本凸块。

但是,MacPorts无法理解exit 1,而ui_error不会自行停止执行。

我该如何停止执行,以免浪费用户时间在构建上,否则最终会失败。

解决方法

使用return -code error "error message"或同一事物的简写error "error message"

请注意,在此之前,您应该使用ui_error为用户打印一条人类可读的消息-当错误消息也在被打印时,有时会在输出中丢失。

此外,请注意$prefix/bin/perllinuxdoc-tools的构建依赖项。如果在运行时也需要它,则应提交将depends_run path:bin/perl:perl5添加到端口的拉取请求,而不要尝试在端口中修复此错误。