=head1 NAME debrepro - reproducibility tester for Debian packages =head1 SYNOPSIS B [I] [I] =head1 DESCRIPTION B 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 B is installed, it is used to compare non-matching binaries. If B is installed, it is used during the build to inject non-determinism in filesystem listing operations. I must be a directory containing an unpacked Debian source package. If I is omitted, the current directory is assumed. =head1 OUTPUT DIRECTORY At the very end of a build, B will inform the location of the output directory where the build artifacts can be found. In that directory, you will find: =over =item I<$OUTPUTDIR/first> Contains the results of the first build, including a copy of the source tree, and the resulting binary packages. =item I<$OUTPUTDIR/first/build.sh> Contains the exact build script that was used in the first build. =item I<$OUTPUTDIR/second> Contains the results of the second build, including a copy of the source tree, and the resulting binary packages. =item I<$OUTPUTDIR/second/build.sh> Contains the exact build script that was used in the second build. =back Taking a B between I<$OUTPUTDIR/first/build.sh> and I<$OUTPUTDIR/second/build.sh> is an excellent way of figuring out exactly what changed between the two builds. =head1 SUPPORTED VARIATIONS =over =item B The I<$USER> environment variable will contain different values between the first and second builds. =item B During the second build, a fake, non-existing directory will be appended to the I<$PATH> environment variable. =item B The builds will use different umask settings. =item B Both I<$LC_ALL> and I<$LANG> will be different across the two builds. =item B I<$TZ> will be different across builds. =item B If B 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. =item B