LINUX.ORG.RU

Пара вопросов связаных с use.{force, mask}

 , ,


2

0

1. Какой тип флагов может быть указан в этих файлах? Только глобальный? или глобальный+локальный? А если локальный то к какому пакаджу тогда он применяется? Еще какой нибуть вариант?

Смотрите ниже пример с «mmxext»

vv@vv-Latitude-E5520 /dev/shm/portage/profiles $ grep -r 'mmxext' *
arch/x86/use.mask:-mmxext
arch/x86-fbsd/use.mask:-mmxext
arch/amd64/use.mask:-mmxext
arch/amd64-fbsd/use.mask:-mmxext
base/use.mask:mmxext
prefix/darwin/macos/10.8/x86/use.mask:-mmxext
prefix/darwin/macos/10.8/x86/make.defaults:USE="mmx mmxext sse sse2"
prefix/darwin/macos/10.8/x64/use.mask:-mmxext
prefix/darwin/macos/10.8/x64/make.defaults:USE="mmx mmxext sse sse2"
prefix/darwin/macos/10.7/x86/use.mask:-mmxext
prefix/darwin/macos/10.7/x86/make.defaults:USE="mmx mmxext sse sse2"
prefix/darwin/macos/10.7/x64/use.mask:-mmxext
prefix/darwin/macos/10.7/x64/make.defaults:USE="mmx mmxext sse sse2"
prefix/darwin/macos/10.6/x86/use.mask:-mmxext
prefix/darwin/macos/10.6/x86/make.defaults:USE="mmx mmxext sse sse2"
prefix/darwin/macos/10.6/x64/use.mask:-mmxext
prefix/darwin/macos/10.6/x64/make.defaults:USE="mmx mmxext sse sse2"
prefix/darwin/macos/10.5/x86/use.mask:-mmxext
prefix/darwin/macos/10.5/x86/make.defaults:USE="mmx mmxext sse sse2"
prefix/darwin/macos/10.5/x64/use.mask:-mmxext
prefix/darwin/macos/10.5/x64/make.defaults:USE="mmx mmxext sse sse2"
prefix/darwin/macos/10.4/x86/use.mask:-mmxext
prefix/darwin/macos/10.4/x86/make.defaults:USE="mmx mmxext sse sse2"
uclibc/x86/use.mask:-mmxext
use.local.desc:media-plugins/vdr-softdevice:mmxext - enables MMXExt support
use.local.desc:media-video/ffmpeg:mmxext - Enables mmx2 support
use.local.desc:media-video/libav:mmxext - Enable mmx2 support.
use.local.desc:media-video/mplayer:mmxext - Enables mmx2 support
use.local.desc:media-video/mplayer2:mmxext - Enables mmx2 support
vv@vv-Latitude-E5520 /dev/shm/portage/profiles $ 

2. Если например в каком-то use.force есть такое

-foo
то как это «дествует» на foo? а для use.mask все будет наоборот?

★★★★★

в use.{force,mask} указываем флаги, которые надо исключитель для всех пакетов профиля(не важно, глобальные или локальные)
в package.use.{force,mask} - попакетно. Тип флага также не важен.

Pinkbyte ★★★★★
()

Читаем ман.
В use.force пишем те флаги, которые включаем в любом случае. "-flag" в use.force отменяет форсирование флага, но не запрещает его включать.
Аналогично, в use.mask пишем те флаги, которые выключаем в любом случае. "-flag" в use.mask отменяет форсирование отключения флага, но не запрещает его отключать.

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

Теперь ясно, как можно так разрушить личность и деградировать интеллект.

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

Спасибо за ответ на вопрос №2.

Тебе не кажется странным/не логичным то что в use.mask есть флаг который действует на пару пакетов (по суть есть локальным)?

ИМО или те пакеты должны быть в package.use.{force,mask}, или он должет быть глобальным.

ZuBB ★★★★★
() автор топика
Последнее исправление: ZuBB (всего исправлений: 1)

спасибо всем отписавшемся по поводу вопроса №1. К сожалению я немного не точно сформулировал то что меня именно интересует. по сему уточняю вопрос.

В каком статусе будет флаг после «отфорсирования» или «отмаскирования»? Смотрим примеры ниже

допустим в base/use.force есть флаг mmxext. А потом где-то выше его отфорсируют (-mmxext). Каков статус флага после этого? Не установлен или отключен (disabled)? Или еще какой то?

или другой пример

допустим в base/make.defaults есть флаг sse. Где-то выше его маскируют (sse). А еще где-то выше его отмаскируют (-sse). Каков статус флага после этого? Не включен (enabled), или еще какой то?

tiandrey, Pinkbyte анука подсобите

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

Каков статус флага после этого?

не установлен. Цитата из PMS:

Simply speaking, use.mask and use.force are used to say that a given USE flag must never or always, respectively, be enabled

Тоже самое по примеру №2. Только из-за изначального make.defaults - он будет в самом последнем случае включен

То есть за ОТКЛЮЧЕНИЕ флага всегда ответчает use.mask, за ВКЛЮЧЕНИЕ - use.force

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

Pinkbyte уже написал про то, как влияют package.mask и package.force на включение/отключение флагов. В двух словах, ещё раз - в этих файлах включается и отключается принудительное включение и отключение флагов.
По умолчанию все флаги отключены, если они не включены где-нибудь в make.defaults.

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

Спасибо. Так и думал, но хотел бьіть увереньім. Следующий раз буду читать PMS внимательней

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

А что по дополнительному вопросу для @2

Если ты про

Тебе не кажется странным/не логичным то что в use.mask есть флаг который действует на пару пакетов (по суть есть локальным)?

Тогда объясняю. Есть USE-флаги, которые тянут за собой вполне определенные пакеты, но глобальными они не признаны. Допустим USE=«foo» тянет category/foo и есть у пакетов category/package1 и category/package2.

Но вот незадача - пакет category/foo замаскирован, допустим на hppa. Что делать? Правильно - маскировать ВЕСЬ use-flag foo на hppa. Причина - может появиться пакет category/package3 с флагом foo, и тогда его тоже придется маскировать.

Более интересный вопрос - почему такой флаг не признать глобальным? Ответ в общем случае содержится в devmanual:

A global USE flag must satisfy several criteria:

    It is used by many different packages, at least 5 seems to be agreed upon.
    It has a general non-specific purpose.

The second point is important. If the effect of the USE flag upon pkg-one is substantially different from the effect it has upon pkg-two, then the flag is not a suitable candidate for being made a global flag. In particular, note that if client and server USE flags are ever introduced, they can not be global USE flags for this reason. 

То есть у нас: 1) пакетов с USE=«foo» меньше 5, но может стать больше; 2) зависимость от category/foo еще НЕ означает необходимость сделать данный флаг глобальным: foo может по разному влиять на функционал category/package1 и category/package2

package.use.mask чаще используется, когда в каком-то одном конкретном пакете определенная фича сломана(собственно для чего он и предназначен)

С use.force ситуация практически аналогичная, с оглядкой на то, зачем он нужен

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

Спасибо за ответ

Все понятно, со всем согласен, но есть 2 «но».

1. на данный момент пакетов с флагом «mmxext» 5.

use.local.desc:media-plugins/vdr-softdevice:mmxext - enables MMXExt support
use.local.desc:media-video/ffmpeg:mmxext - Enables mmx2 support
use.local.desc:media-video/libav:mmxext - Enable mmx2 support.
use.local.desc:media-video/mplayer:mmxext - Enables mmx2 support
use.local.desc:media-video/mplayer2:mmxext - Enables mmx2 support

2. в данном случае флаг «mmxext» как мне кажется должен одинаково влиять на пакеты (хотя здесь я может и не прав, так как в сорцы не смотрел)

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

рано еще. у меня все еще есть вопросы :)

1. 'mmxext'. а есть ли еще процессоры и/или архитектуры, на которых нет данной фичи? может захардкодить ее и забыть об этом?

2. возможно я найду еще флагов, у которых ситуация похожая. наверно в mailing-list лучше приходить со всеми флагами вместе (предварительно обсудив здесь). я прав?

3. А может ты поднимешь этот вопрос в mailing-list? Ты уже дев, verified person так сказать. К тебе могут прислушатся быстрее. Если что обязуюсь (помочь) составить само письмо.

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

