Как прервать работу файла порта 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
не остановит выполнение самостоятельно.
Как остановить выполнение, чтобы не тратить время пользователей на сборку, которая в противном случае завершится ошибкой в самом конце.
1 ответ
Использовать
return -code error "error message"
, или сокращенное обозначение того же,
error "error message"
.
Обратите внимание, что вы должны использовать
ui_error
перед этим, чтобы напечатать удобочитаемое сообщение для пользователя - хотя сообщение об ошибке также печатается, оно может иногда теряться в выводе.
Кроме того, обратите внимание, что
$prefix/bin/perl
это зависимость сборки от
linuxdoc-tools
. Если это также необходимо во время выполнения, вы должны отправить запрос на перенос, который добавляет
depends_run path:bin/perl:perl5
к порту, а не пытаться исправить эту ошибку в вашем порту.