[devel] I: kernel-build-scripts

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вт Фев 26 19:50:59 MSK 2008


On Mon, Feb 25, 2008 at 10:33:23PM +0300, Dmitry V. Levin wrote:
> - Используемый для сборки модулей add_changelog должен быть пропатчен.

Патченый add_changelog необходим только в частном случае - когда
формируются пакеты для архитектуры, не совпадающей с архитектурой
хост-системы (в настоящий момент единственный случай, когда возникает
такая ситуация - сборка пакетов для i586 на хосте x86_64).  Проблема в
том, что add_changelog при своей работе использует rpm -q --specfile
для извлечения информации о версии и т.п. из обрабатываемого
spec-файла, при этом выполняется раскрытие макросов с использованием
/usr/lib/rpm/*/macros, однако при запуске скриптов под setarch i586
ищется файл макросов для i586, а не для x86_64.  Хотя само по себе
отсутствие файла макросов не является ошибкой, в некоторых spec-файлах
модулей содержатся ссылки на макросы, которые в подобном случае
оказываются не определены.  Лучшего решения, чем передавать rpm опцию
--define '_allow_undefined_macros 1' для игнорирования неопределённых
макросов при выполнении add_changelog, я пока не нашёл.

> Актуальную версию я нашёл в таком месте, в котором её больше никто не найдёт.
> 2vsu: Необходимо закоммитить.

Патч там следующего вида:

1. Изменение обработки опции -a|--args в stamp_spec:

--- /usr/bin/stamp_spec	2007-12-27 12:17:30 +0300
+++ /home/vsu/bin/stamp_spec	2008-01-14 22:32:52 +0300
@@ -89,7 +89,7 @@
 	qf="* $d $p $n\n"
 fi
 
-[ -n "$RPMARG" ] || RPMARG="-q --qf $(Quote "$qf")"
+RPMARG="$RPMARG -q --qf $(Quote "$qf")"
 for spec in "$@"; do
 	eval "$(Quote "$RPM")" $RPMARG --specfile "$(Quote "$spec")" |head -1
 done

Т.е., раньше опция -a полностью заменяла все параметры, передаваемые
rpm; после этого изменения переданные параметры добавляются к тем,
которые сформировал скрипт stamp_spec.  Допустимо ли подобное
изменение, или придётся завести дополнительную опцию?  (В текущем
варианте опция -a фактически бесполезна, поскольку скрипт stamp_spec в
этом случае фактически сводится к вызову rpm с указанными параметрами
с добавлением --specfile.)

2. Добавление --define '_allow_undefined_macros 1' в параметры вызовов
rpm, выполняемых скриптом add_changelog:

--- /usr/bin/add_changelog	2007-12-27 12:17:30 +0300
+++ /home/vsu/bin/add_changelog	2008-01-14 22:37:30 +0300
@@ -21,9 +21,9 @@
 
 PROG="${0##*/}"
 
-STAMPER=/usr/bin/stamp_spec
+STAMPER=/home/vsu/bin/stamp_spec
 RPM=/bin/rpm
-RPMARG=
+RPMARG="--define '_allow_undefined_macros 1'"
 ENTRY='- '
 NOCHECK=
 
@@ -105,8 +105,8 @@
 		continue
 	fi
 	if [ -z "$NOCHECK" ]; then
-		oldver=`$RPM -q --qf '%{CHANGELOGNAME}\n' --specfile "$spec" |sed -ne '/^(none)$/q;s/[^<]\+<[^>]\+> *\(.\+\)$/\1/pg'`
-		newver=`$RPM -q --qf '%|SERIAL?{%{SERIAL}:}|%{VERSION}-%{RELEASE}\n' --specfile "$spec" |head -1`
+		oldver=`$RPM --define '_allow_undefined_macros 1' -q --qf '%{CHANGELOGNAME}\n' --specfile "$spec" |sed -ne '/^(none)$/q;s/[^<]\+<[^>]\+> *\(.\+\)$/\1/pg'`
+		newver=`$RPM --define '_allow_undefined_macros 1' -q --qf '%|SERIAL?{%{SERIAL}:}|%{VERSION}-%{RELEASE}\n' --specfile "$spec" |head -1`
 		if [ "$oldver" = "$newver" ]; then
 			echo "$PROG: $spec: version \"$oldver\" unchanged, skipping"
 			exitcode=1

В принципе можно переделать этот скрипт, чтобы значение $RPMARG не
только передавалось в stamp_spec, но и использовалось при вызовах rpm
из самого скрипта add_changelog; тогда можно будет не менять значение
по умолчанию, а просто при вызове add_changelog из buildmodules
передавать опцию -a "--define '_allow_undefined_macros 1'".  Возможно,
так и стоит сделать, а по умолчанию оставить выдачу ошибок при
обнаружении неопределённых макросов?
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20080226/2cd96d82/attachment-0002.bin>


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