tools.html 4.03 KB
Newer Older
1 2 3 4
---
layout: page
title: Tools
permalink: /tools/
5
order: 3
6 7 8 9 10
---
<div class="row">
  <div class="four columns">&nbsp;</div>
  <div class="eight columns text">
    <p>
11
      Several tools are available to make your life easier when working on
12 13
      <em>reproducible builds</em>.
      <a href="http://reproducible.alioth.debian.org/releases/">Signed tarballs are available</a>.
14 15 16 17 18 19 20 21 22
    </p>
  </div>
</div>
<div class="row">
  <div class="four columns title">
    <h2>diffoscope</h2>
  </div>
  <div class="eight columns text">
    <p>
23
      <a href="https://diffoscope.org/">diffoscope</a> will try to <strong>get
24 25
      to the bottom of what makes files or directories different</strong>. It
      will recursively unpack archives of many kinds and transform various
26
      binary formats into more human-readable forms for comparison. It can
27
      compare two tarballs, ISO images, or PDFs just as easily.
28 29
    </p>
    <p>
30
      See an <a href="https://diffoscope.org/examples/igerman98_20131206-5.txt">example text output</a>.
31
    </p>
32 33 34
    <p>
      diffoscope is also <a href="https://pypi.python.org/pypi/diffoscope">available on PyPI</a>.
    </p>
35 36
  </div>
</div>
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
<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>
53 54 55 56 57 58 59 60 61
<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
62 63 64
      <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.
65 66 67 68 69 70 71 72 73 74
    </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
75
      difficult to fix at the source, which <strong>requires
76 77 78 79 80 81 82 83
      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>
Chris Lamb's avatar
Chris Lamb committed
84 85 86 87 88 89 90 91 92 93 94 95
<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>
96 97 98 99 100 101 102 103 104 105
  <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>
Chris Lamb's avatar
Chris Lamb committed
106
</div>