1DEBREPRO(1) DEBREPRO(1)
2
3
4
6 debrepro - reproducibility tester for Debian packages
7
9 debrepro [OPTIONS] [SOURCEDIR]
10
12 debrepro will build a given source directory twice, with a set of
13 variations between the first and the second build, and compare the
14 produced binary packages. If diffoscope is installed, it is used to
15 compare non-matching binaries. If disorderfs is installed, it is used
16 during the build to inject non-determinism in filesystem listing
17 operations.
18
19 SOURCEDIR must be a directory containing an unpacked Debian source
20 package. If SOURCEDIR is omitted, the current directory is assumed.
21
23 At the very end of a build, debrepro will inform the location of the
24 output directory where the build artifacts can be found. In that
25 directory, you will find:
26
27 $OUTPUTDIR/first
28 Contains the results of the first build, including a copy of the
29 source tree, and the resulting binary packages.
30
31 $OUTPUTDIR/first/build.sh
32 Contains the exact build script that was used in the first build.
33
34 $OUTPUTDIR/second
35 Contains the results of the second build, including a copy of the
36 source tree, and the resulting binary packages.
37
38 $OUTPUTDIR/second/build.sh
39 Contains the exact build script that was used in the second build.
40
41 Taking a diff(1) between $OUTPUTDIR/first/build.sh and
42 $OUTPUTDIR/second/build.sh is an excellent way of figuring out exactly
43 what changed between the two builds.
44
46 user
47 The $USER environment variable will contain different values
48 between the first and second builds.
49
50 path
51 During the second build, a fake, non-existing directory will be
52 appended to the $PATH environment variable.
53
54 umask
55 The builds will use different umask settings.
56
57 locale
58 Both $LC_ALL and $LANG will be different across the two builds.
59
60 timezone
61 $TZ will be different across builds.
62
63 filesystem-ordering
64 If disorderfs is installed, both builds will be done under a
65 disorderfs overlay directory. This will cause filesystem listing
66 operations to be return items in a non-deterministic order.
67
68 time
69 The second build will be executed 213 days, 7 hours and 13 minutes
70 in the future with regards to the current time (using faketime(1)).
71
73 -s VARIATION, --skip VARIATION
74 Don't perform the named VARIATION. Variation names are the ones
75 used in their description in section SUPPORTED VARIATIONS.
76
77 -b COMMAND, --before-second-build COMMAND
78 Run COMMAND before performing the second build. This can be used
79 for example to apply a patch to a source tree for the second build,
80 and check whether (or how) the resulting binaries are affected.
81
82 Examples:
83
84 $ debrepro --before-second-build "git checkout branch-with-changes"
85
86 $ debrepro --before-second-build "patch -p1 < /path/to/patch"
87
88 -t TIME, --timeout TIME
89 Apply a timeout to all builds. TIME must be a time specification
90 compatible with GNU timeout(1).
91
92 -h, --help
93 Display this help message and exit.
94
96 0 Package is reproducible.
97
98 Reproducible here means that the two builds produced the exactly
99 the same binaries, under the set of variations that debrepro tests.
100 Other sources of non-determinism in builds that are not yet tested
101 might still affect builds in the wild.
102
103 1 Package is not reproducible.
104
105 2 The given input is not a valid Debian source package.
106
107 3 Required programs are missing.
108
110 diffoscope (1), disorderfs (1), timeout(1)
111
113 Antonio Terceiro <terceiro@debian.org>.
114
115
116
117Debian Utilities 2021-05-03 DEBREPRO(1)