diff --git a/doc/gitian-building.md b/doc/gitian-building.md index defddedc6..063162a19 100644 --- a/doc/gitian-building.md +++ b/doc/gitian-building.md @@ -1,9 +1,9 @@ Gitian building ================ -*Setup instructions for a gitian build of Bitcoin using a Debian VM or physical system.* +*Setup instructions for a gitian build of Dash using a Debian VM or physical system.* -Gitian is the deterministic build process that is used to build the Bitcoin +Gitian is the deterministic build process that is used to build the Dash Core executables. It provides a way to be reasonably sure that the executables are really built from source on GitHub. It also makes sure that the same, tested dependencies are used and statically built into the executable. @@ -11,7 +11,7 @@ the same, tested dependencies are used and statically built into the executable. Multiple developers build the source code by following a specific descriptor ("recipe"), cryptographically sign the result, and upload the resulting signature. These results are compared and only if they match, the build is accepted and uploaded -to bitcoin.org. +to dashpay.io. More independent gitian builders are needed, which is why I wrote this guide. It is preferred to follow these steps yourself instead of using someone else's @@ -26,7 +26,7 @@ Table of Contents - [Installing gitian](#installing-gitian) - [Setting up gitian images](#setting-up-gitian-images) - [Getting and building the inputs](#getting-and-building-the-inputs) -- [Building Bitcoin](#building-bitcoin) +- [Building Dash](#building-dash) - [Building an alternative repository](#building-an-alternative-repository) - [Signing externally](#signing-externally) - [Uploading signatures](#uploading-signatures) @@ -277,12 +277,12 @@ cd .. **Note**: When sudo asks for a password, enter the password for the user *debian* not for *root*. -Clone the git repositories for bitcoin and gitian and then checkout the bitcoin version that you want to build. +Clone the git repositories for dash and gitian and then checkout the dash version that you want to build. ```bash git clone https://github.com/devrandom/gitian-builder.git -git clone https://github.com/bitcoin/bitcoin -cd bitcoin +git clone https://github.com/dashpay/dash.git +cd dash git checkout v${VERSION} cd .. ``` @@ -307,19 +307,27 @@ There will be a lot of warnings printed during build of the images. These can be **Note**: When sudo asks for a password, enter the password for the user *debian* not for *root*. +**Note**: Repeat this step when you have upgraded to a newer version of Gitian. + +**Note**: if you get the error message *"bin/make-base-vm: mkfs.ext4: not found"* during this process you have to make the following change in file *"gitian-builder/bin/make-base-vm"* at line 117: +```bash +# mkfs.ext4 -F $OUT-lxc +/sbin/mkfs.ext4 -F $OUT-lxc # (some Gitian environents do NOT find mkfs.ext4. Some do...) +``` + Getting and building the inputs -------------------------------- -Follow the instructions in [doc/release-process.md](release-process.md) in the bitcoin repository +Follow the instructions in [doc/release-process.md](release-process.md) in the dash repository under 'Fetch and build inputs' to install sources which require manual intervention. Also follow the next step: 'Seed the Gitian sources cache', which will fetch all necessary source files allowing for gitian to work offline. -Building Bitcoin +Building Dash ---------------- -To build Bitcoin (for Linux, OSX and Windows) just follow the steps under 'perform -gitian builds' in [doc/release-process.md](release-process.md) in the bitcoin repository. +To build Dash (for Linux, OSX and Windows) just follow the steps under 'perform +gitian builds' in [doc/release-process.md](release-process.md) in the dash repository. This may take a long time as it also builds the dependencies needed for each descriptor. These dependencies will be cached after a successful build to avoid rebuilding them when possible. @@ -332,12 +340,12 @@ tail -f var/build.log Output from `gbuild` will look something like - Initialized empty Git repository in /home/debian/gitian-builder/inputs/bitcoin/.git/ + Initialized empty Git repository in /home/debian/gitian-builder/inputs/dash/.git/ remote: Reusing existing pack: 35606, done. remote: Total 35606 (delta 0), reused 0 (delta 0) Receiving objects: 100% (35606/35606), 26.52 MiB | 4.28 MiB/s, done. Resolving deltas: 100% (25724/25724), done. - From https://github.com/bitcoin/bitcoin + From https://github.com/dashpay/dash ... (new tags, new branch etc) --- Building for precise x86_64 --- Stopping target if it is up @@ -363,11 +371,11 @@ and inputs. For example: ```bash -URL=https://github.com/laanwj/bitcoin.git -COMMIT=2014_03_windows_unicode_path -./bin/gbuild --commit bitcoin=${COMMIT} --url bitcoin=${URL} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml -./bin/gbuild --commit bitcoin=${COMMIT} --url bitcoin=${URL} ../bitcoin/contrib/gitian-descriptors/gitian-win.yml -./bin/gbuild --commit bitcoin=${COMMIT} --url bitcoin=${URL} ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml +URL=https://github.com/crowning-/dash.git +COMMIT=b616fb8ef0d49a919b72b0388b091aaec5849b96 +./bin/gbuild --commit dash=${COMMIT} --url dash=${URL} ../dash/contrib/gitian-descriptors/gitian-linux.yml +./bin/gbuild --commit dash=${COMMIT} --url dash=${URL} ../dash/contrib/gitian-descriptors/gitian-win.yml +./bin/gbuild --commit dash=${COMMIT} --url dash=${URL} ../dash/contrib/gitian-descriptors/gitian-osx.yml ``` Signing externally @@ -376,23 +384,24 @@ Signing externally If you want to do the PGP signing on another device that's also possible; just define `SIGNER` as mentioned and follow the steps in the build process as normal. - gpg: skipped "laanwj": secret key not available + gpg: skipped "crowning-": secret key not available When you execute `gsign` you will get an error from GPG, which can be ignored. Copy the resulting `.assert` files in `gitian.sigs` to your signing machine and do ```bash - gpg --detach-sign ${VERSION}-linux/${SIGNER}/bitcoin-build.assert - gpg --detach-sign ${VERSION}-win/${SIGNER}/bitcoin-build.assert - gpg --detach-sign ${VERSION}-osx/${SIGNER}/bitcoin-build.assert + gpg --detach-sign ${VERSION}-linux/${SIGNER}/dash-build.assert + gpg --detach-sign ${VERSION}-win/${SIGNER}/dash-build.assert + gpg --detach-sign ${VERSION}-osx/${SIGNER}/dash-build.assert ``` This will create the `.sig` files that can be committed together with the `.assert` files to assert your gitian build. -Uploading signatures +Uploading signatures (not yet implemented) --------------------- -After building and signing you can push your signatures (both the `.assert` and `.assert.sig` files) to the -[bitcoin/gitian.sigs](https://github.com/bitcoin/gitian.sigs/) repository, or if that's not possible create a pull -request. You can also mail the files to me (laanwj@gmail.com) and I'll commit them. +In the future it will be possible to push your signatures (both the `.assert` and `.assert.sig` files) to the +[dash/gitian.sigs](https://github.com/dashpay/gitian.sigs/) repository, or if that's not possible to create a pull +request. +There will be an official announcement when this repository is online.