From 7687e77d7a77d0a14e4dd38c79886b942199ac9d Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 27 Jun 2024 19:47:22 +0300 Subject: [PATCH] =?utf8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20detpax=20?= =?utf8?q?--=20=D0=B4=D0=B5=D1=82=D0=B5=D1=80=D0=BC=D0=B8=D0=BD=D0=B8?= =?utf8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=B0=D1=80?= =?utf8?q?=D1=85=D0=B8=D0=B2=D0=B0=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit http://www.git.cypherpunks.ru/?p=bass.git;a=blob_plain;f=build/contrib/detpax/README https://reproducible-builds.org/docs/archives/ Для того, чтобы хоть как-то приближаться к reproducible build-ам, архивы пакетов тоже должны быть "повторяемыми". bsdtar можно всякие опции указывать для того, чтобы не хранить UID/GID. touch-ем можно выставить фиксированное время. find-ом сортировать списки файлов. Но это всё работает пока bsdtar по умолчанию делает ustar формат. Но большого размера файлы в него не запихнуть. bsdtar автоматом начинает использовать pax формат, что хорошо. Но при этом он начинает в него пихать и точные временные штампы для файлов, что ломает детерминированность создания архивов. С GNU tar-ом (bsdtar например даже на Astra SE стоит из коробки), тоже какие-то загвоздки есть, но детали не помню. Поэтому написал на Go, зная что в нём из коробки есть archive/tar библиотека, поддерживающая pax-формат, архиватор который бы не сохранял ничего лишнего. И добавил в него возможность указания более высокого приоритета сортировки для каких-то директорий (чтобы они были в начале архива). Сохраняет только права доступа, sticky/setuid/setgid флаги, файлы, директории, символические и жёсткие ссылки. -- 2.50.0