1. 'mmxext'. а есть ли еще процессоры и/или архитектуры, на которых нет данной фичи? может захардкодить ее и забыть об этом?

Новых наверное нет, но не забывай, что генту собирается и для i486. Один давнишний тред: http://forums.gentoo.org/viewtopic-t-310794.html

2. возможно я найду еще флагов, у которых ситуация похожая. наверно в mailing-list лучше приходить со всеми флагами вместе (предварительно обсудив здесь). я прав?

Можно и с одним прийти, но если выявишь несколько, обращение получится более комплексным ;-)

3. А может ты поднимешь этот вопрос в mailing-list? Ты уже дев, verified person так сказать. К тебе могут прислушатся быстрее. Если что обязуюсь (помочь) составить само письмо.

На самом деле(судя по текущему положению мэйл-листа) к активным пользователям, предлагающим полезные нововведения, прислушиваются наравне с разработчиками. Главное - суть предлагаемых изменений и как они изложены - а кто предложил - это вторично. Примером могут служить 2 бывших разработчика Gentoo, которых выгнали за чрезмерное своеволие(ciaranm и arfrever), но которые тем не менее продолжают развивать дистрибутив предлагая полезные улучшения.

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

Итак список флагов, к которым у меня есть «претензии»

3dnowext
alsa_cards_sb16_csp
audit
d3d
cuda
kqemu
l7filter
mmxext

