1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
=head1 NAME
debrepro - reproduciblity tester for Debian packages
=head1 SYNOPSIS
B<debrepro> [I<OPTIONS>] [I<SOURCEDIR>]
=head1 DESCRIPTION
B<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 B<diffoscope> is installed, it is used to compare
non-matching binaries. If B<disorderfs> is installed, it is used during
the build to inject non-determinism in filesystem listing operations.
I<SOURCEDIR> must be a directory containing an unpacked Debian source
package. If I<SOURCEDIR> is omitted, the current directory is assumed.
=head1 OUTPUT DIRECTORY
At the very end of a build, B<debrepro> will inform the location of the
output directory where the build artifacts can be found. The contents of
this directory are as follows:
=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<diff(1)> 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<user>
The I<$USER> environment variable will contain different values between the
first and second builds.
=item B<path>
During the second build, a fake, unexisting directory will be appended to the
I<$PATH> environment variable.
=item B<umask>
The builds will use different umask settings.
=item B<locale>
Both I<$LC_ALL> and I<$LANG> will be different across the two builds.
=item B<timezone>
I<$TZ> will be different across builds.
=item filesystem-ordering
If B<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.
=item B<time>
The second build will be executed 213 days, 7 hours and 13 minutes in the
future with regards to the current time.
=back
=head1 OPTIONS
=over
=item -s VARIATION, --skip VARIATION
Don't perform the named VARIATION. Variation names are the ones used in
their description in section B<SUPPORTED VARIATIONS>.
=back
=head1 EXIT STATUS
=over
=item 0Z<>
Package is reproducible.
Reproducible here means that the two builds produced the exactly the
same binaries, under the set of variations that B<debrepro> tests. Other
sources of non-determinism in builds that are not yet tested might still
affect builds in the wild.
=item 1Z<>
Package is not reproducible.
=item 2Z<>
The given input is not a valid Debian source package.
=item 3Z<>
Required programs are missing.
=back
=head1 SEE ALSO
diffoscope (1), disorderfs (1),
=head1 AUTHOR
Antonio Terceiro <terceiro@debian.org>.
|