LINUX.ORG.RU

Как правильно использовать IUSE, USE_MYAPP и MYAPP_TARGETS ?

 , ,


0

1

продолжение топика как опакечивать плагины к программе

https://github.com/gentoo/gentoo/blob/master/app-misc/pip3line/pip3line-3.5.4...
Почему в этом билде обработка идёт для всех третьих питонов, а не только для тех, которые были выбраны пользователем
(т.е. почему нет проверки if use ${target}; then ... fi )

Нужна ли мне в моём пакете вот такая проверка:
https://github.com/gentoo/gentoo/blob/master/dev-lang/python/python-3.7.0.ebu...
И соответственно, должен ли я делать программу myapp-updater?

https://wiki.gentoo.org/wiki/Project:Python/PYTHON_TARGETS
для чего PYTHON_SINGLE_TARGET является USE_EXPAND-переменной, она же SINGLE! ???
я бы ещё понял, если бы у них значения совпадали, так ведь нет - разные получаются:
python_targets_python3_5
python_single_target_python3_5

Как лучше делать - использовать подход как у PYTHON_SINGLE_TARGET, или как у RUBY_TARGETS_PREFERENCE
https://github.com/gentoo/gentoo/blob/master/eclass/ruby-utils.eclass#L21
?
Они вообще одну и ту же задачу решают, или есть разница? В чём она заключается?

Почему .eclass для Ruby
https://github.com/gentoo/gentoo/blob/master/eclass/ruby-ng.eclass#L388
не следует гайдлайнам (которые говорят, что если ничего не указано, то нужно устанавливать для всех версий)?
Как делать мне - как написано делать, или как делают некоторые остальные? (postgres)

Что проверяют такой зверской проверкой при помощи awk:
https://github.com/gentoo/gentoo/blob/master/www-apps/redmine/redmine-3.3.7.e...
можно ли было обойтись без awk? Для чего эта проверка вообще и нужна ли она мне?

И самое главное, в чём разница между переменной MYAPP_TARGETS внутри .ebuild-а для плагина, и переменной MYAPP_TARGETS на уровне /etc/portage/make.conf ?
Почему в одних случаях переменная называется MYAPP_TARGETS, а в других случаях USE_MYAPP? В чём разница между ними?
Если бы переменная называлась IUSE_MYAPP, этих вопросов бы не было (наверное).

Как emerge понимает, что в списке USE-флагов нужно показывать сокращённые флаги из какой-то конкретной USE_EXPAND-переменной? Ведь таких переменных много разных, а к пакету относится одна (хотя может быть и не одна, теоретически, а по количеству зависимостей).
(и вообще, видны ли эти USE-флаги? а то может их и вовсе не видно)

Как потом этим пользоваться?

Здесь
https://devmanual.gentoo.org/ebuild-writing/variables/
написано, что

IUSE A list of all USE flags (excluding arch flags, but including USE_EXPAND flags) used within the ebuild.

Что мне надо писать, чтобы сдержимое MYAPP_TARGETS попало в состав IUSE в развёрнутом виде?
(читал вывод команды grep -R «IUSE.*TARGETS» /usr/portage, не нашел ничего подходящего)
вот это:
https://github.com/gentoo/gentoo/blob/master/app-i18n/tomoe/tomoe-0.6.0-r3.eb...

IUSE=«hyperestraier mysql python ruby ${USE_RUBY//ruby/ruby_targets_ruby} static-libs subversion»

Это так и надо, или это неправильный кусочек кода?

Если бы это делал я, я бы сделал функцию в каком-нибудь .eclass-файле, которая удлинняет или оставляет флаги как есть, в зависимости от настроек системы. Т.е. если MYAPP_TARGETS добавлена в USE_EXPAND, то надо удлинять название USE-флага, а если нет, то нет. Есть ли такая функция, в каком eclass-файле и как эта функция называется?

Чего я в итоге хочу добиться? Понимания того, какие шаги нужно выполнить, для того, чтобы сделать пакеты для плагинов «по всем правилам». Мне плевать на правила написания ебилдов (плевать это модно и молодёжно в среде, подобной LOR-у), но нужно покрыть все частые сценарии использования, чтобы потом не лезли баги. Оговорка про наплевательство написана специально, чтобы не было (вообще говоря, хамских) комментариев "не парься" от разных неумёх.

В идеале, хотелось бы увидеть туториал с шаблонами кода, чтобы скопировать и забыть.

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