Yocto, удалите autotools из процесса сборки (пользовательского пространства)

Пакет Userspace, созданный для и вместе с образом корневой файловой системы некоторой встроенной системы на базе Linux (с использованием проекта Yocto), очевидно, использует автоинструменты - можно увидеть Makefile.am и configure.ac в исходных кодах пакета. pkg-config или его преемник, похоже, тоже используется (присутствует .pc.in), но здесь он выходит за рамки. Пакет, находящийся в фокусе здесь, делает это таким образом (с привлечением автоинструментов), поскольку в начале его разработки, по-видимому, это была линия наименьшего сопротивления копированию и принятию сценариев сборки из аналогичного, но уже существующего пакета. На самом деле автоинструменты кажутся незаменимыми при сборке с помощью Yocto, поскольку метаданные системы сборки Yocto указывают цель достаточно точно для каждой цели. Не зря стандартный процесс сборки в Yocto - это загрузка, распаковка, исправление, настройка, сборка и т. Д., При этом сканирование и обнаружение целевой среды не включены в эту цепочку.

Теперь мне интересно, было ли хорошо упростить процесс сборки пакета, удалив этап автоинструментов. Я собираюсь выполнить это, выполнив последовательность из нескольких шагов, начиная с замены файла .am на настоящий make-файл. Вопрос в том, хватит ли этого, чтобы найти env. переменные, определенные и используемые в .am и .ac, а затем передать их в make-файл? Оставшаяся спецификация целевого устройства должна фактически быть получена из метаданных системы сборки Yocto. Возможно, это будет работать так просто, если собрать пакет в рамках сборки образа корневой файловой системы. Но как обеспечить полную спецификацию целевого устройства в среде сборки при сборке только этого пакета bitbake package-name?


person Na13-c    schedule 04.01.2018    source источник
comment
Если он не сломан, не чините его. Вы выиграете максимум на минуту или две меньше времени сборки - сколько это стоит с точки зрения вашего собственного времени и усилий при выполнении и тестировании (нетривиального) преобразования? Готовы ли вы сделать все заново, когда захотите заменить пакет на более новую?   -  person John Bollinger    schedule 05.01.2018


Ответы (1)


Замена autotools на чистый make-файл - нетривиальная операция, как https://nibblestew.blogspot.co.uk/2017/12/a-simple-makefile-is-unicorn.html прекрасно демонстрирует.

Если вы не хотите использовать автоинструменты в своих пакетах, альтернативы, такие как Meson, обычно работают быстрее.

person Ross Burton    schedule 04.01.2018
comment
Вы все правы. Генерация make-файла и последующее обслуживание в соответствии с широко используемыми соглашениями и широкое достижение его цели может быть нетривиальной задачей - это из информации, собранной извне, как я, с нулевым опытом и довольно плоскими знаниями в вопросах. В моем первоначальном посте была озвучена идея роста озабоченности: при сборке с помощью Yocto необходимо точно установить спецификацию целевого устройства. Почему тогда перед настройкой и сборкой необходим этап анализа среды сборки и выполнения (основная цель автоинструментов в понимании непрофессионала)? Широко ли используются autools для сборки пакетов с Yocto? - person Na13-c; 05.01.2018
comment
@ Na13-c, Шаг анализа среды не строго необходим. В принципе, вы вполне можете подготовить Makefile напрямую. Но в любом случае полезно провести анализ среды, потому что это то, что делает система сборки пакета. Это значительно экономит время и силы по сравнению с настройкой сборки вручную. Дело не в Йокто. Речь идет о пакетах, которые вы создаете. - person John Bollinger; 06.01.2018
comment
Не стесняйтесь заполнять соответствующий сайт / файл в oe-core правильным значением для всех тестов, которые выполняет configure, чтобы ускорить его (так что configure будет просто использовать кешированное значение с сайта, а не запускать тест). Тестов много, и выигрыш невысокий. - person Ross Burton; 07.01.2018