+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Bash (for some scripts)
+- gettext
+- gnutls >= 3.2.12 (highly recommended a gnutls
+ linked against libunbound)
+- A curl build against gnutls, or gnurl:
+ * libgnurl >= 7.35.0 (recommended, available from
+ https://gnunet.org/en/gnurl.html)
+ or
+ * libcurl >= 7.35.0 (alternative to libgnurl)
+- libgcrypt >= 1.6
+- libunistring >= 0.9.2
+- libidn:
+ * libidn2 (prefered)
+ or
+ * libidn >= 1.0
+- libmicrohttpd >= 0.9.52
+- makeinfo >= 4.8
+- make[*3]
+- nss (certutil binary, for
+ gnunet-gns-proxy-setup-ca)
+- openssl >= 1.0 (binary, used to generate
+ X.509 certificate
+ for gnunet-gns-proxy-setup-ca)
+- A Posix shell (for some scripts)
+- Texinfo >= 5.2 [*1]
+- libltdl >= 2.2 (part of GNU libtool)
+- 1 or more databases:
+ * sqlite >= 3.8 (default database, required)
+ and/or
+ * mysql >= 5.1 (alternative to sqlite)
+ and/or
+ * postgres >= 9.5 (alternative to sqlite)
+- which (contrib/apparmor(?), gnunet-bugreport,
+ and possibly more)
+- zlib
+
+These are the dependencies for GNUnet's testsuite:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Bash (for some tests[*4])
+- A Posix Shell (for some tests)
+- python >= 3.4 (3.4 and higher technically supported,
+ at least python 3.7 tested to work)
+- base tools
+ - mostly:
+ - bc,
+ - curl,
+ - sed,
+ - awk,
+ - which
+
+
+These are the optional dependencies:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- awk (for linting tests)
+- Bash (for Docker and Vagrant)
+- bluez (for bluetooth support)
+- grof (for linting of man pages)
+- guile 1.6.4 (or later up to 1.8?, for
+ gnunet-download-manager)
+
+- libextractor >= 0.6.1 (highly recommended[*5])
+- libjansson
+- libglpk >= 4.45 (for experimental code)
+- libopus >= 1.0.1 (for experimental conversation tool)
+- libpulse >= 2.0 (for experimental conversation tool)
+- libogg >= 1.3.0 (for experimental conversation tool)
+- libnss (certtool binary (for convenient
+ installation of GNS proxy))
+- libpbc >= 0.5.14 (for Attribute-Based Encryption and
+ Identity Provider functionality)
+- libgabe (for Attribute-Based Encryption and
+ Identity Provider functionality, from
+ https://github.com/schanzen/libgabe)
+- mandoc (for linting of man pages, generation of
+ html output of man pages)
+- miniupnpc
+- perl5 (for some utilities)
+- python2.7 = 2.7 (for gnunet-qr, only python 2.7
+ supported)
+- python-zbar >= 0.10 (for gnunet-qr, not optional)
+- TeX Live >= 2012 (for gnunet-bcd[*])
+- texi2mdoc (for automatic mdoc generation [*2])
+
+Recommended autotools for compiling the Git version are:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- autoconf >= 2.59
+- automake >= 1.11.1
+- libtool >= 2.2
+
+
+[*] Mandatory for compiling the info output of the documentation,
+ a limited subset ('texlive-tiny' in Guix) is enough.
+
+[*1] The default configuration is to build the info output of the
+ documentation, and therefore require texinfo. You can pass
+ '--disable-documentation' to the configure script to change this.
+
+[*2] If you still prefer to have documentation, you can pass
+ '--with-section7' to build mdoc documentation (experimental
+ stages in gnunet). If this proves to be reliable, we will
+ include the mdoc output in the release tarballs.
+ Contrary to the name, texi2mdoc does not require texinfo,
+ It is a standalone ISO C utility.
+
+[*3] GNU make introduced the != operator in version 4.0.
+ GNU make was released in october 2013, reasonable to
+ be widespread by now. If this is not working out for
+ you, open a bug so that we can get a more portable
+ fix in.
+
+[*4] We are commited to portable tools and solutions
+ where possible. New scripts should be Posix SH
+ compatible, current and older scripts are
+ in the process of being rewritten to comply
+ with this requirement.
+
+[*5] While libextractor is optional, it is recommended to
+ build gnunet against it. If you install it later,
+ you won't benefit from libextractor.
+ If you are a distributor, we recommend to split
+ LE into basis + plugins rather than making LE
+ an option as an afterthought by the user.
+ LE itself is very small, but its dependency chain
+ on first, second, third etc level can be big.
+ There is a small effect on privacy if your LE build
+ differs from one which includes all
+ plugins (plugins are build as shared objects):
+ if users publish a directory with a mixture of file
+ types (for example mpeg, jpeg, png, gif) the
+ configuration of LE could leak which plugins are
+ installed for which filetypes are not providing
+ more details.
+ However, this leak is just a minor concern.
+
+Requirements
+============
+
+GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB
+Diskspace, with GNUNet itself taking around 8 - 9.2 MiB reported by
+the build on GNU Guix.