| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | # shellcheck disable=SC1113#/usr/bin/env bash# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.set -efunction log() {  echo "[+] $1"}function fatal() {  echo "[!] $1"  exit 1}function platform() {  local  __resultvar=$1  if [[ -f "/etc/yum.conf" ]]; then    eval $__resultvar="centos"  elif [[ -f "/etc/dpkg/dpkg.cfg" ]]; then    eval $__resultvar="ubuntu"  else    fatal "Unknwon operating system"  fi}platform OSfunction package() {  if [[ $OS = "ubuntu" ]]; then    if dpkg --get-selections | grep --quiet $1; then      log "$1 is already installed. skipping."    else      # shellcheck disable=SC2068      apt-get install $@ -y    fi  elif [[ $OS = "centos" ]]; then    if rpm -qa | grep --quiet $1; then      log "$1 is already installed. skipping."    else      # shellcheck disable=SC2068      yum install $@ -y    fi  fi}function detect_fpm_output() {  if [[ $OS = "ubuntu" ]]; then    export FPM_OUTPUT=deb  elif [[ $OS = "centos" ]]; then    export FPM_OUTPUT=rpm  fi}detect_fpm_outputfunction gem_install() {  if gem list | grep --quiet $1; then    log "$1 is already installed. skipping."  else    # shellcheck disable=SC2068    gem install $@  fi}function main() {  if [[ $# -ne 1 ]]; then    fatal "Usage: $0 <rocksdb_version>"  else    log "using rocksdb version: $1"  fi  if [[ -d /vagrant ]]; then    if [[ $OS = "ubuntu" ]]; then      package g++-4.8      export CXX=g++-4.8      # the deb would depend on libgflags2, but the static lib is the only thing      # installed by make install      package libgflags-dev      package ruby-all-dev    elif [[ $OS = "centos" ]]; then      pushd /etc/yum.repos.d      if [[ ! -f /etc/yum.repos.d/devtools-1.1.repo ]]; then        wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo      fi      package devtoolset-1.1-gcc --enablerepo=testing-1.1-devtools-6      package devtoolset-1.1-gcc-c++ --enablerepo=testing-1.1-devtools-6      export CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc      export CPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp      export CXX=/opt/centos/devtoolset-1.1/root/usr/bin/c++      export PATH=$PATH:/opt/centos/devtoolset-1.1/root/usr/bin      popd      if ! rpm -qa | grep --quiet gflags; then        rpm -i https://github.com/schuhschuh/gflags/releases/download/v2.1.0/gflags-devel-2.1.0-1.amd64.rpm      fi      package ruby      package ruby-devel      package rubygems      package rpm-build    fi  fi  gem_install fpm  make static_lib  make install INSTALL_PATH=package  cd package  LIB_DIR=lib  if [[ -z "$ARCH" ]]; then      ARCH=$(getconf LONG_BIT)  fi  if [[ ("$FPM_OUTPUT" = "rpm") && ($ARCH -eq 64) ]]; then      mv lib lib64      LIB_DIR=lib64  fi  fpm \    -s dir \    -t $FPM_OUTPUT \    -n rocksdb \    -v $1 \    --prefix /usr \    --url http://rocksdb.org/ \    -m rocksdb@fb.com \    --license BSD \    --vendor Facebook \    --description "RocksDB is an embeddable persistent key-value store for fast storage." \    include $LIB_DIR}# shellcheck disable=SC2068main $@
 |