Повторяемые сборки на Astra SE 1.4/1.5

Приветствуем всех борцов за чистоту сборки!

Если вы разработчик ПО для Astra Linux Special Edition закаленный в боях с испытательными лабораториями, то наверняка сталкивались с требованиями подготовки повторяемых сборок. Это когда два раза собрал и опа, одинаковая контрольная сумма!

Что бывает непросто.

Проблема повторяемости сборок давно известна и неплохо решаема в современных дистрибутивах, каковым, надеемся, будет Астра 1.6. А пока имеем то что имеем.

Вот и мы, в канун Дня Победы, в очередной раз воевали за эти самые MD5 ФИКС-UNIX. Для облегчения жизни себе и вам собрали некоторые наработки в отдельный пакет и назвали его dpkg-lab50.

dpkg-lab50

Пакет предоставляет утилиту dpkg-deb для Astra Linux Special Edition, которая собирает пакеты с фиксированным временем изменения файлов в архивах. В зависимости включается пакет dh-strip-nondeterminism, решающий многие проблемы повторяемости сборок.

Для работы необходимо установить время в UNIX-формате в переменной окружения SOURCE_DATE_EPOCH. Типовой пример (вставить в начало файла debian/rules):

export SOURCE_DATE_EPOCH ?= $(shell dpkg-parsechangelog | grep -Po '^Date: K.*' | date -f- +%s)

А в последовательность сборки debhelper’а необходимо добавить модуль lab50:

%:
        dh $@ --with lab50

Последний штрих. Добавьте зависимость для сборки вашего пакета (debian/control):

Build-Depends: dpkg-lab50

Таки какие проблемы он устраняет, спросите вы?

  1. Повторяемое время файлов в deb-пакете.
  2. Коллекция утилиты dh_strip_nondeterminism:
    • исправление времени файлов в архивах AR, GZip, JAR/WAR и прочих;
    • чистит PNG, Gettext, Javadoc;
    • ну и по мелочи.

Где брать?

В нашем репозитории, собран для версий 1.4 и 1.5. Внимание! Тащит за собой нужные зависимости (оттуда же).

Победа будет за нами!

5 Comments

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *