再現性のあるビルド/ステータス
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 command
The builtin OpenJDK jar
program will support SOURCE_DATE_EPOCH
starting with OpenJDK version 15.
strip-nondeterminism
As a last resort, strip-nondeterminism from Debian is able to strip unreproducible metadata like file timestamps from a variety of file types, including JARs. It is not a cure-all (e.g. build systems might include additional unreproducible metadata in the JAR manifest, strip-nondeterminism removes some, but not all of these) and should only be used as a last resort if no native support for reproducible builds is available:
strip-nondeterminism --timestamp "$SOURCE_DATE_EPOCH"
Example package: pdftk.
KDE Kdeveloper project files
KDE creates Package App template .tar.bz2 files which tar files and userid is different when reproducing with repro which might be a bug in repro. https://gist.githubusercontent.com/jelly/570313f56ee59be7674ad4cc002232e7/raw/b85536690c48b23ce97650e8db8f0ca18c2dbf1a/gistfile1.txt
The cmake file which generates the issue.
Doxygen documentation build with graphviz-2.44.0-2
graphviz lacked a dependency on libpng, making PNG generation unavailable in dot as graphviz was installed before libpng was available and therefore not marking it as to be dlopen'd. All packages which depend on doxygen for generation documentation and with the following diff require a rebuild.
│ │ --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 |