Commit be7fbb19 authored by Chris Lamb's avatar Chris Lamb 💬

Move the tools page to the new style.

parent d3e7e62e
---
layout: page
title: Tools
permalink: /tools/
order: 3
---
<div class="row">
<div class="four columns">&nbsp;</div>
<div class="eight columns text">
<p>
Several tools are available to make your life easier when working on
<em>reproducible builds</em>.
<a href="http://reproducible.alioth.debian.org/releases/">Signed tarballs are available</a>.
</p>
</div>
</div>
<div class="row">
<div class="four columns title">
<h2>diffoscope</h2>
</div>
<div class="eight columns text">
<p>
<a href="https://diffoscope.org/">diffoscope</a> will try to <strong>get
to the bottom of what makes files or directories different</strong>. It
will recursively unpack archives of many kinds and transform various
binary formats into more human-readable forms for comparison. It can
compare two tarballs, ISO images, or PDFs just as easily.
</p>
<p>
See an <a href="https://diffoscope.org/examples/igerman98_20131206-5.txt">example text output</a>.
</p>
<p>
diffoscope is also <a href="https://pypi.python.org/pypi/diffoscope">available on PyPI</a>.
</p>
</div>
</div>
<div class="row">
<div class="four columns title">
<h2>trydiffoscope</h2>
</div>
<div class="eight columns text">
<p>
If you wish to just experiment with
<a href="https://diffoscope.org/">diffoscope</a> without installing a large
number of run-time dependencies, you can use the
<a href="https://try.diffoscope.org/">try.diffoscope.org</a> service directly
from your web browser. A lightweight command-line client is also
<a href="https://packages.debian.org/sid/diffoscope">available in Debian</a> and
<a href="https://pypi.python.org/pypi/trydiffoscope">on PyPI</a>.
</p>
</div>
</div>
<div class="row">
<div class="four columns title">
<h2>disorderfs</h2>
</div>
<div class="eight columns text">
<p>
Problems with <a href="/docs/stable-inputs/">unstable order of inputs</a>
or other variations introduced by filesystems can sometimes be hard to track down.
<a href="https://packages.debian.org/sid/disorderfs">disorderfs</a> is
<strong>an overlay FUSE filesystem that deliberately introduces
non-determinism into filesystem metadata</strong>. For example, it can
randomize the order in which directory entries are read.
</p>
</div>
</div>
<div class="row">
<div class="four columns title">
<h2>strip-nondeterminism</h2>
</div>
<div class="eight columns text">
<p>
Some tools used in build systems might introduce non-determinism in ways
difficult to fix at the source, which <strong>requires
post-processing</strong>. <a
href="https://packages.debian.org/sid/strip-nondeterminism">strip-nondeterminism</a>
knows how to <strong>normalize various file formats</strong> such as gzipped files, ZIP
archives, and Jar files. It is written in Perl with extensibility in
mind.
</p>
</div>
</div>
<div class="row">
<div class="four columns title">
<h2>reprotest</h2>
</div>
<div class="eight columns text">
<p>
<a href="https://packages.debian.org/sid/reprotest">reprotest</a> builds
the same source code in different environments and then checks the
binaries produced by the builds to see if changing the environment,
without changing the source code, changed the generated binaries.
</p>
</div>
<div class="row">
<div class="four columns title">
<h2>more tools</h2>
</div>
<div class="eight columns text">
<ul>
<li><a href="https://zlika.github.io/reproducible-build-maven-plugin">reproducible-build-maven-plugin</a> for the <a href="https://maven.apache.org">Apache Maven</a> build tool, popular with Java projects.</li>
<li><a href="https://github.com/raboof/sbt-reproducible-builds#readme">sbt-reproducible-builds</a> plugin for the <a href="https://www.scala-sbt.org/">sbt</a> build tool, popular with <a href="https://www.scala-lang.org/">Scala</a> projects.</li>
</ul>
</div>
</div>
---
layout: new/default
title: Tools
permalink: /tools/
order: 3
---
# Tools
Several tools are available to make your life easier when working on *reproducible builds*.
[Signed tarballs are available](http://reproducible.alioth.debian.org/releases/).
## diffoscope
[diffoscope](https://diffoscope.org/) will try to *get to the bottom of what
makes files or directories different*. It will recursively unpack archives of
many kinds and transform various binary formats into more human-readable forms
for comparison. It can compare two tarballs, ISO images, or PDFs just as
easily.
See an [example text output](https://diffoscope.org/examples/igerman98_20131206-5.txt).
diffoscope is also [available on PyPI](https://pypi.python.org/pypi/diffoscope).
### trydiffoscope
If you wish to just experiment with [diffoscope](https://diffoscope.org/)
without installing a large number of run-time dependencies, you can use the
[try.diffoscope.org](https://try.diffoscope.org/) service directly from your
web browser. A lightweight command-line client is also [available in
Debian](https://packages.debian.org/sid/diffoscope) and [on
PyPI](https://pypi.python.org/pypi/trydiffoscope).
## disorderfs
Problems with [unstable order of inputs](/docs/stable-inputs/) or other
variations introduced by filesystems can sometimes be hard to track down.
[disorderfs](https://packages.debian.org/sid/disorderfs) is *an overlay FUSE
filesystem that deliberately introduces non-determinism into filesystem
metadata*. For example, it can randomize the order in which directory entries
are read.
## strip-nondeterminism
Some tools used in build systems might introduce non-determinism in ways
difficult to fix at the source, which *requires post-processing*.
[strip-nondeterminism](https://packages.debian.org/sid/strip-nondeterminism)
knows how to *normalize various file formats* such as gzipped files, ZIP
archives, and Jar files. It is written in Perl with extensibility in mind.
## reprotest
[reprotest](https://packages.debian.org/sid/reprotest) builds
the same source code in different environments and then checks the
binaries produced by the builds to see if changing the environment,
without changing the source code, changed the generated binaries.
## Other tools
* [reproducible-build-maven-plugin](https://zlika.github.io/reproducible-build-maven-plugin) for the [Apache Maven](https://maven.apache.org) build tool, popular with Java projects.
* [sbt-reproducible-builds](https://github.com/raboof/sbt-reproducible-builds#readme) plugin for the [sbt](https://www.scala-sbt.org/) build tool, popular with [Scala](https://www.scala-lang.org/) projects.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment