Я пытаюсь добавить полезные сообщения для произвольных сборок. Если сборка не удалась, пользователь может, например, установить пакет с другими аргументами.
Моя идея интерфейса заключается в предоставлении функции build-with-message
, которая будет вызываться с чем-то вроде этого:
build-with-message
''Building ${pkg.name}. Alternative invocations are: ..''
pkg
Моя реализация основана на builtins.seq
build-with-message = msg : pkg :
seq
(self.runCommand "issue-message" {} ''mkdir $out; echo ${msg}'')
pkg;
Когда я собираю пакет с build-with-message
, я никогда не вижу сообщения. Я догадываюсь, что seq
оценивает runCommand
достаточно далеко, чтобы увидеть, что набор возвращается и переходит к построению пакета. Я тоже пытался с deepSeq
, но сборка deepSeq
не удалась на runCommand
. Я также попытался вызвать некоторые атрибуты из runCommand
, например
(self.runCommand "issue-message" {} ''mkdir $out; echo ${msg}'').drvPath
(self.runCommand "issue-message" {} ''mkdir $out; echo ${msg}'').out
. Я думал, что вызов одного из них вызовет остальную часть сборки. Возможно, я не называю правильный атрибут, но в любом случае те, которые я пробовал, не работают.
Итак:
- Есть ли способ заставить
runCommand
построить по вышеуказанному сценарию? - Уже есть какая-то встроенная функция, которая позволяет мне выдавать сообщения поверх произвольных сборок?