debrepro
DEBREPRO(1) DEBREPRO(1)
NAME
debrepro - reproducibility tester for Debian packages
SYNOPSIS
debrepro [OPTIONS] [SOURCEDIR]
DESCRIPTION
debrepro will build a given source directory twice, with a set of
variations between the first and the second build, and compare the
produced binary packages. If diffoscope is installed, it is used to
compare non-matching binaries. If disorderfs is installed, it is used
during the build to inject non-determinism in filesystem listing
operations.
SOURCEDIR must be a directory containing an unpacked Debian source
package. If SOURCEDIR is omitted, the current directory is assumed.
OUTPUT DIRECTORY
At the very end of a build, debrepro will inform the location of the
output directory where the build artifacts can be found. In that
directory, you will find:
$OUTPUTDIR/first
Contains the results of the first build, including a copy of the
source tree, and the resulting binary packages.
$OUTPUTDIR/first/build.sh
Contains the exact build script that was used in the first build.
$OUTPUTDIR/second
Contains the results of the second build, including a copy of the
source tree, and the resulting binary packages.
$OUTPUTDIR/second/build.sh
Contains the exact build script that was used in the second build.
Taking a diff(1) between $OUTPUTDIR/first/build.sh and
$OUTPUTDIR/second/build.sh is an excellent way of figuring out exactly
what changed between the two builds.
SUPPORTED VARIATIONS
user
The $USER environment variable will contain different values
between the first and second builds.
path
During the second build, a fake, non-existing directory will be
appended to the $PATH environment variable.
umask
The builds will use different umask settings.
locale
Both $LC_ALL and $LANG will be different across the two builds.
timezone
$TZ will be different across builds.
filesystem-ordering
If disorderfs is installed, both builds will be done under a
disorderfs overlay directory. This will cause filesystem listing
operations to be return items in a non-deterministic order.
time
The second build will be executed 213 days, 7 hours and 13 minutes
in the future with regards to the current time (using faketime(1)).
OPTIONS
-s VARIATION, --skip VARIATION
Don't perform the named VARIATION. Variation names are the ones
used in their description in section SUPPORTED VARIATIONS.
-b COMMAND, --before-second-build COMMAND
Run COMMAND before performing the second build. This can be used
for example to apply a patch to a source tree for the second build,
and check whether (or how) the resulting binaries are affected.
Examples:
$ debrepro --before-second-build "git checkout branch-with-changes"
$ debrepro --before-second-build "patch -p1 < /path/to/patch"
-h, --help
Display this help message and exit.
EXIT STATUS
0 Package is reproducible.
Reproducible here means that the two builds produced the exactly
the same binaries, under the set of variations that debrepro tests.
Other sources of non-determinism in builds that are not yet tested
might still affect builds in the wild.
1 Package is not reproducible.
2 The given input is not a valid Debian source package.
3 Required programs are missing.
SEE ALSO
diffoscope (1), disorderfs (1),
AUTHOR
Antonio Terceiro <terceiro@debian.org>.
Debian Utilities 2020-02-13 DEBREPRO(1)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2024
Hurricane Electric.
All Rights Reserved.