debrepro man page

debrepro ā€” reproduciblity tester for Debian packages

Synopsis

debrepro [Options] [SOURCEDIR]

Description

debrepro will build a given source directory twice, with a set of variation between the first and the second build, and compare the binary packages produced. 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. The contents of this directory are as follows:

$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, unexisting 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.

Options

-s VARIATION, --skip VARIATION

Don't perform the named VARIATION. Variation names are the ones used in their description in section Supported Variations.

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>.

Referenced By

devscripts(1).

2017-07-20 Debian Utilities