docs: Update binary reproduction instructions and refer to older instructions

This commit is contained in:
Michael Eischer 2020-09-30 16:44:25 +02:00
parent abe9fa261f
commit a232c833dc
1 changed files with 15 additions and 12 deletions

View File

@ -5,8 +5,9 @@ Reproducible Builds
******************* *******************
This section describes how to reproduce the official released binaries for This section describes how to reproduce the official released binaries for
restic for version 0.9.3 and later. The binary produced depends on the restic for version 0.10.0 and later. For restic versions down to 0.9.3 please
following things: refer to the documentation for the respective version. The binary produced
depends on the following things:
* The source code for the release * The source code for the release
* The exact version of the official `Go compiler <https://golang.org>`__ used to produce the binaries (running ``restic version`` will print this) * The exact version of the official `Go compiler <https://golang.org>`__ used to produce the binaries (running ``restic version`` will print this)
@ -21,15 +22,17 @@ timestamp of the binary contained in it. In order to reproduce the exact same
ZIP file every time, we update the timestamp of the file ``VERSION`` in the ZIP file every time, we update the timestamp of the file ``VERSION`` in the
source code archive and set the timezone to Europe/Berlin. source code archive and set the timezone to Europe/Berlin.
In the following example, we'll use the file ``restic-0.9.3.tar.gz`` and Go In the following example, we'll use the file ``restic-0.10.0.tar.gz`` and Go
1.11.1 to reproduce the released binaries. 1.15.2 to reproduce the released binaries.
1. Download and extract the Go compiler into ``/usr/local/go``: 1. Determine the Go compiler version used to build the released binaries, then download and extract the Go compiler into ``/usr/local/go``:
.. code:: .. code::
$ restic version
restic 0.10.0 compiled with go1.15.2 on linux/amd64
$ cd /usr/local $ cd /usr/local
$ curl -L https://dl.google.com/go/go1.11.1.linux-amd64.tar.gz | tar xz $ curl -L https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz | tar xz
2. Extract the restic source code into ``/restic`` 2. Extract the restic source code into ``/restic``
@ -37,7 +40,7 @@ In the following example, we'll use the file ``restic-0.9.3.tar.gz`` and Go
$ mkdir /restic $ mkdir /restic
$ cd /restic $ cd /restic
$ TZ=Europe/Berlin curl -L https://github.com/restic/restic/releases/download/v0.9.3/restic-0.9.3.tar.gz | tar xz --strip-components=1 $ TZ=Europe/Berlin curl -L https://github.com/restic/restic/releases/download/v0.10.0/restic-0.10.0.tar.gz | tar xz --strip-components=1
3. Build the binaries for Windows and Linux: 3. Build the binaries for Windows and Linux:
@ -45,7 +48,7 @@ In the following example, we'll use the file ``restic-0.9.3.tar.gz`` and Go
$ export PATH=/usr/local/go/bin:$PATH $ export PATH=/usr/local/go/bin:$PATH
$ go version $ go version
go version go1.11.1 linux/amd64 go version go1.15.2 linux/amd64
$ GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-s -w" -tags selfupdate -o restic_linux_amd64 ./cmd/restic $ GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-s -w" -tags selfupdate -o restic_linux_amd64 ./cmd/restic
$ bzip2 restic_linux_amd64 $ bzip2 restic_linux_amd64
@ -80,7 +83,7 @@ The following steps are necessary to build the binaries:
.. code:: .. code::
tar xvzf restic-0.9.3.tar.gz tar xvzf restic-0.10.0.tar.gz
3. Create a directory to place the resulting binaries in: 3. Create a directory to place the resulting binaries in:
@ -93,7 +96,7 @@ The following steps are necessary to build the binaries:
.. code:: .. code::
docker run --rm \ docker run --rm \
--volume "$PWD/restic-0.9.3:/restic" \ --volume "$PWD/restic-0.10.0:/restic" \
--volume "$PWD/output:/output" \ --volume "$PWD/output:/output" \
restic/builder restic/builder
@ -102,7 +105,7 @@ The following steps are necessary to build the binaries:
.. code:: .. code::
docker run --rm \ docker run --rm \
--volume "$PWD/restic-0.9.3:/restic" \ --volume "$PWD/restic-0.10.0:/restic" \
--volume "$PWD/output:/output" \ --volume "$PWD/output:/output" \
restic/builder \ restic/builder \
go run helpers/build-release-binaries/main.go --verbose go run helpers/build-release-binaries/main.go --verbose
@ -118,6 +121,6 @@ required argument is the new version number (in `Semantic Versioning
.. code:: .. code::
go run helpers/prepare-release/main.go 0.9.3 go run helpers/prepare-release/main.go 0.10.0
Checks can be skipped on demand via flags, please see ``--help`` for details. Checks can be skipped on demand via flags, please see ``--help`` for details.