1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
|
building and installation process for monotone
==============================================
1. prerequisites:
* hardware prerequisites:
- g++ consumes a lot of memory building monotone, due to
monotone's liberal use of C++ features. it may be possible to
build on a system with 128mb of memory, but not pleasant.
* software prerequisites:
- autoconf
- automake
- gettext
- a supported C++ compiler: g++ 3.2 or later
- boost 1.33.0 or later: either an installed copy or an extracted
tarball of its unbuilt sources somewhere in the file system are
supported
- zlib 1.1.4 or later
- libiconv if the iconv() function is missing
- texinfo (to build the documentation)
- Botan 1.6.3 or later (Botan might require bzip2, OpenSSL and / or
GnuMP in addition, depending on the package you're using.)
- PCRE 7.4 or later
- SQLite 3.3.8 or later
- Lua 5.1
- GNU IDN Library
on Debian and Ubuntu:
install the following packages:
autoconf automake gettext g++ libboost-dev libz-dev
libbotan1.7-dev libsqlite3-dev libpcre3-dev liblua5.1-0-dev
libidn11-dev libgmp3-dev libbz2-dev texinfo
(monotone works with older and newer Botan versions as well,
so libbotan1.6-dev or libbotan1.8-dev are also good to go.)
on FreeBSD:
install the following packages from the ports collection:
databases/sqlite3 devel/automake1.9 devel/boost devel/gettext
devel/gmake devel/pcre lang/lua security/botan dns/libidn
on Gentoo:
emerge the following packages:
autoconf automake boost botan gettext libpcre libidn lua sqlite
zlib
on Fedora:
install the following packages:
autoconf automake gettext boost boost-devel zlib zlib-devel
lua lua-devel pcre pcre-devel sqlite sqlite-devel libidn
libidn-devel gcc-c++ texinfo texinfo-tex botan botan-devel
on openSUSE:
install the following extra packages with YaST or zypper:
autoconf automake gettext-tools gcc-c++ boost-devel zlib-devel
libbotan-devel sqlite3-dev pcre-devel lua-devel libidn-devel
libbz2-devel texinfo make
on Mac OS X:
use MacPorts (http://www.macports.org) to install the following
packages:
autoconf automake gettext boost zlib lua pcre botan
sqlite3 libidn libiconv texinfo
monotone only uses header-only libraries from boost, so if you don't
like to spend a lot of time building boost via MacPorts, you can also
download and extract it manually and let CXXFLAGS point to the
include/ directory of the extracted version.
on Windows (using MinGW): see INSTALL_windows_native
on Windows (using Cygwin): see INSTALL_windows_cygwin
on other systems:
check your system package repository, you may need to
build some of these from source. if your package repository
does not contain the libraries, see:
http://gcc.gnu.org/ for g++
http://www.boost.org/ for Boost
http://www.pcre.org/ for PCRE
http://www.lua.org/ for Lua
http://www.sqlite.org/ for SQLite
http://botan.randombit.net/ for Botan
http://www.gnu.org/software/libidn/ for GNU IDN
1.1 using boost in the build process:
monotone uses the boost libraries in multiple parts of its code.
fortunately, it only uses the so-called header-only libraries: these
can be used very easily from other projects, as there is no need to
build them by hand prior usage.
therefore you can use an installed version of boost if shipped with your
distribution but, if you do not want to mess with the Boost.Build build
system (which is hard to deal with for beginners), you can simply use an
extracted copy of the boost sources. the two procedures are detailed
below:
* if your system already has the boost development libraries installed,
you must tell the compiler where to find them. their location will
usually be somewhere under /usr/include. try the following command:
ls -d /usr/include/boost*
if the command shows a single directory named 'boost', you do not have
to take any extra steps. configure will automatically find the
necessary files. instead, if the command shows a directory name of the
form boost_1_33_1, boost-1.33.1 or similar, you will have to pass that
to the configure script. do so as follows:
./configure CPPFLAGS="-I/usr/include/boost-1.33.1"
if no directories are shown, look for prebuilt boost packages for your
system and install them. if there aren't any, resort to the procedure
described in the following point.
* if you do not have boost already installed, and you cannot easily
install it from prebuilt packages, fetch a copy of the boost sources
from their site (see previous section) and unpack them somewhere in
your system -- for example, your home directory. once done, tell the
configure script where the files are:
./configure CPPFLAGS="-I${HOME}/boost-1.33.1"
it is important to note that, once monotone is built, you can get rid of
all the boost sources or boost development packages from your system.
the required header-only libraries will have been built into the final
binary, which will not rely on any binary boost library. in some sense,
you can think of it as static linkage.
2. configuring monotone:
* if there is no ./configure script in your source tree you'll need
to create one before proceeding to the next step. one of the
following auto* commands should work:
$ aclocal-1.9 && autoreconf --install
$ AUTOMAKE=automake-1.9 ACLOCAL=aclocal-1.9 autoreconf --install
If this fails early, check that you have gettext packages installed.
* type "./configure" for a basic configuration of monotone. several
configuration options are available; type "configure --help" for a
list of all of them. some special options are shown here:
--enable-ipv6[=auto|no|yes]
specify whether IPv6 support has to be enabled or disabled. the
default is to try automatic detection (auto) and use the guessed
results. however, you can force IPv6 detection by saying 'yes'
or completely disable it using 'no'.
--disable-nls
build a version of monotone without support for local message
catalogs. you might like to do this if you do not have a
working installation of GNU gettext.
--enable-pch
this will enable precompiled headers, which should improve compile
time. some versions of gcc have problems with this option, so
try disabling it if you run into trouble.
3. building monotone
* type "make" to invoke GNU make (please notice it might be named
"gmake" on systems where system make is not GNU make).
this should produce a mtn binary in your current directory.
if not, please send a build log to
monotone-devel@nongnu.org with a description of the failure.
4. testing monotone
* there is a "make check" target which you can try, if you'd like to
confirm monotone's functionality on your system.
Do not run "make check" as root (Unix)! Doing so will cause the
failure of some of the tests!
Also, make sure your testing process has enough memory. Experience
has shown that some tests may fail "mysteriously" when there is too
little memory. A possible hint is that 128MB was too little on
FreeBSD 6 on x86 while 256MB was enough.
You might also like to try fetching monotone's sources from our
monotone server. this process will transfer the complete development
history to your database, and you will then be free to share it with
others or make changes and submit them to us:
mtn clone 'mtn://code.monotone.ca/monotone?net.venge.monotone'
5. upgrading
* if you have an existing monotone installation, you may need to
perform some additional steps to migrate your data to the newest
version; see the file UPGRADE for details.
|