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 208 209 210 211 212
|
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. we are
working on making this situation better.
* software prerequisites:
- a supported C++ compiler: g++ 3.2 or 3.3.
- an installed copy of boost 1.31.0 or later.
on debian:
apt-get install libboost-date-time-dev
apt-get install libboost-filesystem-dev
apt-get install libboost-regex-dev
apt-get install libboost-test-dev
apt-get install libboost-dev
apt-get install g++
on fedora:
apt-get install boost-devel
apt-get install g++
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
1.1 building boost:
many people have reported difficulty building boost. the main
problem is that boost builds with an unorthodox build tool called
"bjam" which must, itself, be built or installed before boost can be
built. the bjam sources are contained within the boost distribution,
but somewhat hidden. there are instructions on
http://www.boost.org/more/getting_started.html, but we have
assembled this abbreviated bourne shell sequence for advanced users
who do not need all the preamble:
wget http://aleron.dl.sourceforge.net/sourceforge/boost/boost_1_31_0.tar.gz
tar -xzf boost_1_31_0.tar.gz
cd boost_1_31_0
(cd tools/build/jam_src && ./build.sh)
BJAM=`find tools/build/jam_src/ -name bjam -a -type f`
$BJAM "-sBUILD=release <threading>single <optimization>speed <runtime-link>static"
for i in `find bin -type d -a -name \*.a`;
do for j in `find $i -type f -a -name \*.a`;
do mv $j libs/`basename $i`;
done;
done
ranlib libs/*.a
if this completes successfully, you will have a selection of boost
libraries in boost_1_31_0/libs and boost headers in
boost_1_31_0/boost. you can then either copy the .a files to your
standard library path and the directory "boost_1_31_0/boost" to your
standard include path, or you can pass additional configuration
options to your monotone configure build, such as:
./configure CPPFLAGS="-Iboost_1_31_2" LDFLAGS="-Lboost_1_31_0/libs"
monotone does not use all of boost -- for instance, people often
have trouble building boost.python, which we do not use. you don't
need to build any libraries that we don't use!
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.7 && autoreconf --install
$ AUTOMAKE=automake-1.7 ACLOCAL=aclocal-1.7 autoreconf --install
* 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'.
--enable-static-boost[=prefix]
this will attempt to link a "mostly static" version of monotone
using the .a files supplied with your installation of
boost. the resulting binary will be larger but more portable
than a normal (dynamic) link.
you can optionally pass a prefix to the option, which will be
used to look for the static libraries; otherwise a list of
predefined directories will be used. for example:
./configure --enable-static-boost=/usr/local/boost
--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.
--with-bundled-lua=no
--with-bundled-sqlite=no
build a version of monotone without the internal "bundled"
copies of lua and sqlite libraries. normally monotone will use
copies of these libraries it was bundled with. If you set these
flags to "no", it will try to use librarise it finds on your
system, and use the bundled versions only if you do not have
your own copies.
this is usually untested and not guaranteed to work. if you
have strange problems, then try using the bundled lua and
sqlite.
--disable-large-file
this will disable large file support from the builtin sqlite, to
achieve maximum binary compatibility with old systems. this option
has no effect when --with-bundled-sqlite=no is also given.
BOOST_SUFFIX=string
this variable, to be set on configure's command line, can be used
to specify a special string suffix to be appended to boost library
names. many Linux distributions provide symlinks to hide this
suffix, but others do not. therefore, you need to pass it to the
configure script through this variable for correct detection of
boost. for example:
./configure BOOST_SUFFIX=-gcc
note that, sometimes, the configure script will be able to guess
the correct suffix by itself.
3. building monotone
* type "make". this should produce a monotone binary in your current
directory. if not, please send a build log to
monotone-devel@nongnu.org with a description of the failure.
* if you are on solaris/x86, read appendix A of this document.
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. you might also
like to try fetching monotone's sources from our monotone
server. this process will transfer the complete development
history (about 40 megabytes) to your database, and you will then
be free to share it with others or make changes and submit them to
us:
monotone --db=mt.db db init
monotone --db=mt.db read <<EOF
[pubkey monotone@off.net]
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCkVU7BYI5bRRJmkJc8gomO9WdTTGG10Lmh
PdAEqD6sSdsMkTC9okfsQQ8obE+GODrFa70fX5PJNevNoE+Ryxzu+xtJjmuR2tYTeRNwNa0F
dIo/QLteQ4Vwh5162It1kPhLKb1Ki62ZG8aw6ATS4GQVJPci2g1lpn1RG0Z+fFdFJQIBEQ==
[end]
EOF
monotone --db=mt.db --key="" pull off.net net.venge.monotone
monotone --db=mt.db --branch=net.venge.monotone checkout monotone-sources
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.
A. build notes for solaris/x86
* on solaris/x86 the build might fail in cryptopp/integer.cpp if your gcc
is configured to use the sunos as. a temporary fix is to use gnu as to
to compile that file (remember to replace $BOOST_PREFIX with the path
to boost's headers):
if g++ -DLOCALEDIR=\"/usr/local/share/locale\" -DHAVE_CONFIG_H -I. -I. \
-I$BOOST_PREFIX -I./lua -I./sqlite -DNDEBUG -DBOOST_DISABLE_THREADS \
-Wall -O2 -fno-strict-aliasing -MT cryptopp/lib3rdparty_a-integer.o \
-MD -MP -MF "cryptopp/.deps/lib3rdparty_a-integer.Tpo" -S -o \
cryptopp/lib3rdparty_a-integer.S \
`test -f 'cryptopp/integer.cpp' || echo './'`cryptopp/integer.cpp;
then
mv -f "cryptopp/.deps/lib3rdparty_a-integer.Tpo" \
"cryptopp/.deps/lib3rdparty_a-integer.Po";
else
rm -f "cryptopp/.deps/lib3rdparty_a-integer.Tpo"; exit 1;
fi
gas cryptopp/lib3rdparty_a-integer.S -o cryptopp/lib3rdparty_a-integer.o
after that, just do "make" again, it should finish the build now.
|