Bug 9808

Summary: Compiling x86 version on x86_64 kernel
Product: Sisyphus Reporter: Denis Pynkin <dan4s>
Component: kernel-image-std26-upAssignee: Sergey Vlasov <vsu>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2    
Version: unstable   
Hardware: all   
OS: Linux   

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.