SpecTips/Compatibility

Материал из ALT Linux Wiki
< SpecTips
Версия от 14:15, 13 сентября 2009; MichaelShigorin (обсуждение | вклад) (init off SpecTips, wikification)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)


Совместимость ALT RPM-спеков

Многие спрашивают: будет ли спек со стороны работать в альте? Отвечаем: да, скорее всего, но:

а) не обещаем
б) наверняка он не соответствует альтовским правилам, а потому в сизиф не пройдет

Зато на другой вопрос: «будет ли альтовский спек работать где либо еще?», ответ вполне однозначный: в большинстве случаев нет (у нас «слишком» богатый набор макросов).

$ fortune ALT -m "наши spec-файлы"
(ALT)
%
На основании этого можно сделать очевидные выводы:
+ нам удобно, чтобы чужие spec-файлы у нас работали (хотя бы для удобства
  подготовки своего spec-файла);
+ нам все равно, будут ли наши spec-файлы работать где-либо еще.
                -- ldv in sisyphus@
%

Compat-инструментарий

Дело это поправимо. Для того, чтобы спек из другого дистрибутива сделать максимально подходящим для ALT, можно использовать команду rpmcs из пакета etersoft-build-utils. Для того, чтобы спек из ALT работал в другом дистрибутиве, там следует установить пакет rpm-build-altlinux-compat. Так же и etersoft-build-utils переносим на другие платформы с помощью этого пакета.

Импорт спеков

Если нужно просто собрать чужой srpm-пакет, то можно просто взять и собрать. FC'шные и MDK'шные пакеты с высокой вероятностью могут собраться без внесения изменений в spec-файл. Пакеты из SuSE и PLD более широко используют свои макросы, возможно, потребуется адаптация.

Если нужно собрать пакет в Сизиф, придётся поработать головой, поскольку качество чужих spec-файлов в среднем довольно невысокое.

Новые макросы

Так как spec-файлы все ещё пишут люди, то их работу нужно свести к тому минимуму, который, собственно, и требует участия человека. Разработчик не должен копировать блоки кода из файла в файл, ибо эта неинтеллектуальная работа отнимает массу сил и чревата ошибками. Для этого есть макросы. Если какой-то код появляется в разных spec-файлах более одного раза, то надо написать макрос(ы).