Возможность изменять USE в зависимомсти от архитектуры... (ABI_X86_32)
RUSPRG 28 апреля, 2015 - 10:46
Есть ли возможность изменить штатный набор флагов USE для 32 сборок пакетов?
Пример: если я собираю wine c 32 поддержкой, то мне там точно не нужны флаги samba, alsa, avahi тд...
Если делать штатными методами, то получается тянется пересборка кучи пакетов, а у них есть зависимости, которые тоже имеют свои USE. И получается, что для того чтобы собрать wine, придется собрать много пакетов с 32 поддержкой, которые wine, как таковому, и не нужны, а собираются только потому, что есть USE флаги в общем make.conf или package.use пакета.
В штатном мане ответа не нашел, может плохо искал?
Поправлено: НЕ х32.
»
- Для комментирования войдите или зарегистрируйтесь
Судя по всему, пока это никак
Судя по всему, пока это никак нельзя реализовать.
Можно так
Можно так попробовать:
https://wiki.gentoo.org/wiki/Handbook:AMD64/Portage/Advanced#Hooking_in_the_emerge_process
Почему в wine 32 не нужны samba, alsa, avahi тд... ?
ps если совсем не использовать wine 64, то можно в use для пакета флаги прописать
В данном случае я смотрю шире.
К примеру одной из зависимостей wine тянется пересборка dev-db/mariadb - для wine как бы и не нужна. но тянется потому что является одним из юзов пакета, который нужен wine, а может это уже зависимость 3 порядка :)
А по ссылке. это будет действовать на весть пакет, независимо от архитектуры.
Если смотреть в общем, и дальше будет также, то придется пересобрать в 32 половину системы... в конечном итоге ради одного wine, увеличится размер занимаемого места, почти в 2 раза и объем компиляции, и половина того что собрано в 32 не будет использовано никогда.... как тотже mysql, udev sqlite harfbuzz flac... это на первый взгляд, без углубления.
"Красотища" то какая!!!
"Красотища" то какая!!! Теперь точно до НГ буду ждать, потом уже подумаю обновляться. Заодно буду поглядывать 1 глазком на подобные темы ;) Красота!
知る者は言わず言う者は知らず
"Бабло, побеждает даже зло"
wine c x32 Точно именно х32?
wine c x32
Точно именно х32? Но зачем на 64 битах такое извращение ?
Пока что я вижу ABI_X86="(+)32 (+)64 x32", что означает, что с вероятностью 99.9% ты не разобрался в ABI.
ИМХО, проблема надумана, для работы вайна достаточно дефолтных флагов.
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
32 не х32
И в комплекте со штатными флагами. Возможно Вас спутало х32 в теме, в заголовке и далее все верно указано :). К тому же четко указано: ABI_X86_32.
Для примера могу еще сказать что драйвера нвидии тянут всего 12 пакетов. при multilib который стоит по умолчанию.
а wine тянет ~140 пакетов (153 всего - нвидия, хотя можно и не вычитать).
при флагах X alsa cups fontconfig gecko gstreamer jpeg lcms mp3 ncurses nls opengl perl png prelink pulseaudio realtime run-exes samba scanner ssl staging threads truetype udisks v4l xcomposite xinerama xml
-capi -custom-cflags -dos -gphoto2 -gsm -ldap -mono -netapi -odbc -openal -opencl -osmesa -oss -pcap -pipelight -s3tc (-selinux) {-test} -vaapi" ABI_X86="32 64 (-x32)"
Можно конечно персонально из "вина" выкинуть некоторые флаги, но это все равно не скажется на том же udev sqlite mysql = потому что это зависимости 2 порядка. (т.е. зависимости зависимых пакетов).
slepnoga написал(а): ИМХО,
Для вайна, видимо, надумана. А вот в смысле недоработки portage, эта проблема актуальна. Берём sci-libs/gsl из оверлея science, включаем cblas-external, и обламываемся со сборкой, потому что одна из реализаций blas собирается только под 64бита. Может быть потом это исправят мэйнтейнеры, но пока приходится отключать abi_x86_32 в package.use
Я с вас фигею. Ставите пакет
Я с вас фигею. Ставите пакет из неофициального оверлея, а вывод делаете о недоработках портажа. Ыксперты, блин...
eegorov написал(а): Я с вас
Предлагаете самому писать нужные ебилды, и столкнуться точно с такой же проблемой?
Ну, лично я обычно так и
Ну, лично я обычно так и делаю. Если вижу проблему - сообщаю куда следует. Если решение затягивается - пытаюсь решить сам. Если получается - не стесняюсь поделиться решением. Причем тот же mgorny, который ооочень много сделал, чтобы внедрить эти самые ABI, PYTHON_TARGETS и пр, охотно идет на контакт и часто помогает довести решение до основного дерева.
А говорить о "недоработках", видя сколько позитивных изменений в портаже за последние пару лет, я не могу... Но это мое личное мнение, естественно.
А вот дефолтный комплект USE
А вот дефолтный комплект USE для wine:
X alsa cups fontconfig gecko jpeg lcms ldap mono* mp3 ncurses nls opengl perl png prelink realtime run-exes ssl threads truetype udisks xcomposite xinerama xml
Если выкинуть -alsa -lcms -ldap -mono -mp3 -ncurses -perl -ssl -xcomposite -xinerama -xml мы все равно получим 120 пакетов в числе которых будет
sys-apps/dbus который нужен ahavi cups +2
dev-libs/libxml2 - который выключен но нужен для qtgui
net-dns/avahi - нужен для cups
net-libs/gnutls - тоже 2 порядка
sys-libs/ncurses - тоже 2 порядка, хоть и выключен, но есть в make.conf или дефолте
dev-qt/qt* почти в полном составе... тянется по зависимостям 2 порядка.
sys-libs/zlib тоже 2 порядка
dev-db/sqlite - тоже 2 порядка
media-libs/mesa - тоже 2 порядка
dev-db/mariadb - тоже 2 порядка
dev-libs/glib - тоже 2 порядка
sys-fs/eudev
...
media-libs/flac - тоже 2 порядка
dev-libs/openssl - хоть мы его и выключили.
и т.д.
И большинство того что мы принудительно выключили все равно соберется в 32, потому-что оно идет по зависимостям 2 порядка :)
прямых зависимостей для wine всего 20 при "минимальной конфигурации"
Не совсем понимаю, зачем это
Не совсем понимаю, зачем это может быть нужно, но если хочешь 32-битные пакеты с зависимостями, отлицающимися от 64-битных - разворачивай 32-битное chroot-окуружение, и выставляй там флаги как хочешь. А в основной системе ставь USE=-abi_x86_32
Эта тема о том что НЕ хочу
Они и так идут с зависимостями системы что и порождает большую пересборку пакетов. и chroot не даст нам того что нужно - потому что это будет "система в системе", и правила сборки все равно потребуют те пакеты что "отключили" в linux32.
Эта тема о том что НЕ хочу чтоб мне пересобирало в 32 половину системы по "общим зависимостям" системы, и, если уж ввели ABI_X86_32, то давайте под нее и флаги, чтоб можно было собрать только то что действительно нужно в том же wine.
Ведь по сути получается что для "обычного" пользователя который пользуется тем же скайпом (110+ пакетов) и вине (150+ пакетов) не требуется пересобрать "половину" системы в 32, только потому что большинство пакетов идут по общим зависимостям в make.conf или профиле системы.
...Соответственно и спрашиваю о том, есть-ли такая возможность.
:) "
Вы сильно вдумывались перед ответом"для скайпа у меня в примерно
Для скайпа у меня в примерно 10 пакетов добавлен ABI_X86_32. Тимвьювер попросил еще пару.
Вайн собран без этого флага, что никак не мешает работать виндовс приложением типа того же винбокса.
Скажи, у тебя есть проприетарные 32-х битные ЛИНУКС приложения, которые залинкованы на библиотеки вана ? Если да - тебе нужен ABI_X86_32, если нет - то не нужен.
Битность виндовс приложений в вайне всегда 32 бита, для работы 64 нужен специальный вайн, к ABI_X86_32 отношения не имеющий.
Возможности ставить разные флаги нет, т.к. никто не может придумать реального кейса, где бы это было нужно.
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Для проверки я собирал -32
Для проверки я собирал -32 wine.
тотже TOTAL COMMANDER в нем не заработал, впрочем и 2гис тоже.
Количество может варьироваться от окружения я проверял на профиле KDE, с оптимизацией под KDE и нужные мне флаги прописанные под мои нужды в make.conf
А еще рекомендую посмотреть ебилд от wine
Тогда вопрос отпадет.
вот ошибка wine: Ошибка в формате EXE для Z:\home\rusprg\TotalCmd\LaunchTC.exe - это потому что он 32 а wine 64. те без ABI_X86_32
RUSPRG написал(а):Они и так
как раз даст-таки
а 32-битные либы в 64-битной системе - это не "система в системе" по-твоему?
не понял, что ты имеешь в виду...
ну, раз не хочешь, не собирай
запости фичреквест на b.g.o
Я вообще не понимаю, из-за чего сыр-бор. У меня глобально ABI_x86_32 в make.conf, и я не вижу проблемы. Переход прошел достаточно гладко и относительно быстро. Куда больше раздражает долгое обновление libreoffice+chromium+вебкиты всякие. Правда в системе у меня 1968 пакета, так что +/-200 - роли не играет.
ЗЫ
На "половину системы" никак не тянет
Хорошо вот пример
Все та же mysql.
В системе есть такой флаг потому что его использует кде. ну к примеру стоит у меня амарок ну и непомук (изначально, дефолтно, но выпилено. :) ).
В wine есть флаг pulseaudio для того чтоб он работал нужен пульс в 32
для пульса есть зависимости в системе тот же qt4 dbus ssl udev - т.е. все они должны быть собраны под 32.
далее по цепочке из юзов данных пакетов вытягивается mysql
+/- километр....
тогда проще на убунте сидеть ... какая разница.
$ du -sh `qlist mariadb |
тебе жалко 3,5 мегабайта для 32-битного мускуля?