]> git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/build_tools/make_package.sh
7b5c52cff26b7ecb516450c1f80b18726af56356
[ceph.git] / ceph / src / rocksdb / build_tools / make_package.sh
1 # shellcheck disable=SC1113
2 #/usr/bin/env bash
3 # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
4
5 set -e
6
7 function log() {
8 echo "[+] $1"
9 }
10
11 function fatal() {
12 echo "[!] $1"
13 exit 1
14 }
15
16 function platform() {
17 local __resultvar=$1
18 if [[ -f "/etc/yum.conf" ]]; then
19 eval $__resultvar="centos"
20 elif [[ -f "/etc/dpkg/dpkg.cfg" ]]; then
21 eval $__resultvar="ubuntu"
22 else
23 fatal "Unknwon operating system"
24 fi
25 }
26 platform OS
27
28 function package() {
29 if [[ $OS = "ubuntu" ]]; then
30 if dpkg --get-selections | grep --quiet $1; then
31 log "$1 is already installed. skipping."
32 else
33 # shellcheck disable=SC2068
34 apt-get install $@ -y
35 fi
36 elif [[ $OS = "centos" ]]; then
37 if rpm -qa | grep --quiet $1; then
38 log "$1 is already installed. skipping."
39 else
40 # shellcheck disable=SC2068
41 yum install $@ -y
42 fi
43 fi
44 }
45
46 function detect_fpm_output() {
47 if [[ $OS = "ubuntu" ]]; then
48 export FPM_OUTPUT=deb
49 elif [[ $OS = "centos" ]]; then
50 export FPM_OUTPUT=rpm
51 fi
52 }
53 detect_fpm_output
54
55 function gem_install() {
56 if gem list | grep --quiet $1; then
57 log "$1 is already installed. skipping."
58 else
59 # shellcheck disable=SC2068
60 gem install $@
61 fi
62 }
63
64 function main() {
65 if [[ $# -ne 1 ]]; then
66 fatal "Usage: $0 <rocksdb_version>"
67 else
68 log "using rocksdb version: $1"
69 fi
70
71 if [[ -d /vagrant ]]; then
72 if [[ $OS = "ubuntu" ]]; then
73 package g++-4.8
74 export CXX=g++-4.8
75
76 # the deb would depend on libgflags2, but the static lib is the only thing
77 # installed by make install
78 package libgflags-dev
79
80 package ruby-all-dev
81 elif [[ $OS = "centos" ]]; then
82 pushd /etc/yum.repos.d
83 if [[ ! -f /etc/yum.repos.d/devtools-1.1.repo ]]; then
84 wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo
85 fi
86 package devtoolset-1.1-gcc --enablerepo=testing-1.1-devtools-6
87 package devtoolset-1.1-gcc-c++ --enablerepo=testing-1.1-devtools-6
88 export CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc
89 export CPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp
90 export CXX=/opt/centos/devtoolset-1.1/root/usr/bin/c++
91 export PATH=$PATH:/opt/centos/devtoolset-1.1/root/usr/bin
92 popd
93 if ! rpm -qa | grep --quiet gflags; then
94 rpm -i https://github.com/schuhschuh/gflags/releases/download/v2.1.0/gflags-devel-2.1.0-1.amd64.rpm
95 fi
96
97 package ruby
98 package ruby-devel
99 package rubygems
100 package rpm-build
101 fi
102 fi
103 gem_install fpm
104
105 make static_lib
106 make install INSTALL_PATH=package
107
108 cd package
109
110 LIB_DIR=lib
111 if [[ -z "$ARCH" ]]; then
112 ARCH=$(getconf LONG_BIT)
113 fi
114 if [[ ("$FPM_OUTPUT" = "rpm") && ($ARCH -eq 64) ]]; then
115 mv lib lib64
116 LIB_DIR=lib64
117 fi
118
119 fpm \
120 -s dir \
121 -t $FPM_OUTPUT \
122 -n rocksdb \
123 -v $1 \
124 --prefix /usr \
125 --url http://rocksdb.org/ \
126 -m rocksdb@fb.com \
127 --license BSD \
128 --vendor Facebook \
129 --description "RocksDB is an embeddable persistent key-value store for fast storage." \
130 include $LIB_DIR
131 }
132
133 # shellcheck disable=SC2068
134 main $@