再現性のあるビルド/ステータス
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
にパッチを適用する必要がある場合があります。再現性のあるビルドへの 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]
パッケージ | 問題 | 解決策/パッチ | 譲受人 | 解決済み |
---|---|---|---|---|
audit | FTBFS with linux-headers 5.17+ | proposed | none | No |
dmraid | FTBFS による -Werror=format-security |
proposed upstream on 2022-10-06 | none | No |
gcc-ada | 一部の .ads ファイル内のファイル時間 | none | none | No |
ldns | ソースファイル名を含むバイナリはメイクフラグによって異なります | proposed upstream | none | No |
libverto | /bin/sh = Dash を使用してビルドするときにファイルが見つからない | マージ済み ですがリリースされていません (2021-03 の最新リリース 0.3.2) | none | No |
linux | 署名付きモジュール | none | none | No |
linux-docs | 多くの問題 - 注文、リンク, ... | none | none | No |
linux-headers | /usr/lib/modules/*/build/vmlinux diff[リンク切れ 2021-11-15] |
none | none | No |
linux-lts | linux の場合 | none | none | No |
linux-lts-docs | linux-docs について | none | none | No |
linux-lts-headers | linux-headers について | none | none | No |
nss | shlibsign の /usr/lib/lib{freebl3,freeblpriv3,softokn3}.chk のバイナリの違い |
none | none | No |
perl | タイムスタンプ、ビルド時にエンコードされた uname | none | none | No |
syslinux | FTBFS | proposed in issue | none | No |
[extra]
パッケージ | 問題 | 解決策/パッチ | 譲受人 | 解決済み |
---|---|---|---|---|
abiword | usr/lib/python2.7/site-packages/gi/overrides/Abi.pyc および .pyo |
none | none | No |
accounts-qml-module | .BUILDINFO サイズの問題 - リビルド中の FTBFS |
none | none | No |
amdvlk | usr/lib/amdvlk64.so には多くの違いがあります |
none | none | No |
ant | .jar ファイルの違い | none | none | No |
ant-doc | 大量のタイムスタンプ (javadoc)、および .zip ファイルの違い | none | none | No |
antlr2AUR | usr/share/java/antlr2.jar |
none | none | No |
apparmor | バックアップ配列にファイルを追加するには、並べ替えが必要です。usr/lib/python3.8/site-packages/LibAppArmor/__pycache__/LibAppArmor.cpython-38.pyc |
none | none | No |
asymptote | HTML と情報の日付。PDF ドキュメントの違い (日付?) | none | none | No |
autogen | マニュアルページのタイムスタンプ、ファイル所有権が異なる sr/share/autogen/libopts-42.1.17.tar.gz 、およびバイナリの小さな変更 usr/bin/autogen |
need export MAN_PAGE_DATE=... and configure --enable-timeout=70 | none | No |
bigloo | あちこちにある uname とタイムスタンプ | none | none | No |
breezy | 3.0.2.3-3 は repro と makechrootpkg の両方で再現可能 | tooling issue? | none | No |
brltty | usr/share/java/brlapi.jar |
none | none | No |
check-docs | たくさんの texi2html タイムスタンプ | none | none | No |
chromaprint | usr/bin/fpcalc のバイナリ差分 |
none | none | No |
clisp | IPアドレス; ps ドキュメントのタイムスタンプ、おそらくもっと多く | none | none | No |
colord | プロファイル ID は usr/share/color/icc/colord/{Crayons,x11-colors}.icc で異なり、バイナリの違いは usr/lib/colord で異なります |
none | none | No |
conky | タイムスタンプ (toluapp から) および uname (少なくとも) | none | none | No |
deluge | .pyc file, .egg ファイル | none | none | No |
doxygen-docs | 違いのある多くの PDF | none | none | No |
ecl | uname、タイムスタンプ、gzip、その他多くのバイナリの違い | none | none | No |
eclipse-ecj | .jar ファイル | none | none | No |
efitools | /usr/share/efitools/efi/LockDown.efi バイナリの違いがあります |
none | none | No |
efl | バイナリの違いがたくさんある | none | none | No |
efl-docs | PDF の相違点 (日付を含む) | none | none | No |
emacs | usr/bin/emacs のバイナリの違い |
none | none | No |
extra-cmake-modules | /usr/share/doc/ECM/ExtraCMakeModules.qch の小さな順序の違い |
none | none | No |
firefox | firefox ; PGO? | bug + patch[リンク切れ 2023-05-20] | none | No |
fontconfig | 再現性のある FTBFS。マニュアルページ内のタイムスタンプ | none | none | No |
fontforge | FontForge と一部のライブラリのバイナリの違い | none | none | No |
libakonadi | usr/share/kdevappwizard/templates/akonadi{resource,serializer}.tar.bz2 内のファイルのユーザー/グループ名 |
none | none | No |
libbluray | usr/share/java/{libbluray{,-awt}-j2se-1.2.0.jar のファイル属性 (?) の違い |
none | none | No |
libgee | usr/lib/libgee-0.8.so.2.6.1 のバイナリの違い |
none | none | No |
libgtop | /usr/bin/libgtop_server2 の uname |
none | none | No |
libibus | /usr/lib/python2.7/site-packages/gi/overrides/IBus.pyc と .pyo には違いがあります |
none | none | No |
libjpeg-turbo | FTBFS は再現中です。makerepropkg - どこでも多くの違いがあります... | none | none | No |
liblangtag | /usr/share/gir-1.0/LangTag-0.6.gir |
none | none | No |
libmp4v2 | usr/include/mp4v2/project.h および usr/lib/libmp4v2.so.2.0.0 のタイムスタンプ |
none | none | No |
libquvi | libquvi-0.9-0.9.4.so のタイムスタンプ |
none | none | No |
lirc | yaml ファイルのタイムスタンプ、usr/share/lirc/lirc-0.10.1.tar.gz には多くのタイムスタンプの違いがあり、再現すると、makerepropkg では見つからない poll() 検出の問題が発生します。 |
patch | none | No |
meson | .pyc ファイル、またいくつかのテスト .pyc ファイルが欠落しています | none | none | No |
r | ファイル内の多数のタイムスタンプ、gzip タイムスタンプ、/tmp/ 内にランダムに (?) 生成されたパス、バイナリの違い... |
none | none | No |
transmission-gtk | usr/bin/transmission-gtk の uname、ベンダーの依存関係 (以下を uname -r 含む miniupncpc を使用してビルドします) |
none | none | No |
zabbix-agent2 | /usr/bin/zabbix_agent2 のタイムスタンプ |
none | none | No |
zeitgeist | diff[リンク切れ 2021-11-15] /usr/lib/libzeitgeist-2.0.so.0.0.0 の奇妙なテキストの違い |
none | none | No |
[multilib]
パッケージ | 問題 | 解決策/パッチ | 譲受人 | 解決済み |
---|---|---|---|---|
lib32-keyutils | バイナリにはビルド日が含まれます | proposed | none | No |