再現性のあるビルド/ステータス
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 |