А теперь по каждому из них

  • 3dnowext. ситуация здесь такая же самая как и с mmxext. Есть 6 пакетов, для которых он обьявлен локальным
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ grep -r ':3dnowext' *
    use.local.desc:media-libs/libpostproc:3dnowext - Enable manually-optimised routines using the AMD 3DNow!Ex SIMD instruction set, present in modern AMD CPUs. (Check for 3dnowext in /proc/cpuinfo to know whether your CPU supports it).
    use.local.desc:media-sound/mpg123:3dnowext - Enable 3dnowext cpu instructions
    use.local.desc:media-video/ffmpeg:3dnowext - Enable manually-optimised routines using the AMD 3DNow!Ex SIMD instruction set, present in modern AMD CPUs. (Check for 3dnowext in /proc/cpuinfo to know whether your CPU supports it).
    use.local.desc:media-video/libav:3dnowext - Enable manually-optimised routines using the AMD 3DNow!Ex SIMD instruction set, present in modern AMD CPUs. (Check for 3dnowext in /proc/cpuinfo to know whether your CPU supports it).
    use.local.desc:media-video/mplayer:3dnowext - Enable 3dnowext cpu instructions
    use.local.desc:media-video/mplayer2:3dnowext - Enable 3dnowext cpu instructions
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ grep -r ':3dnowext' * | wc -l
    
    его нужно сделать глобальным
  • alsa_cards_sb16_csp. такого уже нет. нужно удалить
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ grep -r sb16_csp *
    arch/sparc/use.mask:alsa_cards_sb16_csp
    arch/powerpc/use.mask:alsa_cards_sb16_csp
    arch/ia64/use.mask:alsa_cards_sb16_csp
    uclibc/ppc/use.mask:alsa_cards_sb16_csp
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ 
    
  • audit. Есть 10 пакетов с таким локальным флагом.
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ grep -r ':audit' * 
    use.local.desc:app-emulation/libvirt:audit - support sys-process/audit
    use.local.desc:app-forensics/aide:audit - Enable support for sys-process/audit
    use.local.desc:gnome-base/gdm:audit - Enable support for sys-process/audit
    use.local.desc:net-dns/opendnssec:auditor - Enables auditing capabilities for OpenDNSSEC
    use.local.desc:sys-apps/policycoreutils:audit - Enable support for sys-process/audit and use the audit_* functions (like audit_getuid instead of getuid())
    use.local.desc:sys-apps/shadow:audit - Enable support for sys-process/audit
    use.local.desc:sys-apps/systemd:audit - Enable support for sys-process/audit
    use.local.desc:sys-freebsd/freebsd-ubin:audit - Build auditing tools.
    use.local.desc:sys-freebsd/freebsd-usbin:audit - Build auditing tools.
    use.local.desc:sys-libs/pam:audit - Enable support for sys-process/audit
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ 
    
    Из них 8 имеют привязку к sys-process/audit. Нужно сделать «audit» глобальным флагом для них. Записи с freebsd-*bin переместить в package.use.mask. Может есть смысл дать флагам немного разные названия
  • d3d. Такого тоже нет
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ grep -r d3d *
    arch/sparc/use.mask:# mask d3d since we don't have wine
    arch/sparc/use.mask:d3d
    arch/sparc/ChangeLog:  Mask d3d USE flag.
    arch/sh/use.mask:# mask d3d since we don't have wine
    arch/sh/use.mask:d3d
    arch/sh/ChangeLog:  Mask d3d USE flag.
    arch/powerpc/use.mask:# mask d3d since we don't have wine
    arch/powerpc/use.mask:d3d
    arch/powerpc/ChangeLog:  Mask d3d USE flag.
    arch/mips/use.mask:# mask d3d since we don't have wine
    arch/mips/use.mask:d3d
    arch/mips/ChangeLog:  Mask d3d USE flag.
    arch/ia64/use.mask:# mask d3d since we don't have wine
    arch/ia64/use.mask:d3d
    arch/ia64/ChangeLog:  Mask d3d USE flag.
    arch/hppa/use.mask:# mask d3d since we don't have wine
    arch/hppa/use.mask:d3d
    arch/hppa/ChangeLog:  Mask d3d USE flag.
    arch/arm/use.mask:# mask d3d since we don't have wine
    arch/arm/use.mask:d3d
    arch/arm/ChangeLog:  Mask d3d USE flag.
    arch/amd64/ChangeLog:  USE mask d3d on amd64/no-multilib since wine is 32-bit.
    arch/amd64/no-multilib/use.mask:# mask d3d since wine is 32-bit
    arch/amd64/no-multilib/use.mask:d3d
    arch/amd64-fbsd/todo/package.use.mask:media-libs/mesa d3d
    arch/alpha/use.mask:# mask d3d since we don't have wine
    arch/alpha/use.mask:d3d
    arch/alpha/ChangeLog:  Mask d3d USE flag.
    ChangeLog:  Add d3d USE mask to hardened/amd64/no-multilib.
    hardened/linux/amd64/no-multilib/use.mask:# mask d3d since wine is 32-bit
    hardened/linux/amd64/no-multilib/use.mask:d3d
    updates/4Q-2004:move app-sci/xd3d media-gfx/xd3d
    updates/1Q-2006:move media-gfx/xd3d sci-visualization/xd3d
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ 
    
    Соответственно удалить
  • cuda. Есть 11 совпадений в локальных флагах
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ grep -r ':cuda' *
    use.local.desc:app-crypt/hashcat-gui:cuda - Install oclhashcat-{plus,lite}-bin to take advantage of hardware cuda support.
    use.local.desc:app-crypt/johntheripper:cuda - Use nvidia cuda toolkit for speeding up cracking on capable devices
    use.local.desc:dev-libs/starpu:cuda - Enable NVIDIA CUDA toolkit support
    use.local.desc:dev-util/nvidia-cuda-sdk:cuda - Build CUDA binaries.
    use.local.desc:media-gfx/k3d:cuda - Use nvidia cuda toolkit for speeding up computations
    use.local.desc:media-gfx/nvidia-texture-tools:cuda - Enable NVIDIA CUDA toolkit support
    use.local.desc:media-libs/opencv:cuda - Enable NVIDIA Cuda computations support
    use.local.desc:net-wireless/pyrit:cuda - Enable CUDA support via net-wireless/cpyrit-cuda
    use.local.desc:sci-chemistry/ball:cuda - Include cuda support
    use.local.desc:sci-chemistry/vmd:cuda - Use nvidia cuda toolkit for speeding up computations
    use.local.desc:sci-misc/boinc:cuda - Use nvidia cuda toolkit for speeding up computations. NOTE: works only for subset of nvidia graphic cards so make sure your card is supported before opening bug about it.
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $
    
    . Здесь нужно сделать тоже самое что и в случае с «audit». С поправкой на количество
  • kqemu. Есть одно совпадение
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ grep -r kqemu *
    arch/x86/use.mask:-kqemu
    arch/amd64/use.mask:# There is now a kqemu that works and is stable on amd64
    arch/amd64/use.mask:-kqemu
    base/use.mask:kqemu
    prefix/darwin/macos/10.8/x86/use.mask:-kqemu
    prefix/darwin/macos/10.8/x64/use.mask:-kqemu
    prefix/darwin/macos/10.7/x86/use.mask:-kqemu
    prefix/darwin/macos/10.7/x64/use.mask:-kqemu
    prefix/darwin/macos/10.6/x86/use.mask:-kqemu
    prefix/darwin/macos/10.6/x64/use.mask:-kqemu
    prefix/darwin/macos/10.5/x86/use.mask:-kqemu
    prefix/darwin/macos/10.5/x64/use.mask:-kqemu
    prefix/darwin/macos/10.4/x86/use.mask:-kqemu
    uclibc/x86/use.mask:-kqemu
    use.local.desc:app-emulation/qemu:kqemu - Enable old kqemu acceleration
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ 
    
    И ему самое место в package.use.mask
  • l7filter. Также нет
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ grep -r 'l7filter' *
    arch/mips/use.mask:l7filter
    uclibc/mips/use.mask:l7filter
    vv@vv-Latitude-E5520 /run/shm/portage/profiles $ 
    
    Нужно удалять
  • mmxext. Здесь ты уже в курсе

