[devel] Определение целевой архитектуры в mkimage и m-p

Alexey Gladkov legion на altlinux.ru
Ср Окт 2 13:06:31 MSK 2019


On Wed, Oct 02, 2019 at 01:46:10PM +0400, Ivan A. Melnikov wrote:
> On Wed, Oct 02, 2019 at 12:16:19PM +0300, Leonid Krivoshein wrote:
> > 
> > 
> > 02.10.2019 9:43, Антон Мидюков пишет:
> > > 02.10.2019 13:38, Ivan A. Melnikov пишет:
> > > > On Wed, Oct 02, 2019 at 12:06:58AM +0300, Leonid Krivoshein wrote:
> > > > > Коллеги, приветствую!
> > > > > 
> > > > > Простой вопрос: как в процессе сборки образа отличить целевую
> > > > > архитектуру:
> > > > > x86_64, aarm64 или powerpc? Могу я полагаться на $(uname -m) или
> > > > > есть более
> > > > > кошерная переменная? И что там конкретно должно быть, на всякий?
> > > > Полагаться на $(uname -m) нельзя -- образы часто собираются через
> > > > qemu-user на x86_64, особенно для arm* и mipsel.
> > > > 
> > > > Если Вы про mkimage-profiles, то там есть переменная $(ARCH), или
> > > > $GLOBAL_ARCH во всяких image-scripts.d. Примеры использования, и,
> > > > соответственно, что там может быть, несложно на git grep'ать.
> > > В mkimage-profiles не проблема. Леонид хочет в mkimage сделать проверку
> > > архитектур. Но там, вроде, проверка архитектур ни где не делается.
> > > 
> > 
> > Скрипт отрабатывает в чруте собираемого образа. По большому счёту не так
> > важно, будет он частью mkimage, частью m-p или попадёт туда как-то иначе.
> > Потому что в конечном итоге его вызовет mkimage. И, как я подозреваю,
> > вызовет он его, предварительно почистив окружение. Поэтому и спрашиваю...
> 
> В m-p проще (и правильнее наверное) использовать $GLOBAL_ARCH, она
> создаётся и прокидывается куда нужно; вне m-p вполне можно воспользоваться
> $(rpm --eval '%_host_cpu'), видел в паре мест, должно работать хорошо.
> 
> Ещё можно скрипт в пакет запаковать, правильный для каждой архитектуры,
> а в профиле просто добавить пакет ;D

В mkimage есть GLOBAL_TARGET, TARGET [1], которая превращается в
соответствующую опцию hsh. Да, это конечно не архитектура процессора.

Если же используется qemu, то есть HSH_USE_QEMU [2], которая определяет
какой qemu будет использоваться.

[1] https://github.com/altlinux/mkimage/blob/master/doc/README.ru#L211
[2] https://github.com/altlinux/mkimage/blob/master/doc/README.ru#L369

-- 
Rgrds, legion



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