再現性のあるビルド/ステータス

提供: ArchWiki
ナビゲーションに移動 検索に移動

Arch Linux は core および extra パッケージを常に再構築しており、ステータス ページ があります。このページには、不良パッケージのステータスと修正が必要なものが含まれています。

問題

全般的

  • ファイル順序の問題と btrfs サイズのバグを解決するには、pacman 5.2 未満でビルドされたすべてのパッケージでリビルドが必要です。ファイルの順序の問題については、影響を受ける extra パッケージがミラーディレクトリで次の 1 つのライナーを実行していることがわかります。
for i in /srv/ftp/extra/os/x86_64/*.pkg.tar.??; do
   bsdtar -tf $i | grep "^\." > pkg-order
   sort pkg-order > sort-order
   if ! diff pkg-order sort-order &>/dev/null; then
     echo $i;
   fi
   rm pkg-order sort-order
done

ファイル順序再構築 FTBFS

accounts-qml-module-0.7-2-x86_64.pkg.tar.xz
archboot-2019.03-1-any.pkg.tar.xz
cmark-0.29.0-1-x86_64.pkg.tar.xz
gtk-sharp-2-2.12.45-2-x86_64.pkg.tar.xz
guile1.8-1.8.8-7-x86_64.pkg.tar.xz
java11-openjfx-11.0.3.u1-1-x86_64.pkg.tar.xz
java11-openjfx-doc-11.0.3.u1-1-x86_64.pkg.tar.xz
java11-openjfx-src-11.0.3.u1-1-x86_64.pkg.tar.xz
java8-openjfx-8.u202-3-x86_64.pkg.tar.xz
java8-openjfx-doc-8.u202-3-x86_64.pkg.tar.xz
java8-openjfx-src-8.u202-3-x86_64.pkg.tar.xz
java-openjfx-13.u14-1-x86_64.pkg.tar.xz
java-openjfx-doc-13.u14-1-x86_64.pkg.tar.xz
java-openjfx-src-13.u14-1-x86_64.pkg.tar.xz
jdk10-openjdk-10.0.2.u13-2-x86_64.pkg.tar.xz
jre10-openjdk-10.0.2.u13-2-x86_64.pkg.tar.xz
jre10-openjdk-headless-10.0.2.u13-2-x86_64.pkg.tar.xz
jsonrpc-glib-3.34.0-1-x86_64.pkg.tar.xz
libva-vdpau-driver-0.7.4-4-x86_64.pkg.tar.xz
liferea-1.12.7-1-x86_64.pkg.tar.xz
linux-atm-2.5.2-6-x86_64.pkg.tar.xz
mono-tools-4.2-2-x86_64.pkg.tar.xz
npapi-sdk-0.27.2-2-any.pkg.tar.xz
nss_ldap-265-7-x86_64.pkg.tar.xz
openjdk10-doc-10.0.2.u13-2-x86_64.pkg.tar.xz
openjdk10-src-10.0.2.u13-2-x86_64.pkg.tar.xz
pam_ldap-186-6-x86_64.pkg.tar.xz
portaudio-1:19.6.0-6-x86_64.pkg.tar.xz
qtav-1.13.0-1-x86_64.pkg.tar.xz

JAR ファイルを含むパッケージ

JAR には各ファイルの変更タイムスタンプが含まれるため、再現できなくなります。ビルドシステムに応じて、これに使用できるさまざまなソリューションがあります。

Ant

現在、再現可能なビルドはサポートされていません。アップストリーム機能リクエスト を参照してください。

Gradle

再現性のあるビルドをサポートする必要があります すぐに使用できます

Maven

固定タイムスタンプに設定できる project.build.outputTimestamp プロパティをサポートします。Maven プラグインの最近のバージョンは、このプロパティを尊重して再現可能なアーティファクトを作成します。 このプロパティはプロジェクトの pom.xml ファイルに設定する必要があります。アップストリームでこれがまだ行われていない場合は、

mvn -Dproject.build.outputTimestamp="$SOURCE_DATE_EPOCH" clean package

プラグインを再現可能なビルドをサポートする最新バージョンに更新するには、プロジェクトの pom.xml にパッチを適用する必要がある場合があります。「apache.org/guides/mini/guide-reproducible-builds.html 再現性のあるビルドへの Maven ガイド で、最低限必要なバージョンや追加の必要な構成オプションなどの詳細情報を確認できます。

パッケージの例 (Maven プラグインのバージョン更新用のパッチを含む): junit-system-rules

OpenJDK jar コマンド

組み込みの OpenJDK jar プログラムは、SOURCE_DATE_EPOCH OpenJDK バージョン 15 以降 をサポートします。

strip-nondeterminism

最後の手段として、Debian の [1] を使用すると、JAR を含むさまざまなファイルタイプからファイルタイムスタンプなどの再現不可能なメタデータを削除できます。これは万能薬ではなく (たとえば、ビルドシステムには JAR マニフェストに追加の再現不可能なメタデータが含まれる可能性があり、ストリップ非決定性によりこれらの一部が削除されますが、すべてが削除されるわけではありません)、再現可能なビルドのネイティブサポートがない場合の最後の手段としてのみ使用する必要があります。利用可能:

strip-nondeterminism --timestamp "$SOURCE_DATE_EPOCH"

パッケージ例: pdftk

KDE Kdeveloper プロジェクトファイル

KDE はパッケージアプリテンプレート .tar.bz2 ファイルを作成しますが、再現時に tar ファイルとユーザー ID が異なります。これは再現時のバグである可能性があります。 https://gist.githubusercontent.com/jelly/570313f56ee59be7674ad4cc002232e7/raw/b85536690c48b23ce97650e8db8f0ca18c2dbf1a/gistfile1.txt

The cmake file which generates the issue

Doxygen ドキュメントは、graphviz-2.44.0-2 でビルドされています

graphviz には libpng への依存関係がなかったため、libpng が利用可能になる前にgraphviz がインストールされていたため、dlopen としてマークされていなかったため、ドットで PNG 生成を利用できませんでした。生成ドキュメントとして doxygen に依存し、次の差分を含むすべてのパッケージは再構築が必要です。

│ │ --rw-r--r--   0 root         (0) root         (0)    20234 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser.html
│ │ --rw-r--r--   0 root         (0) root         (0)      265 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser__inherit__graph.map
│ │ --rw-r--r--   0 root         (0) root         (0)       32 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser__inherit__graph.md5
│ │ --rw-r--r--   0 root         (0) root         (0)     3136 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser__inherit__graph.png
│ │ +-rw-r--r--   0 root         (0) root         (0)    19961 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser.html
│ │ +-rw-r--r--   0 root         (0) root         (0)      598 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser__inherit__graph.dot

[core]

Package Issue Solution/Patch Assignee Solved
audit FTBFS with linux-headers 5.17+ proposed none No
dmraid FTBFS due to -Werror=format-security proposed upstream on 2022-10-06 none No
gcc-ada File times within some .ads files none none No
ldns binary containing source file name differ depending on makeflags proposed upstream none No
libverto missing files when building with /bin/sh = dash merged but not released (latest release 0.3.2 from 2021-03) none No
linux Signed modules none none No
linux-docs lots of issues - ordering, linking, ... none none No
linux-headers /usr/lib/modules/*/build/vmlinux diff[リンク切れ 2021-11-15] none none No
linux-lts as for linux none none No
linux-lts-docs as for linux-docs none none No
linux-lts-headers as for linux-headers none none No
nss Binary differences in /usr/lib/lib{freebl3,freeblpriv3,softokn3}.chk from shlibsign none none No
perl timestamp, uname encoded in build none none No
syslinux FTBFS proposed in issue none No

