1#!/usr/bin/env bash
2# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
3
4set -e
5
6# update Alpine with latest versions
7echo '@edge http://nl.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories
8echo '@community http://nl.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories
9apk update
10apk upgrade
11
12# install CA certificates
13apk add ca-certificates
14
15# install build tools
16apk add \
17  build-base \
18  coreutils \
19  file \
20  git \
21  perl \
22  automake \
23  autoconf \
24  cmake
25
26# install tool dependencies for building RocksDB static library
27apk add \
28  curl \
29  bash \
30  wget \
31  tar \
32  openssl
33
34# install RocksDB dependencies
35apk add \
36  snappy snappy-dev \
37  zlib zlib-dev \
38  bzip2 bzip2-dev \
39  lz4 lz4-dev \
40  zstd zstd-dev \
41  linux-headers \
42  jemalloc jemalloc-dev
43
44# install OpenJDK7
45apk add openjdk7 \
46  && apk add java-cacerts \
47  && rm /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts \
48  && ln -s /etc/ssl/certs/java/cacerts /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts
49
50# cleanup
51rm -rf /var/cache/apk/*
52
53# puts javac in the PATH
54export JAVA_HOME=/usr/lib/jvm/java-1.7-openjdk
55export PATH=/usr/lib/jvm/java-1.7-openjdk/bin:$PATH
56
57# gflags from source
58cd /tmp &&\
59  git clone -b v2.0 --single-branch https://github.com/gflags/gflags.git &&\
60  cd gflags &&\
61  ./configure --prefix=/usr && make && make install &&\
62  rm -rf /tmp/*
63
64
65# build rocksdb
66cd /rocksdb
67make jclean clean
68PORTABLE=1 make -j8 rocksdbjavastatic
69cp /rocksdb/java/target/librocksdbjni-* /rocksdb-build
70cp /rocksdb/java/target/rocksdbjni-* /rocksdb-build
71