Adds writer test case for RCU
[folly.git] / folly / build / deps_ubuntu_12.04.sh
1 #!/bin/bash
2
3 # Installs folly's dependencies to /usr/local on a clean Ubuntu 12.04 x64
4 # system.  Primarily intended for Travis CI, since most engineers don't run
5 # distributions this stale.
6 #
7 # WARNING: Uses 'sudo' to upgrade your system with impunity:
8 #  - Adds several PPAs for missing/outdated dependencies
9 #  - Installs several from-source dependencies in /usr/local
10 #
11 # Library sources & build files end up in folly/folly/deps/
12
13 set -ex
14
15 BUILD_DIR="$(readlink -f "$(dirname "$0")")"
16 mkdir -p "$BUILD_DIR/deps"
17 cd "$BUILD_DIR/deps"
18
19 sudo apt-get install -y python-software-properties  # for add-apt-repository
20 sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
21 sudo add-apt-repository -y ppa:boost-latest/ppa
22 sudo apt-get update
23
24 sudo apt-get install -y git gcc-4.8 g++-4.8 libboost1.54-dev autoconf git \
25   libboost-thread1.54-dev libboost-filesystem1.54-dev libssl-dev \
26   libsnappy-dev libboost-system1.54-dev libboost-regex1.54-dev make \
27   libboost-context1.54-dev libtool libevent-dev libgtest-dev binutils-dev \
28   libboost-program-options1.54-dev
29
30 # TODO: According to the folly docs, these system dependencies might be
31 # missing.  However, things seem to build fine...
32 #  automake autoconf-archive libboost-all-dev liblz4-dev liblzma-dev
33 #  zlib1g-dev libjemalloc-dev
34
35 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
36 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
37
38 CMAKE_NAME=cmake-2.8.12.1
39 GFLAGS_VER=2.1.1
40 GLOG_NAME=glog-0.3.3
41 DC_VER=1.1.5
42 DC_NAME=double-conversion-${DC_VER}
43
44 # Newer cmake, since the system's 2.8.7 cmake is too old for gflags:
45 # https://groups.google.com/forum/#!topic/google-gflags/bu1iIDKn-ok
46 pushd .
47 wget --no-check-certificate http://www.cmake.org/files/v2.8/${CMAKE_NAME}.tar.gz \
48     -O ${CMAKE_NAME}.tar.gz
49 tar xzf ${CMAKE_NAME}.tar.gz
50 cd ${CMAKE_NAME}
51 cmake .
52 make
53 CMAKE="$(readlink -f bin/cmake)"
54 popd
55
56 # double-conversion
57 pushd .
58 wget https://github.com/google/double-conversion/archive/v${DC_VER}.tar.gz \
59     -O ${DC_NAME}.tar.gz
60 tar xzf ${DC_NAME}.tar.gz
61 cd ${DC_NAME}
62 "$CMAKE" -DBUILD_SHARED_LIBS=ON .  # Don't use scons instead, it's broken.
63 make
64 sudo make install
65 sudo ldconfig
66 popd
67
68 # gflags
69 pushd .
70 wget https://github.com/gflags/gflags/archive/v${GFLAGS_VER}.tar.gz \
71   -O gflags-${GFLAGS_VER}.tar.gz
72 tar xzf gflags-${GFLAGS_VER}.tar.gz
73 mkdir -p gflags-${GFLAGS_VER}/build/ && cd gflags-${GFLAGS_VER}/build/
74 "$CMAKE" .. -DBUILD_SHARED_LIBS:BOOL=ON -DGFLAGS_NAMESPACE:STRING=google
75 make
76 sudo make install
77 sudo ldconfig
78 popd
79
80 # glog
81 pushd .
82 wget https://google-glog.googlecode.com/files/${GLOG_NAME}.tar.gz \
83   -O ${GLOG_NAME}.tar.gz
84 tar xzf ${GLOG_NAME}.tar.gz
85 cd ${GLOG_NAME}
86 ./configure
87 make
88 sudo make install
89 sudo ldconfig
90 popd