Skip to content

Fix most reproducibility issues

Ben Hutchings requested to merge benh/linux:reproducible into master

This MR fixes most of the outstanding reproducibility issues, but not all.

I built the full package using reprotest, disabling the fileordering variation (which I couldn't get to work in a container) and the time variation (which seemed to cause an infinite loop of Makefile updating).

diffoscope needed more than the available 16 GB RAM to compare all packages, but I have been able to compare binary packages one-by-one and only look at the "cloud-amd64" flavour in depth.

The changes are:

  • Revert "perf tools: Use $KBUILD_BUILD_TIMESTAMP as man page date". The actual fixes for man page reproducibility are upstream since 6.5-rc1, so this just removes our old broken patch for it.
  • d/rules.real: Fix missing -ffile-prefix-map options for user-space
  • linux-perf: Remove remaining source filename from executable
  • linux-perf: Work around gcc bug with -ffile-prefix-map and assembly sources
  • Documentation: Use relative source filenames in ABI documentation
  • kbuild, bpf: Fix BTF reproducibility
  • d/rules.real: Add -fdebug-prefix-map option for assembly sources in kernel

The remaining problems are:

  • linux-doc-6.11:
    • In html/translations/zh_TW/process/license-rules.html, the "current" class is applied to some different elements.
    • The sidebar ToC sometimes changes.
  • linux-image-6.11+unreleased-cloud-amd64-unsigned:
    • The built-in certificate changes.
    • Module signatures change.
  • linux-image-6.11+unreleased-cloud-amd64-dbg:
    • diffoscope OOMs when trying to compare this but a simple diff of the contents shows that only vmlinux differs.

This is currently based on top of !1213 (merged), which is needed to make objtool reproducible.

Edited by Ben Hutchings

Merge request reports

Loading