Bug 9808 - Compiling x86 version on x86_64 kernel
Summary: Compiling x86 version on x86_64 kernel
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: kernel-image-std26-up (show other bugs)
Version: unstable
Hardware: all Linux
: P2 enhancement
Assignee: Sergey Vlasov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-07-24 21:39 MSD by Denis Pynkin
Modified: 2006-10-10 20:19 MSD (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Denis Pynkin 2006-07-24 21:39:45 MSD
Система следующей конфигурации: ядро 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 Sergey Vlasov 2006-07-24 21:59:49 MSD
Вообще для более полной эмуляции 32-битного окружения предназначена команда
setarch i386:

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

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

спасибо, не знал.
лично мое мнение - ARCH _нужно_ выставлять для пакетов связанных с ядром. 
использование setarch удобно использовать только в сборочных средах имхо. Или
модифицировать rpmbuild, что б при указании --target работоло с использованием
setarch.
А при использовании переменной окружения - не нарушается нормальное поведение
rpmbuild и идеологии кросскомпиляции ;-)
Comment 3 Andy Shevchenko 2006-07-25 20:29:24 MSD
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 Sergey Vlasov 2006-10-10 20:19:31 MSD
Установка ARCH добавлена в std26-2.6.16-alt11.