Commit f0fdcb24 authored by Jacoba Neighbourhood's avatar Jacoba Neighbourhood Committed by Chris Lamb
Browse files

tools: final reorder

parent 422486ef
Loading
Loading
Loading
Loading
+48 −42
Original line number Diff line number Diff line
@@ -20,19 +20,6 @@ order: 30

## Tools to compare build artifacts and/or detect nondeterminism

#### disorderfs

Problems with [unstable order of inputs](/docs/stable-inputs/) or other
variations introduced by filesystems can sometimes be hard to track down.
`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.

<a href="https://salsa.debian.org/reproducible-builds/disorderfs" class="btn btn-outline-primary btn-sm">Git</a>
<a href="https://salsa.debian.org/reproducible-builds/disorderfs/merge_requests" class="btn btn-outline-primary btn-sm">Merge requests</a>
<a href="https://packages.debian.org/sid/disorderfs" class="btn btn-outline-primary btn-sm">Debian package</a>
<a href="https://archlinux.org/packages/extra/x86_64/disorderfs" class="btn btn-outline-primary btn-sm">Arch Linux package</a>

#### diffoscope

[diffoscope](https://diffoscope.org/) will try to get to the bottom of what
@@ -76,6 +63,19 @@ changing the source code, changed the generated binaries.
<a href="https://packages.debian.org/sid/reprotest" class="btn btn-outline-primary btn-sm">Debian package</a>
<a href="https://archlinux.org/packages/extra/any/reprotest" class="btn btn-outline-primary btn-sm">Arch Linux package</a>

#### disorderfs

Problems with [unstable order of inputs](/docs/stable-inputs/) or other
variations introduced by filesystems can sometimes be hard to track down.
`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.

<a href="https://salsa.debian.org/reproducible-builds/disorderfs" class="btn btn-outline-primary btn-sm">Git</a>
<a href="https://salsa.debian.org/reproducible-builds/disorderfs/merge_requests" class="btn btn-outline-primary btn-sm">Merge requests</a>
<a href="https://packages.debian.org/sid/disorderfs" class="btn btn-outline-primary btn-sm">Debian package</a>
<a href="https://archlinux.org/packages/extra/x86_64/disorderfs" class="btn btn-outline-primary btn-sm">Arch Linux package</a>

####  diffoci

`diffoci` compares Docker and OCI container images for helping reproducible builds.
@@ -84,35 +84,18 @@ changing the source code, changed the generated binaries.
<a href="https://github.com/reproducible-containers/diffoci/issues" class="btn btn-outline-primary btn-sm">Issues</a>
<a href="https://github.com/reproducible-containers/diffoci/pulls" class="btn btn-outline-primary btn-sm">Merge requests</a>

#### reproducible-apk-tools

#### apksigcopier

`apksigcopier` is a tool that enables using an android APK signature
as a build input, making it possible to create a reproducible build
from the source code without having access to the private key used
to create the signature. It can also be used to verify that two APKs
with different signatures are otherwise identical.
`reproducible-apk-tools` is a collection of scripts to help make
APKs reproducible, or find out why they are not.

<a href="https://github.com/obfusk/apksigcopier" class="btn btn-outline-primary btn-sm">Git</a>
<a href="https://github.com/obfusk/apksigcopier/issues" class="btn btn-outline-primary btn-sm">Issues</a>
<a href="https://github.com/obfusk/apksigcopier/pulls" class="btn btn-outline-primary btn-sm">Merge requests</a>
<a href="https://github.com/obfusk/reproducible-apk-tools" class="btn btn-outline-primary btn-sm">Git</a>
<a href="https://github.com/obfusk/reproducible-apk-tools/issues" class="btn btn-outline-primary btn-sm">Issues</a>
<a href="https://github.com/obfusk/reproducible-apk-tools/issuepullss" class="btn btn-outline-primary btn-sm">Merge requests</a>


## Tools to make builds reproducible (by removing nondeterminism)

#### disorderfs

