[sisyphus] rpm --bb ./specfile не пашет

Vladimir Lettiev =?iso-8859-1?q?crux_=CE=C1_syktsu=2Eru?=
Чт Май 20 20:22:28 MSD 2004


Dmitry V. Levin пишет:

> On Sat, May 15, 2004 at 08:55:23PM +0400, Ildar Mulyukov wrote:
> 
>>Yuri N. Glibovetz wrote:
>>
>>>Ivan Angarskiy пишет:
>>>
>>>
>>>>$rpm -bb ./samba.spec
>>>>./samba.spec: No such file or directory 
>>>
>>>rpm-build не установлен
>>
>>В конце концов надо что-нибудь тяжёлое повесить на rpm, чтобы он это не 
>>писал. А писал что-нибудь вразумительное.
> 
> 
> Да висит уже давно,
> http://bugzilla.altlinux.ru/show_bug.cgi?id=1928
> 
> Вот бы исправил тот, кому это действительно мешает.
> А то так и будет висеть.
> 

А вы знаете, похоже rpm тут вообще не причём. Багу надо исправлять в 
пакете libpopt.

Вот примерно такой патч:

--- popt-20020315.orig/popt.c	2004-05-20 02:23:28 +0400
+++ popt-20020315/popt.c	2004-05-20 09:38:38 +0400
@@ -438,6 +438,11 @@
  #endif

      rc = execvp(argv[0], (char *const *)argv);
+
+    con->optionStack->next = 1;
+    con->nextLeftover = 0;
+//    con->optionStack->argv[0] = argv[0];
+
      return POPT_ERROR_ERRNO;
  }

Это заставляет execComand() при неудачном вызове /usr/lib/rpm/rpmb 
позиционировать "каретку" на нулевой аргумент argv[], т.е. на имя 
исполняемого файла, а не на последний аргумент в строке.
Одну строчку я закомментировал, т.к. пока не представляю как надо 
правильно преобразовать типы данных, поскольку con->optionStack->argv[0] 
- это похоже char *, а argv[0] - const char ** ...

В итоге при пересборке libpopt, при неустановленном rpm-build выводится 
сообщение:
$rpm -bb ./samba.spec
rpm: No such file or directory

Если правильно прописать преобразование в закомментированной строке, то 
теоретически будет так:
$rpm -bb ./samba.spec
/usr/lib/rpm/rpmb: No such file or directory

что и требовалось доказать...

Прошу помощи в доведении патча до нормального состояния...


-- 
С уважением, Леттиев Владимир aka crux <crux на syktsu.ru>



Подробная информация о списке рассылки Sisyphus