LINUX.ORG.RU

Совместимость бинарных пакетов

 , , , ,


0

1

Есть основные требования к сборке пакетов на бинхосте, предъявляемые для совместимости с клиентскими системами, для которых эти пакеты собираются. Вот эти требования (из документации):

1. The client and server architecture and CHOST must match.

2. The CFLAGS and CXXFLAGS variables used to build the binary packages must be compatible with all clients.

3. USE flags for processor specific instruction set features (like MMX, SSE, etc.) have to be carefully selected; all clients need to support them.

Основной вопрос касается пункта 2.

Допустим, на одной клиентской машине используется CFLAGS:

CFLAGS="-O2 -pipe -march=haswell -mtune=native"

на другой клиентской машине:

CFLAGS="-O2 -pipe -march=sandybridge -mtune=native"

а на binhost он будет как в дефолтном make.conf, т.е.:

CFLAGS="-O2 -pipe"

Вопрос 1: будет ли в таком случае выполнено требования пункта 2?

Вопрос 2: есть еще переменная CPU_FLAGS_X86. Уж она-то разная на всех машинах. Выставлять ли её в make.conf на бинхосте? Поставить в неё общие флаги для всех машин? или для универсальности лучше вообще не ставить?

Здравствуйте, по первому вопросу ответ положительный, совместимость по флагам есть. По второму вопросу - я бы не стал ничего ставить - влияние на производительность в пределах погрешности измерений, IMHO...

Serge10 ★★★ ()

да

локальные флаги на клиентских машинах могут быть какие угодно, binhost должен выдавать минимально поддерживаемый всеми машинами набор инструкций

Harald ★★★★★ ()

или для универсальности лучше вообще не ставить?

this

В общем случае её дефолтное значение - это минимальный набор поддерживаемых целевой архитектурой возможностей. Если у тебя там не намечаются какие-нибудь древние VIA C3(которые почти i686, но на самом деле нет) в клиентах, конечно...

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Спасибо. Ещё нюанс: системы-клиенты отличаются на один флаг, а именно на наличие флага «X» в make.conf. Все остальные профили и USE-флаги в них одинаковы. А по этому поводу документация говорит, что:

If a package is built with a different USE flag combination,
Portage will either ignore the binary package (and use
source-based build) or fail...

То есть, видимо, нужно иметь 2 полноценных chroot'а с системами, отличающимися только наличием/отсутствием флага «X». Ну а машина-binhost будет вынуждена хранить две директории с системами. Можно ли это как-то предотвратить или обойтись только одним профилем системы?

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 2)
Ответ на: комментарий от early_britney_fun

Нет, предотвратить это нельзя by design. С бинарными пакетами нужно так или иначе унифицировать набор флагов на клиентах, а если этого делать нельзя - держать по сборочному чруту на каждый набор клиентов.

Pinkbyte ★★★★★ ()