tgoop.com/itpgchannel/3394
Create:
Last Update:
Last Update:
Будни #bootstrap, #lab, #home_lab
У меня в пакетнике нет способа передать какую-то информацию от пакета "наверх". То есть, у меня флаги наследуются вниз по дереву зависимостей, а вверх - нет.
Почему так?
Потому что такая фича делает язык описания сборки пакетов turing complete, и построение пакетов не обязательно будет сходящейся процедурой:
{% if not X %}
{% yield X %}
{% endif %}
(тут yield - гипотетическая конструкция, которая поднимает флаг до корня)
Свойство это важное, его терять не хочется.
Где это может быть полезно?
Скажем, у меня есть 10 статически слинкованных программ с Python. Они, сука, большие, потому что в каждой из них есть Python, и все зависимые модули.
Эту проблему можно решить, например, так - собрать один большой бинарник python, в котором были бы все модули, нужные этим 10 программам, и использовать этот python для их запуска. Или, например, программы могут декларировать нужные им фичи от ядра.
Фича выше делает такое возможным, например, каждый бинарь может yield список всех нужных ему модулей, а сборка бинарника python получала бы этот список на вход, и добавляла в свои зависимости.
Увы.
Но, благодаря тому, что моя home lab катается не просто через IX, а через простенький IaC поверх IX, то такая возможность у меня есть - я просто руками собираю все нужные модули для всех сервисов, и передаю их в пакет с python.
https://github.com/pg83/lab/blob/master/lab/cg.py#L986-L992 - вот сервис декларирует все свои зависимости.
https://github.com/pg83/lab/blob/master/lab/cg.py#L1569 - вот я их агрегирую
https://github.com/pg83/lab/blob/master/lab/cg.py#L1598 - передаю в пакет, собирающий python, через флаг py_extra_modules
BY commit -m "better"

Share with your friend now:
tgoop.com/itpgchannel/3394