Problems with [unstable order of inputs](/docs/stable-inputs/) or other
variations introduced by filesystems can sometimes be hard to track down.
`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.

<a href="https://salsa.debian.org/reproducible-builds/disorderfs" class="btn btn-outline-primary btn-sm">Git</a>
<a href="https://salsa.debian.org/reproducible-builds/disorderfs/merge_requests" class="btn btn-outline-primary btn-sm">Merge requests</a>
<a href="https://packages.debian.org/sid/disorderfs" class="btn btn-outline-primary btn-sm">Debian package</a>
<a href="https://archlinux.org/packages/extra/x86_64/disorderfs" class="btn btn-outline-primary btn-sm">Arch Linux package</a>

#### strip-nondeterminism

Some tools used in build systems might introduce non-determinism in ways
@@ -127,6 +110,19 @@ extensibility in mind.
<a href="https://packages.debian.org/sid/strip-nondeterminism" class="btn btn-outline-primary btn-sm">Debian package</a>
<a href="https://archlinux.org/packages/extra/any/strip-nondeterminism" class="btn btn-outline-primary btn-sm">Arch Linux package</a>

#### disorderfs

Problems with [unstable order of inputs](/docs/stable-inputs/) or other
variations introduced by filesystems can sometimes be hard to track down.
`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.

<a href="https://salsa.debian.org/reproducible-builds/disorderfs" class="btn btn-outline-primary btn-sm">Git</a>
<a href="https://salsa.debian.org/reproducible-builds/disorderfs/merge_requests" class="btn btn-outline-primary btn-sm">Merge requests</a>
<a href="https://packages.debian.org/sid/disorderfs" class="btn btn-outline-primary btn-sm">Debian package</a>
<a href="https://archlinux.org/packages/extra/x86_64/disorderfs" class="btn btn-outline-primary btn-sm">Arch Linux package</a>

#### Reproducible Build Maven Plugin

This Maven plugin tries to strip "non reproducible" data from the generatedartifacts.
@@ -155,6 +151,18 @@ APKs reproducible, or find out why they are not.
<a href="https://github.com/obfusk/reproducible-apk-tools/issues" class="btn btn-outline-primary btn-sm">Issues</a>
<a href="https://github.com/obfusk/reproducible-apk-tools/issuepullss" class="btn btn-outline-primary btn-sm">Merge requests</a>

#### apksigcopier

`apksigcopier` is a tool that enables using an android APK signature
as a build input, making it possible to create a reproducible build
from the source code without having access to the private key used
to create the signature. It can also be used to verify that two APKs
with different signatures are otherwise identical.

<a href="https://github.com/obfusk/apksigcopier" class="btn btn-outline-primary btn-sm">Git</a>
<a href="https://github.com/obfusk/apksigcopier/issues" class="btn btn-outline-primary btn-sm">Issues</a>
<a href="https://github.com/obfusk/apksigcopier/pulls" class="btn btn-outline-primary btn-sm">Merge requests</a>


## Tools for rebuilding

@@ -162,7 +170,7 @@ APKs reproducible, or find out why they are not.

#### rebuilderd

Independent verification system of binary packages. rebuilderd monitors the
Independent verification system of binary packages. `rebuilderd` monitors the
package repository of a linux distribution and uses rebuilder backends like
archlinux-repro to verify the provided binary packages can be reproduced from
the given source code.
@@ -251,16 +259,15 @@ information.
<a href="https://github.com/fepitre/rpmreproduce/issues" class="btn btn-outline-primary btn-sm">Issues</a>
<a href="https://github.com/fepitre/rpmreproduce/pulls" class="btn btn-outline-primary btn-sm">Merge requests</a>


#### orb: check opam package reproducibility

This tool can check if an opam package build is reproductible.
It has two subcommands: build and rebuild.

The orb build conducts a build of an opam package, and collects
`orb build` conducts a build of an opam package, and collects
the build result (and hashes thereof) and the build input.

The orb rebuild takes this data as input and conducts a second build with 
`orb rebuild` takes this data as input and conducts a second build with 
the same environment, and compares that the hashes of the produced
binaries are identical.

@@ -305,7 +312,6 @@ maintainer and currently installed packages on the system.
<a href="https://gitlab.archlinux.org/archlinux/arch-repro-status/-/merge_requests" class="btn btn-outline-primary btn-sm">Merge requests</a>
<a href="https://archlinux.org/packages/extra/x86_64/arch-repro-status/" class="btn btn-outline-primary btn-sm">Arch Linux package</a>


#### Builder-web - a web frontend for reproducible builds (robur)

`Builder-web` takes in submissions of builds, typically from builder,