Bug 9808 - Compiling x86 version on x86_64 kernel
: Compiling x86 version on x86_64 kernel
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/kernel-image-std26-up)
: unstable
: all Linux
: P2 enhancement
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2006-07-24 21:39 by
Modified: 2006-10-10 20:19 (History)


Attachments


Note

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


Description From 2006-07-24 21:39:45
Система следующей конфигурации: ядро x86_64, все окружение i586 (работает в
chroot, хотя это не принципиально).
При компиляции 32-х битной версии все время определяет архитектуру, как x86_64,
после чего вылетает при разборе конфига.
Добавление параметра --target для hasher не помогает.

Решение: в секцию %build, перед началом собственно компиляции, добавить строку
устанавливающую переменную окружения ARCH. Например:

export ARCH=`echo $RPM_TARGET_ARCH | sed -e 's/i[4-9]86/i386/'`
------- Comment #1 From 2006-07-24 21:59:49 -------
Вообще для более полной эмуляции 32-битного окружения предназначена команда
setarch i386:

$ uname -m
x86_64
$ setarch i386 uname -m
i686

Но в принципе можно и явно выставлять переменную ARCH (только не так - в пакете
kernel-build-tools уже есть макрос %base_arch, возвращающий нужное значение,
который правильно обрабатывает ещё и варианты pentium4, athlon, k6).
------- Comment #2 From 2006-07-25 14:14:23 -------
> Но в принципе можно и явно выставлять переменную ARCH (только не так - в пакете
> kernel-build-tools уже есть макрос %base_arch, возвращающий нужное значение,
> который правильно обрабатывает ещё и варианты pentium4, athlon, k6).

спасибо, не знал.
лично мое мнение - ARCH _нужно_ выставлять для пакетов связанных с ядром. 
использование setarch удобно использовать только в сборочных средах имхо. Или
модифицировать rpmbuild, что б при указании --target работоло с использованием
setarch.
А при использовании переменной окружения - не нарушается нормальное поведение
rpmbuild и идеологии кросскомпиляции ;-)
------- Comment #3 From 2006-07-25 20:29:24 -------
Some words for comment #2.
Setarch utility forks new shell process with pseudo new arch environment such 
as i386 on x86_64 by changing all libc syscalls. That's why setarch more 
preferable than other ways to do something like build under chroot.

Look to Fedora Extras buildsys for example.
------- Comment #4 From 2006-10-10 20:19:31 -------
Установка ARCH добавлена в std26-2.6.16-alt11.