Bug 14578 - Insufficient error reporting in mono.req
: Insufficient error reporting in mono.req
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/rpm-build-mono)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2008-02-19 13:26 by
Modified: 2008-03-12 15:46 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-02-19 13:26:11
Отваливается сборка некоего 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
------- Comment #1 From 2008-02-20 17:10:09 -------
Проблема в том что monodis выводит сообщение об ошибке не на stderr а на
stdout.
Поэтому я не знаю стоит ли добавлять костыль в скрипт mono.req или же лучше
исправить вывод диагностики в monodis.
------- Comment #2 From 2008-02-21 08:55:20 -------
Мне больше нравится второй вариант.
------- Comment #3 From 2008-03-09 16:01:42 -------
В glib2 нету простой функции вместо g_print(), которая могла бы печатать на
stderr вместо с stdout.  Короче, я решил не трогать код monodis(1), а добавил
специальную обрабтку ошибок monodis в mono.req.  Fixed in rpm-build-mono
1.3.2-alt1.
------- Comment #4 From 2008-03-09 17:25:40 -------
А вообще у вас следующая проблема (с вашим пакетом): вы пытаетесь запаковать
какой-то левый байткод, созданный не с помощью mono-mcs, а скомпилированный
заранее кем-то ещё.  Если бы код был скомпилирован с помощью mono-mcs, то по
зависимостям всё должно было бы срастись (т.к. mono-mcs требует mscorlib.dll,
которого у вас не найдено при запуске monodis).

Пожалуйста, не пакуйте левый байткод.  Это похоже на запаковку "левых" (ранее
скомпилированных) бинариков без компиляции исходников.
------- Comment #5 From 2008-03-09 17:28:59 -------
Я также собираюсь перепилить пакет mono, чтобы monodis всегда работал (по
зависимостям сразу после установки).  По сути monodis требует mscorlib.dll. 
Точнее, обязательная инициализация mscorlib.dll содержится в коде libmono. 
Значит, скорее всего, придётся отпилить пакет mono-mscorlib и добавить на него
зависимость в libmono.