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

Leonid Krivoshein klark.devel на gmail.com
Ср Окт 2 14:00:53 MSK 2019


02.10.2019 13:06, Alexey Gladkov пишет:
> 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
>

Всем спасибо!

Как я пока для себя понял, надёжнее всего использовать $TARGET и 
вызывать скрипт из mkimage, передавая архитектуру через командную строку 
как-то так:

mki-run /path/to/script --arch "$TARGET" ...


-- 
Best regards,
Leonid Krivoshein.

----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20191002/eafd6c92/attachment.html>


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