Отваливается сборка некоего mono-приложения без какой-либо внятной диагностики: Finding Requires (using /usr/lib/rpm/find-requires) Executing(Requires): /bin/sh -e /usr/src/tmp/rpm-tmp.25404 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + /usr/lib/rpm/find-requires find-requires: running scripts (files,lib,mono,monolib,pam,perl,pkgconfig,pkgconfiglib,python,shebang,shell,static,symlinks) error: /bin/sh failed error: Failed to find Requires RPM build errors: /bin/sh failed Failed to find Requires Command exited with non-zero status 1 Выяснить, в чём проблема, удалось только с помощью rpm -ba -vvv: ++ monodis --assemblyref /usr/src/tmp/ide-buildroot/var/www/ido/ide/Bin/ISIDEControls.dll + out='The assembly mscorlib.dll was not found or could not be loaded. It should have been installed in the `/usr/lib/mono/2.0/mscorlib.dll'\'' directory.' + exit_handler + local rc=1 $out должен выводиться даже если сборка идёт без -v|-vv|-vvv
Проблема в том что monodis выводит сообщение об ошибке не на stderr а на stdout. Поэтому я не знаю стоит ли добавлять костыль в скрипт mono.req или же лучше исправить вывод диагностики в monodis.
Мне больше нравится второй вариант.
В glib2 нету простой функции вместо g_print(), которая могла бы печатать на stderr вместо с stdout. Короче, я решил не трогать код monodis(1), а добавил специальную обрабтку ошибок monodis в mono.req. Fixed in rpm-build-mono 1.3.2-alt1.
А вообще у вас следующая проблема (с вашим пакетом): вы пытаетесь запаковать какой-то левый байткод, созданный не с помощью mono-mcs, а скомпилированный заранее кем-то ещё. Если бы код был скомпилирован с помощью mono-mcs, то по зависимостям всё должно было бы срастись (т.к. mono-mcs требует mscorlib.dll, которого у вас не найдено при запуске monodis). Пожалуйста, не пакуйте левый байткод. Это похоже на запаковку "левых" (ранее скомпилированных) бинариков без компиляции исходников.
Я также собираюсь перепилить пакет mono, чтобы monodis всегда работал (по зависимостям сразу после установки). По сути monodis требует mscorlib.dll. Точнее, обязательная инициализация mscorlib.dll содержится в коде libmono. Значит, скорее всего, придётся отпилить пакет mono-mscorlib и добавить на него зависимость в libmono.