[extra]

Package Issue Solution/Patch Assignee Solved
abiword usr/lib/python2.7/site-packages/gi/overrides/Abi.pyc and .pyo none none No
accounts-qml-module .BUILDINFO size issue - FTBFS during rebuild none none No
amdvlk many differences in usr/lib/amdvlk64.so none none No
ant .jar file differences none none No
ant-doc lots of timestamps (javadoc), and .zip file difference none none No
antlr2AUR usr/share/java/antlr2.jar none none No
apparmor Adding files to backup array needs sorting, usr/lib/python3.8/site-packages/LibAppArmor/__pycache__/LibAppArmor.cpython-38.pyc none none No
asymptote Dates in html and info. PDF document differences (dates?) none none No
autogen Timestamp in man pages, sr/share/autogen/libopts-42.1.17.tar.gz with different file ownership, and a small binary change in usr/bin/autogen need export MAN_PAGE_DATE=... and configure --enable-timeout=70 none No
bigloo uname and timestamps all over the place none none No
breezy 3.0.2.3-3 reproducible with both repro and makechrootpkg tooling issue? none No
brltty usr/share/java/brlapi.jar none none No
check-docs lots of texi2html timestamps none none No
chromaprint binary difference in usr/bin/fpcalc none none No
clisp ip address; timestamps in ps docs, likely much more none none No
colord Profile ID differs in usr/share/color/icc/colord/{Crayons,x11-colors}.icc and binary differences in usr/lib/colord none none No
conky timestamp (from toluapp) and uname (at minimum) none none No
deluge .pyc file, .egg files none none No
doxygen-docs lots of pdfs with differences none none No
ecl uname, timestamp, gzip, lots of other binary differences none none No
eclipse-ecj .jar file none none No
efitools /usr/share/efitools/efi/LockDown.efi has binary differences none none No
efl lots of binary differences none none No
efl-docs pdf differences, including dates none none No
emacs binary differences in usr/bin/emacs none none No
extra-cmake-modules Small ordering diff in /usr/share/doc/ECM/ExtraCMakeModules.qch none none No
firefox It is firefox ; PGO? bug + patch[リンク切れ 2023-05-20] none No
fontconfig FTBFS with repro. Timestamp inside man pages none none No
fontforge Binary differences in fontforge and some libraries none none No
libakonadi user/group names of files in usr/share/kdevappwizard/templates/akonadi{resource,serializer}.tar.bz2 none none No
libbluray file attribute(?) differences in usr/share/java/{libbluray{,-awt}-j2se-1.2.0.jar none none No
libgee Binary differences in usr/lib/libgee-0.8.so.2.6.1 none none No
libgtop uname in /usr/bin/libgtop_server2 none none No
libibus /usr/lib/python2.7/site-packages/gi/overrides/IBus.pyc and .pyo have differences none none No
libjpeg-turbo FTBFS under repro. makerepropkg - many differences everywhere... none none No
liblangtag /usr/share/gir-1.0/LangTag-0.6.gir none none No
libmp4v2 timestamp in usr/include/mp4v2/project.h & usr/lib/libmp4v2.so.2.0.0 none none No
libquvi timestamp in libquvi-0.9-0.9.4.so none none No
lirc timestamp in yaml files, usr/share/lirc/lirc-0.10.1.tar.gz has lots of timestamp differences, repro causes poll() detection issue not found in makerepropkg patch none No
meson .pyc files, also some test .pyc files missing none none No
r Lots of timestamps in files, gzip timestamps, randomly(?) generated paths in /tmp/, binary differences... none none No
transmission-gtk uname in usr/bin/transmission-gtk, build with vendored dependencies (miniupncpc which contains uname -r) none none No
zabbix-agent2 Timestamp in /usr/bin/zabbix_agent2 none none No
zeitgeist diff[リンク切れ 2021-11-15] Weird text differences in /usr/lib/libzeitgeist-2.0.so.0.0.0 none none No

[multilib]

Package Issue Solution/Patch Assignee Solved
lib32-keyutils Binary includes build date proposed none No