Как прервать работу файла порта 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 к порту, а не пытаться исправить эту ошибку в вашем порту.

Другие вопросы по тегам