aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Doxyfile14
-rw-r--r--doc/assets-attribution.md4
-rw-r--r--doc/build-osx.md4
-rw-r--r--doc/build-unix.md23
-rw-r--r--doc/coding.md57
-rw-r--r--doc/gitian-building.md424
-rw-r--r--doc/gitian-building/create_vm_file_location_size.pngbin0 -> 71743 bytes
-rw-r--r--doc/gitian-building/create_vm_hard_drive.pngbin0 -> 79798 bytes
-rw-r--r--doc/gitian-building/create_vm_hard_drive_file_type.pngbin0 -> 82281 bytes
-rw-r--r--doc/gitian-building/create_vm_memsize.pngbin0 -> 53772 bytes
-rw-r--r--doc/gitian-building/create_vm_page1.pngbin0 -> 131585 bytes
-rw-r--r--doc/gitian-building/create_vm_storage_physical_hard_drive.pngbin0 -> 90350 bytes
-rw-r--r--doc/gitian-building/debian_install_10_configure_clock.pngbin0 -> 7892 bytes
-rw-r--r--doc/gitian-building/debian_install_11_partition_disks.pngbin0 -> 9511 bytes
-rw-r--r--doc/gitian-building/debian_install_12_choose_disk.pngbin0 -> 6613 bytes
-rw-r--r--doc/gitian-building/debian_install_13_partition_scheme.pngbin0 -> 8082 bytes
-rw-r--r--doc/gitian-building/debian_install_14_finish.pngbin0 -> 10467 bytes
-rw-r--r--doc/gitian-building/debian_install_15_write_changes.pngbin0 -> 8790 bytes
-rw-r--r--doc/gitian-building/debian_install_16_choose_a_mirror.pngbin0 -> 11340 bytes
-rw-r--r--doc/gitian-building/debian_install_17_choose_a_mirror2.pngbin0 -> 9788 bytes
-rw-r--r--doc/gitian-building/debian_install_18_proxy_settings.pngbin0 -> 7582 bytes
-rw-r--r--doc/gitian-building/debian_install_19_software_selection.pngbin0 -> 8939 bytes
-rw-r--r--doc/gitian-building/debian_install_1_boot_menu.pngbin0 -> 76176 bytes
-rw-r--r--doc/gitian-building/debian_install_20_install_grub.pngbin0 -> 9784 bytes
-rw-r--r--doc/gitian-building/debian_install_21_finish_installation.pngbin0 -> 6964 bytes
-rw-r--r--doc/gitian-building/debian_install_2_select_a_language.pngbin0 -> 13118 bytes
-rw-r--r--doc/gitian-building/debian_install_3_select_location.pngbin0 -> 9613 bytes
-rw-r--r--doc/gitian-building/debian_install_4_configure_keyboard.pngbin0 -> 10220 bytes
-rw-r--r--doc/gitian-building/debian_install_5_configure_the_network.pngbin0 -> 6774 bytes
-rw-r--r--doc/gitian-building/debian_install_6_domain_name.pngbin0 -> 6526 bytes
-rw-r--r--doc/gitian-building/debian_install_6a_set_up_root_password.pngbin0 -> 11876 bytes
-rw-r--r--doc/gitian-building/debian_install_7_set_up_user_fullname.pngbin0 -> 7528 bytes
-rw-r--r--doc/gitian-building/debian_install_8_set_up_username.pngbin0 -> 6304 bytes
-rw-r--r--doc/gitian-building/debian_install_9_user_password.pngbin0 -> 6323 bytes
-rw-r--r--doc/gitian-building/network_settings.pngbin0 -> 59986 bytes
-rw-r--r--doc/gitian-building/port_forwarding_rules.pngbin0 -> 14044 bytes
-rw-r--r--doc/gitian-building/select_startup_disk.pngbin0 -> 86323 bytes
-rw-r--r--doc/release-process.md19
-rw-r--r--doc/translation_process.md2
39 files changed, 520 insertions, 27 deletions
diff --git a/doc/Doxyfile b/doc/Doxyfile
index 9bad2d0759..e0339e652e 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -34,7 +34,7 @@ PROJECT_NAME = Bitcoin
# This could be handy for archiving the generated documentation or
# if some version control system is used.
-PROJECT_NUMBER = 0.9.0
+PROJECT_NUMBER = 0.9.99
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer
@@ -683,7 +683,7 @@ RECURSIVE = YES
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
-EXCLUDE =
+EXCLUDE = src/leveldb src/json src/test /src/qt/test
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
@@ -705,7 +705,7 @@ EXCLUDE_PATTERNS =
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
-EXCLUDE_SYMBOLS =
+EXCLUDE_SYMBOLS = boost google
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
@@ -1577,7 +1577,7 @@ HIDE_UNDOC_RELATIONS = YES
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
# have no effect if this option is set to NO (the default)
-HAVE_DOT = NO
+HAVE_DOT = YES
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
# allowed to run in parallel. When set to 0 (the default) doxygen will
@@ -1659,7 +1659,7 @@ INCLUDED_BY_GRAPH = YES
# the time of a run. So in most cases it will be better to enable call graphs
# for selected functions only using the \callgraph command.
-CALL_GRAPH = NO
+CALL_GRAPH = YES
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
# doxygen will generate a caller dependency graph for every global function
@@ -1667,7 +1667,7 @@ CALL_GRAPH = NO
# the time of a run. So in most cases it will be better to enable caller
# graphs for selected functions only using the \callergraph command.
-CALLER_GRAPH = NO
+CALLER_GRAPH = YES
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will generate a graphical hierarchy of all classes instead of a textual one.
@@ -1685,7 +1685,7 @@ DIRECTORY_GRAPH = YES
# generated by dot. Possible values are svg, png, jpg, or gif.
# If left blank png will be used.
-DOT_IMAGE_FORMAT = png
+DOT_IMAGE_FORMAT = svg
# The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
diff --git a/doc/assets-attribution.md b/doc/assets-attribution.md
index d42be8fb24..61b457a282 100644
--- a/doc/assets-attribution.md
+++ b/doc/assets-attribution.md
@@ -78,13 +78,13 @@ Everaldo (Everaldo Coelho)
### Assets Used
scripts/img/reload.xcf (modified), src/qt/res/movies/*.png
-[Vignoni David](http://www.oxygen-icons.org)
+[Vignoni David](http://techbase.kde.org/Projects/Oxygen)
-----------------------
### Info
* Designer: Vignoni David
* License: Oxygen icon theme is dual licensed. You may copy it under the Creative Common Attribution-ShareAlike 3.0 License or the GNU Library General Public License.
-* Site: [http://www.oxygen-icons.org](http://www.oxygen-icons.org)
+* Site: [http://techbase.kde.org/Projects/Oxygen](http://techbase.kde.org/Projects/Oxygen)
### Assets Used
src/qt/res/icons/debugwindow.png
diff --git a/doc/build-osx.md b/doc/build-osx.md
index faa31cb023..0de5c792e9 100644
--- a/doc/build-osx.md
+++ b/doc/build-osx.md
@@ -86,7 +86,9 @@ If not, you can ensure that the Homebrew OpenSSL is correctly linked by running
brew link openssl --force
-Rerunning "openssl version" should now return the correct version.
+Rerunning "openssl version" should now return the correct version. If it
+doesn't, make sure `/usr/local/bin` comes before `/usr/bin` in your
+PATH.
### Building `bitcoind`
diff --git a/doc/build-unix.md b/doc/build-unix.md
index 341b17b543..d08c327ff9 100644
--- a/doc/build-unix.md
+++ b/doc/build-unix.md
@@ -42,15 +42,14 @@ Licenses of statically linked libraries:
Boost MIT-like license
miniupnpc New (3-clause) BSD license
-- Versions used in this release:
-- GCC 4.3.3
-- OpenSSL 1.0.1c
-- Berkeley DB 4.8.30.NC
-- Boost 1.55
-- miniupnpc 1.6
-- qt 4.8.3
-- protobuf 2.5.0
-- libqrencode 3.2.0
+- For the versions used in this release, see doc/release-process.md under *Fetch and build inputs*.
+
+System requirements
+--------------------
+
+C++ compilers are memory-hungry. It is recommended to have at least 1 GB of
+memory available when compiling Bitcoin Core. With 512MB of memory or less
+compilation will take much longer due to swap thrashing.
Dependency Build Instructions: Ubuntu & Debian
----------------------------------------------
@@ -108,15 +107,15 @@ To build without GUI pass `--without-gui`.
To build with Qt 4 you need the following:
- apt-get install libqt4-dev libprotobuf-dev protobuf-compiler
+ sudo apt-get install libqt4-dev libprotobuf-dev protobuf-compiler
For Qt 5 you need the following:
- apt-get install libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev
+ sudo apt-get install libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev
libqrencode (optional) can be installed with:
- apt-get install libqrencode-dev
+ sudo apt-get install libqrencode-dev
Once these are installed, they will be found by configure and a bitcoin-qt executable will be
built by default.
diff --git a/doc/coding.md b/doc/coding.md
index ab3a73494a..69388c9ce2 100644
--- a/doc/coding.md
+++ b/doc/coding.md
@@ -43,8 +43,61 @@ Common types:
set set or multiset
bn CBigNum
--------------------------
+Doxygen comments
+-----------------
+
+To facilitate the generation of documentation, use doxygen-compatible comment blocks for functions, methods and fields.
+
+For example, to describe a function use:
+```c++
+/**
+ * ... text ...
+ * @param[in] arg1 A description
+ * @param[in] arg2 Another argument description
+ * @pre Precondition for function...
+ */
+bool function(int arg1, const char *arg2)
+```
+A complete list of `@xxx` commands can be found at http://www.stack.nl/~dimitri/doxygen/manual/commands.html.
+As Doxygen recognizes the comments by the delimiters (`/**` and `*/` in this case), you don't
+*need* to provide any commands for a comment to be valid, just a description text is fine.
+
+To describe a class use the same construct above the class definition:
+```c++
+/**
+ * Alerts are for notifying old versions if they become too obsolete and
+ * need to upgrade. The message is displayed in the status bar.
+ * @see GetWarnings()
+ */
+class CAlert
+{
+```
+
+To describe a member or variable use:
+```c++
+int var; //!< Detailed description after the member
+```
+
+Also OK:
+```c++
+///
+/// ... text ...
+///
+bool function2(int arg1, const char *arg2)
+```
+
+Not OK (used plenty in the current source, but not picked up):
+```c++
+//
+// ... text ...
+//
+```
+
+A full list of comment syntaxes picked up by doxygen can be found at http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html,
+but if possible use one of the above styles.
+
Locking/mutex usage notes
+-------------------------
The code is multi-threaded, and uses mutexes and the
LOCK/TRY_LOCK macros to protect data structures.
@@ -60,8 +113,8 @@ between the various components is a goal, with any necessary locking
done by the components (e.g. see the self-contained CKeyStore class
and its cs_KeyStore lock for example).
--------
Threads
+-------
- ThreadScriptCheck : Verifies block scripts.
diff --git a/doc/gitian-building.md b/doc/gitian-building.md
new file mode 100644
index 0000000000..23059a0506
--- /dev/null
+++ b/doc/gitian-building.md
@@ -0,0 +1,424 @@
+Gitian building
+================
+
+*Setup instructions for a gitian build of Bitcoin using a Debian VM or physical system.*
+
+Gitian is the deterministic build process that is used to build the Bitcoin
+Core executables [1]. 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.
+
+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.
+
+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
+VM image to avoid 'contaminating' the build.
+
+[1] For all platforms except for MacOSX, at this point. Work for deterministic
+builds for Mac is under way here: https://github.com/theuni/osx-cross-depends .
+
+Table of Contents
+------------------
+
+- [Create a new VirtualBox VM](#create-a-new-virtualbox-vm)
+- [Connecting to the VM](#connecting-to-the-vm)
+- [Setting up Debian for gitian building](#setting-up-debian-for-gitian-building)
+- [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 an alternative repository](#building-an-alternative-repository)
+- [Signing externally](#signing-externally)
+- [Uploading signatures](#uploading-signatures)
+
+Create a new VirtualBox VM
+---------------------------
+
+The first step is to create a new Virtual Machine, which will be explained in
+this section. This VM will be used to do the Gitian builds. In this guide it
+will be explained how to set up the environment, and how to get the builds
+started.
+
+Debian Linux was chosen as the host distribution because it has a lightweight install (in
+contrast to Ubuntu) and is readily available. We here show the steps for
+VirtualBox [1], but any kind of virtualization can be used. You can also install
+on actual hardware instead of using a VM, in this case you can skip this section.
+
+In the VirtualBox GUI click "Create" and choose the following parameters in the wizard:
+
+![](gitian-building/create_vm_page1.png)
+
+- Type: Linux, Debian (64 bit)
+
+![](gitian-building/create_vm_memsize.png)
+
+- Memory Size: at least 1024MB, anything lower will really slow the build down
+
+![](gitian-building/create_vm_hard_drive.png)
+
+- Hard Drive: Create a virtual hard drive now
+
+![](gitian-building/create_vm_hard_drive_file_type.png)
+
+- Hard Drive file type: Use the default, VDI (VirtualBox Disk Image)
+
+![](gitian-building/create_vm_storage_physical_hard_drive.png)
+
+- Storage on Physical hard drive: Dynamically Allocated
+
+![](gitian-building/create_vm_file_location_size.png)
+
+- Disk size: at least 40GB; as low as 20GB *may* be possible, but better to err on the safe side
+- Push the `Create` button
+
+Get the [Debian 7.4 net installer](http://cdimage.debian.org/debian-cd/7.4.0/amd64/iso-cd/debian-7.4.0-amd64-netinst.iso).
+This DVD image can be validated using a SHA256 hashing tool, for example on
+Unixy OSes by entering the following in a terminal:
+
+ echo "b712a141bc60269db217d3b3e456179bd6b181645f90e4aac9c42ed63de492e9 /home/orion/Downloads/debian-7.4.0-amd64-netinst.iso" | sha256sum -c
+ # (must return OK)
+
+After creating the VM, we need to configure it.
+
+- Click the `Settings` button, then go to the `Network` tab. Adapter 1 should be attacked to `NAT`.
+
+![](gitian-building/network_settings.png)
+
+- Click `Advanced`, then `Port Forwarding`. We want to set up a port through where we can reach the VM to get files in and out.
+- Create a new rule by clicking the plus icon.
+
+![](gitian-building/port_forwarding_rules.png)
+
+- Set up the new rule the following way:
+ - Name: `SSH`
+ - Protocol: `TCP`
+ - Leave Host IP empty
+ - Host Port: `22222`
+ - Leave Guest IP empty
+ - Guest Port: `22`
+
+- Click `Ok` twice to save.
+
+Then start the VM. On the first launch you will be asked for a CD or DVD image. Choose the downloaded iso.
+
+![](gitian-building/select_startup_disk.png)
+
+[1] https://www.virtualbox.org/
+
+Installing Debian
+------------------
+
+In this section it will be explained how to install Debian on the newly created VM.
+
+- Choose the non-graphical installer. We do not need the graphical environment, it will only increase installation time and disk usage.
+
+![](gitian-building/debian_install_1_boot_menu.png)
+
+**Note**: Navigation in the Debian installer: To keep a setting at the default
+and proceed, just press `Enter`. To select a different button, press `Tab`.
+
+- Choose locale and keyboard settings (doesn't matter, you can just go with the defaults or select your own information)
+
+![](gitian-building/debian_install_2_select_a_language.png)
+![](gitian-building/debian_install_3_select_location.png)
+![](gitian-building/debian_install_4_configure_keyboard.png)
+
+- The VM will detect network settings using DHCP, this should all proceed automatically
+- Configure the network:
+ - System name `debian`.
+ - Leave domain name empty.
+
+![](gitian-building/debian_install_5_configure_the_network.png)
+
+- Choose a root password and enter it twice (and remember it for later)
+
+![](gitian-building/debian_install_6a_set_up_root_password.png)
+
+- Name the new user `debian` (the full name doesn't matter, you can leave it empty)
+
+![](gitian-building/debian_install_7_set_up_user_fullname.png)
+![](gitian-building/debian_install_8_set_up_username.png)
+
+- Choose a user password and enter it twice (and remember it for later)
+
+![](gitian-building/debian_install_9_user_password.png)
+
+- The installer will set up the clock using a time server, this process should be automatic
+- Set up the clock: choose a time zone (depends on the locale settings that you picked earlier; specifics don't matter)
+
+![](gitian-building/debian_install_10_configure_clock.png)
+
+- Disk setup
+ - Partitioning method: Guided - Use the entire disk
+
+![](gitian-building/debian_install_11_partition_disks.png)
+
+ - Select disk to partition: SCSI1 (0,0,0)
+
+![](gitian-building/debian_install_12_choose_disk.png)
+
+ - Partitioning scheme: All files in one partition
+
+![](gitian-building/debian_install_13_partition_scheme.png)
+
+ - Finish partitioning and write changes to disk -> *Yes* (`Tab`, `Enter` to select the `Yes` button)
+
+![](gitian-building/debian_install_14_finish.png)
+![](gitian-building/debian_install_15_write_changes.png)
+
+- The base system will be installed, this will take a minute or so
+- Choose a mirror (any will do)
+
+![](gitian-building/debian_install_16_choose_a_mirror.png)
+
+- Enter proxy information (unless you are on an intranet, you can leave this empty)
+
+![](gitian-building/debian_install_18_proxy_settings.png)
+
+- Wait a bit while 'Select and install software' runs
+- Participate in popularity contest -> *No*
+- Choose software to install. We need just the base system.
+
+![](gitian-building/debian_install_19_software_selection.png)
+
+- Make sure only 'SSH server' and 'Standard System Utilities' are checked
+- Uncheck 'Debian Desktop Environment' and 'Print Server'
+
+![](gitian-building/debian_install_20_install_grub.png)
+
+- Install the GRUB boot loader to the master boot record? -> Yes
+
+![](gitian-building/debian_install_21_finish_installation.png)
+
+- Installation Complete -> *Continue*
+- After installation, the VM will reboot and you will have a working Debian VM. Congratulations!
+
+Connecting to the VM
+----------------------
+
+After the VM has booted you can connect to it using SSH, and files can be copied from and to the VM using a SFTP utility.
+Connect to `localhost`, port `22222` (or the port configured when installing the VM).
+On Windows you can use putty[1] and WinSCP[2].
+
+For example to connect as `root` from a Linux command prompt use
+
+ $ ssh root@localhost -p 22222
+ The authenticity of host '[localhost]:22222 ([127.0.0.1]:22222)' can't be established.
+ ECDSA key fingerprint is 8e:71:f9:5b:62:46:de:44:01:da:fb:5f:34:b5:f2:18.
+ Are you sure you want to continue connecting (yes/no)? yes
+ Warning: Permanently added '[localhost]:22222' (ECDSA) to the list of known hosts.
+ root@localhost's password: (enter root password configured during install)
+ Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64
+ root@debian:~#
+
+Replace `root` with `debian` to log in as user.
+
+[1] http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
+[2] http://winscp.net/eng/index.php
+
+Setting up Debian for gitian building
+--------------------------------------
+
+In this section we will be setting up the Debian installation for Gitian building.
+
+First we need to log in as `root` to set up dependencies and make sure that our
+user can use the sudo command. Type/paste the following in the terminal:
+
+
+```bash
+apt-get install git ruby sudo apt-cacher-ng qemu-utils debootstrap lxc python-cheetah parted kpartx bridge-utils
+adduser debian sudo
+```
+
+When you get a colorful screen with a question about the 'LXC directory', just
+go with the default (`/var/lib/lxc`).
+
+Then set up LXC and the rest with the following is a complex jumble of settings and workarounds:
+
+```bash
+# the version of lxc-start in Debian 7.4 needs to run as root, so make sure
+# that the build script can exectute it without providing a password
+echo "%sudo ALL=NOPASSWD: /usr/bin/lxc-start" > /etc/sudoers.d/gitian-lxc
+# add cgroup for LXC
+echo "cgroup /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab
+# make /etc/rc.local script that sets up bridge between guest and host
+echo '#!/bin/sh -e' > /etc/rc.local
+echo 'brctl addbr br0' >> /etc/rc.local
+echo 'ifconfig br0 10.0.3.2/24 up' >> /etc/rc.local
+echo 'exit 0' >> /etc/rc.local
+# make sure that USE_LXC is always set when logging in as debian
+echo 'export USE_LXC=1' >> /home/debian/.profile
+reboot
+```
+
+At the end the VM is rebooted to make sure that the changes take effect.
+
+**Note**: If you're following this guide on a physical system instead of a VirtualBox VM you could use `10.0.2.2` instead
+of `10.0.3.2` in the above `ifconfig` line. This avoids having to patch gitian-builder in next section.
+
+Installing gitian
+------------------
+
+Re-login as the user `debian` that was created during installation.
+The rest of the steps in this guide will be performed as that user.
+
+There is no `python-vm-builder` package in Debian, so we need to install it from source ourselves,
+
+```bash
+wget http://archive.ubuntu.com/ubuntu/pool/universe/v/vm-builder/vm-builder_0.12.4+bzr489.orig.tar.gz
+echo "ec12e0070a007989561bfee5862c89a32c301992dd2771c4d5078ef1b3014f03 vm-builder_0.12.4+bzr489.orig.tar.gz" | sha256sum -c
+# (verification -- must return OK)
+tar -zxvf vm-builder_0.12.4+bzr489.orig.tar.gz
+cd vm-builder-0.12.4+bzr489
+sudo python setup.py install
+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,
+
+```bash
+git clone https://github.com/devrandom/gitian-builder.git
+git clone https://github.com/bitcoin/bitcoin
+```
+
+We need to change the guest IP range for the gitian builder because otherwise it will
+collide with VirtualBox its NAT IP range. Gitian does not have a way yet to configure
+this, so we need to patch the IPs using `sed`. This is not nice but it will
+have to do for now... (a [pull request
+(#52)](https://github.com/devrandom/gitian-builder/pull/52) to make this
+configurable without patching has been submitted):
+
+```bash
+sed -i 's/10.0.2.2/10.0.3.2/g' gitian-builder/target-bin/bootstrap-fixup
+sed -i 's/10.0.2.5/10.0.3.5/g' gitian-builder/etc/lxc.config.in
+```
+
+*note* After you update the gitian-builder repository, you may need to repeat these manual changes.
+
+Setting up gitian images
+-------------------------
+
+Gitian needs virtual images of the operating system to build in.
+Currently this is Ubuntu Precise for both x86 architectures.
+These images will be copied and used every time that a build is started to
+make sure that the build is deterministic.
+Creating the images will take a while, but only has to be done once.
+
+Execute the following as user `debian`:
+
+```bash
+cd gitian-builder
+bin/make-base-vm --lxc --arch i386 --suite precise
+bin/make-base-vm --lxc --arch amd64 --suite precise
+```
+
+There will be a lot of warnings printed during build of the images. These can be ignored.
+
+**Note**: When sudo asks for a password, enter the password for the user *debian* not for *root*.
+
+Getting and building the inputs
+--------------------------------
+
+In [doc/release-process.md](release-process.md) in the bitcoin repository under 'Fetch and build inputs'.
+you will find a list of `wget` commands that can be executed to get the dependencies.
+
+I needed to add `--no-check-certificate` to the OpenSSL wget line to make it work.
+Likely this is because the ca-certificates in Debian 7.4 is fairly old. This does not create a
+security issue as the gitian descriptors check integrity of the input archives and refuse to work
+if any one is corrupted.
+
+After downloading the archives, execute the `gbuild` commends to build the dependencies.
+This can take a long time, but only has to be done when the dependencies change, for example
+to upgrade the used version.
+
+**Note**: Do not forget to copy the result from `build/out` to `inputs` after every gbuild command! This will save
+you a lot of time.
+
+At any time you can check the package installation and build progress with
+
+```bash
+tail -f var/install.log
+tail -f var/build.log
+```
+
+Building Bitcoin
+----------------
+
+To build Bitcoin (for Linux and/or Windows) just follow the steps under 'perform
+gitian builds' in [doc/release-process.md](release-process.md) in the bitcoin repository.
+
+Output from `gbuild` will look something like
+
+ Initialized empty Git repository in /home/debian/gitian-builder/inputs/bitcoin/.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
+ ... (new tags, new branch etc)
+ --- Building for precise i386 ---
+ Stopping target if it is up
+ Making a new image copy
+ stdin: is not a tty
+ Starting target
+ Checking if target is up
+ Preparing build environment
+ Updating apt-get repository (log in var/install.log)
+ Installing additional packages (log in var/install.log)
+ Grabbing package manifest
+ stdin: is not a tty
+ Creating build script (var/build-script)
+ lxc-start: Connection refused - inotify event with no name (mask 32768)
+ Running build script (log in var/build.log)
+
+As when building the dependencies, the progress of package installation and building
+can be inspected in `var/install.log` and `var/build.log`.
+
+Building an alternative repository
+-----------------------------------
+
+If you want to do a test build of a pull on github it can be useful to point
+the gitian builder at an alternative repository, using the same descriptors
+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
+```
+
+Signing externally
+-------------------
+
+If you want to do the PGP signing on another device that's possible too; just define `SIGNER` as mentioned
+and follow the steps in the build process as normally.
+
+ gpg: skipped "laanwj": 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}/${SIGNER}/bitcoin-build.assert
+ gpg --detach-sign ${VERSION}-win/${SIGNER}/bitcoin-build.assert
+```
+
+This will create the `.sig` files that can be committed together with the `.assert` files to assert your
+gitian build.
+
+Uploading signatures
+---------------------
+
+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 not possible create a pull request. You can also mail the files to me
+(laanwj@gmail.com) and I'll commit them.
+
diff --git a/doc/gitian-building/create_vm_file_location_size.png b/doc/gitian-building/create_vm_file_location_size.png
new file mode 100644
index 0000000000..14aef5abae
--- /dev/null
+++ b/doc/gitian-building/create_vm_file_location_size.png
Binary files differ
diff --git a/doc/gitian-building/create_vm_hard_drive.png b/doc/gitian-building/create_vm_hard_drive.png
new file mode 100644
index 0000000000..a1706e14fd
--- /dev/null
+++ b/doc/gitian-building/create_vm_hard_drive.png
Binary files differ
diff --git a/doc/gitian-building/create_vm_hard_drive_file_type.png b/doc/gitian-building/create_vm_hard_drive_file_type.png
new file mode 100644
index 0000000000..251b8ee3e2
--- /dev/null
+++ b/doc/gitian-building/create_vm_hard_drive_file_type.png
Binary files differ
diff --git a/doc/gitian-building/create_vm_memsize.png b/doc/gitian-building/create_vm_memsize.png
new file mode 100644
index 0000000000..33717867a5
--- /dev/null
+++ b/doc/gitian-building/create_vm_memsize.png
Binary files differ
diff --git a/doc/gitian-building/create_vm_page1.png b/doc/gitian-building/create_vm_page1.png
new file mode 100644
index 0000000000..edaebc6223
--- /dev/null
+++ b/doc/gitian-building/create_vm_page1.png
Binary files differ
diff --git a/doc/gitian-building/create_vm_storage_physical_hard_drive.png b/doc/gitian-building/create_vm_storage_physical_hard_drive.png
new file mode 100644
index 0000000000..987efaa40c
--- /dev/null
+++ b/doc/gitian-building/create_vm_storage_physical_hard_drive.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_10_configure_clock.png b/doc/gitian-building/debian_install_10_configure_clock.png
new file mode 100644
index 0000000000..467c79018e
--- /dev/null
+++ b/doc/gitian-building/debian_install_10_configure_clock.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_11_partition_disks.png b/doc/gitian-building/debian_install_11_partition_disks.png
new file mode 100644
index 0000000000..18110734df
--- /dev/null
+++ b/doc/gitian-building/debian_install_11_partition_disks.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_12_choose_disk.png b/doc/gitian-building/debian_install_12_choose_disk.png
new file mode 100644
index 0000000000..a00d4abf17
--- /dev/null
+++ b/doc/gitian-building/debian_install_12_choose_disk.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_13_partition_scheme.png b/doc/gitian-building/debian_install_13_partition_scheme.png
new file mode 100644
index 0000000000..2f80f19b63
--- /dev/null
+++ b/doc/gitian-building/debian_install_13_partition_scheme.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_14_finish.png b/doc/gitian-building/debian_install_14_finish.png
new file mode 100644
index 0000000000..411d457e95
--- /dev/null
+++ b/doc/gitian-building/debian_install_14_finish.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_15_write_changes.png b/doc/gitian-building/debian_install_15_write_changes.png
new file mode 100644
index 0000000000..f26093982c
--- /dev/null
+++ b/doc/gitian-building/debian_install_15_write_changes.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_16_choose_a_mirror.png b/doc/gitian-building/debian_install_16_choose_a_mirror.png
new file mode 100644
index 0000000000..d2c2e9523b
--- /dev/null
+++ b/doc/gitian-building/debian_install_16_choose_a_mirror.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_17_choose_a_mirror2.png b/doc/gitian-building/debian_install_17_choose_a_mirror2.png
new file mode 100644
index 0000000000..cef2db0781
--- /dev/null
+++ b/doc/gitian-building/debian_install_17_choose_a_mirror2.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_18_proxy_settings.png b/doc/gitian-building/debian_install_18_proxy_settings.png
new file mode 100644
index 0000000000..24ba25c109
--- /dev/null
+++ b/doc/gitian-building/debian_install_18_proxy_settings.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_19_software_selection.png b/doc/gitian-building/debian_install_19_software_selection.png
new file mode 100644
index 0000000000..d462757aff
--- /dev/null
+++ b/doc/gitian-building/debian_install_19_software_selection.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_1_boot_menu.png b/doc/gitian-building/debian_install_1_boot_menu.png
new file mode 100644
index 0000000000..27fd849b4f
--- /dev/null
+++ b/doc/gitian-building/debian_install_1_boot_menu.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_20_install_grub.png b/doc/gitian-building/debian_install_20_install_grub.png
new file mode 100644
index 0000000000..de4f9be0c9
--- /dev/null
+++ b/doc/gitian-building/debian_install_20_install_grub.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_21_finish_installation.png b/doc/gitian-building/debian_install_21_finish_installation.png
new file mode 100644
index 0000000000..b967c3550d
--- /dev/null
+++ b/doc/gitian-building/debian_install_21_finish_installation.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_2_select_a_language.png b/doc/gitian-building/debian_install_2_select_a_language.png
new file mode 100644
index 0000000000..1c9e0bcfc1
--- /dev/null
+++ b/doc/gitian-building/debian_install_2_select_a_language.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_3_select_location.png b/doc/gitian-building/debian_install_3_select_location.png
new file mode 100644
index 0000000000..005c395656
--- /dev/null
+++ b/doc/gitian-building/debian_install_3_select_location.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_4_configure_keyboard.png b/doc/gitian-building/debian_install_4_configure_keyboard.png
new file mode 100644
index 0000000000..580c8af7c5
--- /dev/null
+++ b/doc/gitian-building/debian_install_4_configure_keyboard.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_5_configure_the_network.png b/doc/gitian-building/debian_install_5_configure_the_network.png
new file mode 100644
index 0000000000..a7fdffc66b
--- /dev/null
+++ b/doc/gitian-building/debian_install_5_configure_the_network.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_6_domain_name.png b/doc/gitian-building/debian_install_6_domain_name.png
new file mode 100644
index 0000000000..7a986d92f4
--- /dev/null
+++ b/doc/gitian-building/debian_install_6_domain_name.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_6a_set_up_root_password.png b/doc/gitian-building/debian_install_6a_set_up_root_password.png
new file mode 100644
index 0000000000..31bd210f38
--- /dev/null
+++ b/doc/gitian-building/debian_install_6a_set_up_root_password.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_7_set_up_user_fullname.png b/doc/gitian-building/debian_install_7_set_up_user_fullname.png
new file mode 100644
index 0000000000..bffc6ccd7a
--- /dev/null
+++ b/doc/gitian-building/debian_install_7_set_up_user_fullname.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_8_set_up_username.png b/doc/gitian-building/debian_install_8_set_up_username.png
new file mode 100644
index 0000000000..9e2750ad4e
--- /dev/null
+++ b/doc/gitian-building/debian_install_8_set_up_username.png
Binary files differ
diff --git a/doc/gitian-building/debian_install_9_user_password.png b/doc/gitian-building/debian_install_9_user_password.png
new file mode 100644
index 0000000000..a26d30cba5
--- /dev/null
+++ b/doc/gitian-building/debian_install_9_user_password.png
Binary files differ
diff --git a/doc/gitian-building/network_settings.png b/doc/gitian-building/network_settings.png
new file mode 100644
index 0000000000..1d9b6428a7
--- /dev/null
+++ b/doc/gitian-building/network_settings.png
Binary files differ
diff --git a/doc/gitian-building/port_forwarding_rules.png b/doc/gitian-building/port_forwarding_rules.png
new file mode 100644
index 0000000000..e45c9efffc
--- /dev/null
+++ b/doc/gitian-building/port_forwarding_rules.png
Binary files differ
diff --git a/doc/gitian-building/select_startup_disk.png b/doc/gitian-building/select_startup_disk.png
new file mode 100644
index 0000000000..729b368fd1
--- /dev/null
+++ b/doc/gitian-building/select_startup_disk.png
Binary files differ
diff --git a/doc/release-process.md b/doc/release-process.md
index 095d20f9ea..bf289805ca 100644
--- a/doc/release-process.md
+++ b/doc/release-process.md
@@ -39,8 +39,8 @@ Release Process
Fetch and build inputs: (first time, or when dependency versions change)
mkdir -p inputs; cd inputs/
- wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.8.tar.gz' -O miniupnpc-1.8.tar.gz
- wget 'https://www.openssl.org/source/openssl-1.0.1e.tar.gz'
+ wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.tar.gz' -O miniupnpc-1.9.tar.gz
+ wget 'https://www.openssl.org/source/openssl-1.0.1g.tar.gz'
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
wget 'http://zlib.net/zlib-1.2.8.tar.gz'
wget 'ftp://ftp.simplesystems.org/pub/png/src/history/libpng16/libpng-1.6.8.tar.gz'
@@ -64,6 +64,21 @@ Release Process
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/protobuf-win.yml
mv build/out/protobuf-*.zip inputs/
+ The expected SHA256 hashes of the intermediate inputs are:
+
+ 35c3dfd8b9362f59e81b51881b295232e3bc9e286f1add193b59d486d9ac4a5c bitcoin-deps-linux32-gitian-r5.zip
+ 571789867d172500fa96d63d0ba8c5b1e1a3d6f44f720eddf2f93665affc88b3 bitcoin-deps-linux64-gitian-r5.zip
+ f29b7d9577417333fb56e023c2977f5726a7c297f320b175a4108cf7cd4c2d29 boost-linux32-1.55.0-gitian-r1.zip
+ 88232451c4104f7eb16e469ac6474fd1231bd485687253f7b2bdf46c0781d535 boost-linux64-1.55.0-gitian-r1.zip
+ 60dc2d3b61e9c7d5dbe2f90d5955772ad748a47918ff2d8b74e8db9b1b91c909 boost-win32-1.55.0-gitian-r6.zip
+ f65fcaf346bc7b73bc8db3a8614f4f6bee2f61fcbe495e9881133a7c2612a167 boost-win64-1.55.0-gitian-r6.zip
+ 97e62002d338885336bb24e7cbb9471491294bd8857af7a83d18c0961f864ec0 bitcoin-deps-win32-gitian-r11.zip
+ ee3ea2d5aac1a67ea6bfbea2c04068a7c0940616ce48ee4f37c264bb9d4438ef bitcoin-deps-win64-gitian-r11.zip
+ 963e3e5e85879010a91143c90a711a5d1d5aba992e38672cdf7b54e42c56b2f1 qt-win32-5.2.0-gitian-r3.zip
+ 751c579830d173ef3e6f194e83d18b92ebef6df03289db13ab77a52b6bc86ef0 qt-win64-5.2.0-gitian-r3.zip
+ e2e403e1a08869c7eed4d4293bce13d51ec6a63592918b90ae215a0eceb44cb4 protobuf-win32-2.5.0-gitian-r4.zip
+ a0999037e8b0ef9ade13efd88fee261ba401f5ca910068b7e0cd3262ba667db0 protobuf-win64-2.5.0-gitian-r4.zip
+
Build bitcoind and bitcoin-qt on Linux32, Linux64, and Win32:
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
diff --git a/doc/translation_process.md b/doc/translation_process.md
index 9fb7622868..4b7b19f82f 100644
--- a/doc/translation_process.md
+++ b/doc/translation_process.md
@@ -70,7 +70,7 @@ We are using https://transifex.com as a frontend for translating the client.
https://www.transifex.com/projects/p/bitcoin/resource/tx/
-The "Transifex client" (see: http://help.transifex.com/features/client/)
+The "Transifex client" (see: http://support.transifex.com/customer/portal/topics/440187-transifex-client/articles)
will help with fetching new translations from Transifex. Use the following
config to be able to connect with the client: