Notes for linux86 - reproducible builds result

Version annotated: 0.16.17-3.1
Identified issues:
Identifier: timestamps_in_gzip_headers
URL https://wiki.debian.org/ReproducibleBuilds/TimestampsInGzipHeaders
Description gzip stores a timestamp by default in its header.
Identifier: different_due_to_umask
Description Files have varying permissions because of different umasks.
Identifier: timestamps_in_static_libraries
URL https://wiki.debian.org/ReproducibleBuilds/TimestampsInStaticLibraries
Description .a files are ar archives. Since binutils 2.25-6 they should be deterministic
by default, but there are some remaining buggy corner cases - see
bug #843210 for example if the package uses binutils-multiarch.
(#843210 has been fixed in sid now, hopefully this issue becomes moot now.)
.
#978494 filed with patch for binutils-arm-none-eabi.
#996184 filed with patch for bintuils-or1k-elf.
.
Other tools that create ar archives directly should in theory be covered by
strip-nondeterminism, but it is still good to patch them.
Identifier: gcc_captures_build_path
Description Captures build path, e.g., /build/1st/foo-42.0 v. /build/foo-42.0/2nd
.
Until early 2024 we varied the build path when testing packages from unstable
and experimental, which we have stopped doing now as the build path is recorded
as part of the environment and thus can be used when rebuilding.
.
This issue is kept here for the time being.
.
dpkg-buildflags version 1.20.6+ sets -ffile-prefix-map by default
(and -fdebug-prefix-map in older versions) which fixes this issue
in many cases, but not all (see: records_build_flags).
.
There are patches submitted upstream to address this specific issue, but they
are unlikely to be merged at this point:
.
https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00513.html
.
When this is accepted into GCC upstream, we could remove this note.
In the meantime, please do not remove this issue, nor mark it as deterministic,
nor untag these packages.
Comments: the ar implementation used, ar86, does not appear to support
deterministic archives, resulting in embedded timestamps, uid,
gid, and umask in .a files.
 

Our notes about issues affecting packages are stored in notes.git and are targeted at packages in Debian in 'unstable/amd64' (unless they say otherwise).