Посмотри пожалуста или все здесь «правильно» и я ни в чем не «перегнул палку» (или наоборот).

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

l7filter - нужно удалить
kqemu - нужно проконсультироваться с мэйнтэйнером app-emulation/qemu cuda - скорее всего переносить в глобальные d3d - хз audit - нужно сверить действие данного флага на пакеты alsa_cards_sb16_csp - нужно проконсультироваться с мэйнтэйнерами ALSA 3dnowext - тоже самое что и с mmxext

Короче - пиши в gentoo-dev

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

Короче - пиши в gentoo-dev

ЯННП. а кто будет «консультироваться с мэйнтэйнером», «сверить действие»? а когда это будет происходить? до того как я напишу или после?

и если писать то в таком виде что я написал, или надо что-то подправить?

и еще: нужно ли разбивать на несколько имейлов (как в LKML. например «blah-blah [1/8]») чтобы не было простыни?

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

1) разбивать не нужно;
2) написать можно уже сейчас, тема а-ля «Questions about USE-flags in profile's {package,}use.{mask,force}»;
3) консультироваться с мэйнтэйнерами будешь в ответах на свое сообщение(или в IRC, если выловишь их). Не забудь подписаться на мэйллист.

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

3) консультироваться с мэйнтэйнерами будешь в ответах на свое сообщение(или в IRC, если выловишь их). Не забудь подписаться на мэйллист

а вот и «гемор». вот поэтому я и спрашивал

А может ты поднимешь этот вопрос в mailing-list?

но «попытка не пытка». попробую сам

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

fyi: так и не написал. на неделе не было свободного времени. А вчера-сегодня обнаружил баг у себя в коде. после фикса проблемых флагов оказалось 308..

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

проблемых флагов оказалось 308

o_O. Ты это, перепроверь всё и если это действительно НАСТОЛЬКО печально - пиши в мэйллист!

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

там нужно во всем очень хорошенько разобратся. как с моей стороны, так и с «вашей». и я не знаю, найду ли я на это время в обозримом будущем..

ZuBB ★★★★★
() автор топика
11 февраля 2013 г.
Ответ на: комментарий от Pinkbyte

в общем после некоторого рефакторинга «подойти» к этим данным стало намного легче.

также я понял что нужно разделить проблемму на несколько частей в нескольких областях(читай типах файлов)

Пока имеются следующие результаты: во всех use.{force,mask} файлах есть 241 вхождение 104 несуществующих флагов (из них есть пара, с которыми на самом деле все ОК).

Написать тебе письмо c полной инфой, или засабмитить баг?

PS: есть ли какие новости о homepages?

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

<irony>

проблемых флагов оказалось 308

o_O. Ты это, перепроверь всё и если это действительно НАСТОЛЬКО печально - пиши в мэйллист!

после 1к+ outdated links 308 проблемых флагов смотрятся не так уж и страшно

</irony>

ZuBB ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.