Man page - debrepro(1)
Packages contains this manual
- devscripts.conf(5)
- build-rdeps(1)
- whodepends(1)
- checkbashisms(1)
- annotate-output(1)
- namecheck(1)
- transition-check(1)
- debrsign(1)
- dpkg-genbuilddeps(1)
- deb-reversion(1)
- ltnu(1)
- debbisect(1)
- cowpoke(1)
- dscextract(1)
- list-unreleased(1)
- getbuildlog(1)
- debclean(1)
- chdist(1)
- rc-alert(1)
- mk-origtargz(1)
- deb2docker(1)
- edit-patch(1)
- what-patch(1)
- dd-list(1)
- tagpending(1)
- suspicious-source(1)
- bts(1)
- deb-why-removed(1)
- devscripts(7)
- plotchangelog(1)
- uscan(1)
- mergechanges(1)
- debsnap(1)
- debftbfs(1)
- hardening-check(1)
- dscverify(1)
- dget(1)
- who-uploads(1)
- debrepro(1)
- git-deborig(1)
- deb-janitor(1)
- deb2apptainer(1)
- dep-14-convert-git-branch-names(1)
- dep3changelog(1)
- wnpp-alert(1)
- pts-unsubscribe(1)
- sadt(1)
- debc(1)
- debdiff-apply(1)
- nmudiff(1)
- add-patch(1)
- dpkg-depcheck(1)
- rmadison(1)
- debsign(1)
- deb2singularity(1)
- diff2patches(1)
- debi(1)
- mk-build-deps(1)
- origtargz(1)
- debrebuild(1)
- deb-check-file-conflicts(1)
- reproducible-check(1)
- mass-bug(1)
- debootsnap(1)
- salsa(1)
- svnpath(1)
- debrelease(1)
- pts-subscribe(1)
- debdiff(1)
- dch(1)
- debcheckout(1)
- wrap-and-sort(1)
- wnpp-check(1)
- manpage-alert(1)
- dcmd(1)
- who-permits-upload(1)
- debchange(1)
- archpath(1)
- debuild(1)
- grep-excuses(1)
- debcommit(1)
- uupdate(1)
apt-get install devscripts
Manual
DEBREPRO
NAMESYNOPSIS
DESCRIPTION
OUTPUT DIRECTORY
SUPPORTED VARIATIONS
OPTIONS
EXIT STATUS
SEE ALSO
AUTHOR
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"
-B COMMAND, --build-command COMMAND
Use custom build command. Default: dpkg-buildpackage -b -us -uc .
If a custom build command is specified, the restriction of only running against a Debian source tree is relaxed and you can run debrepro against any source directory.
-a PATTERN, --artifact-pattern PATTERN
Define a file glob pattern to determine which artifacts need to be compared across the builds. Default: ../*.deb .
-n, --no-copy
Do not copy the source directory to the temporary work directory before each build. Use this to run debrepro against the source directory directly.
-t TIME, --timeout TIME
Apply a timeout to all builds. TIME must be a time specification compatible with GNU timeout (1).
-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), timeout (1)
AUTHOR
Antonio Terceiro <terceiro@debian.org>.