tecbot / gorocksdb

gorocksdb is a Go wrapper for RocksDB

Home Page:http://rocksdb.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

could not determine kind of name for C.rocksdb_options_set_allow_ingest_behind

vitalyisaev2 opened this issue · comments

Hello,

Unfortunately I cannot build with gorocksdb after the recent update #124. I take the latest release of rocksdb itself (currently it's 5.9.2) than I'm trying to go get gorocksdb's master.

Steps to reproduce:

  1. Save this installation script rocksdb.sh:
#!/bin/bash
set -e
set -x

ROCKSDB_DIR="/tmp/rocksdb"
ROCKSDB_VERSION="v5.9.2"
GOROCKSDB_DIR="${GOPATH}/src/github.com/tecbot/gorocksdb"

# RocksDB: on Ubuntu 16.04
case ${PLATFORM} in
    "UBUNTU")
        sudo apt-get install \
            libsnappy-dev \
            zlib1g-dev \
            libbz2-dev \
            libgflags-dev \
            liblz4-dev \
            libzstd-dev
        ;;
    "FEDORA")
        sudo dnf install \
            gflags \
            snappy \
            snappy-devel \
            zlib \
            zlib-devel \
            bzip2 \
            bzip2-devel \
            lz4-devel \
            libasan \
            libzstd \
            libzstd-devel
        ;;
    "CENTOS")
        sudo yum -y install \
            gflags \
            snappy \
            snappy-devel \
            zlib \
            zlib-devel \
            bzip2 \
            bzip2-devel \
            lz4-devel \
            libasan \
            libzstd \
            libzstd-devel
        ;;
    *)
        echo "Platform is not supported"
        exit 1
esac


# Download sources
if [ -d ${ROCKSDB_DIR} ]; then
    pushd ${ROCKSDB_DIR}
    git pull origin master
else
    git clone --depth=1 -b ${ROCKSDB_VERSION} https://github.com/facebook/rocksdb.git ${ROCKSDB_DIR}
    pushd ${ROCKSDB_DIR}
fi

# Build project
make clean
make shared_lib -j4
sudo cp --preserve=links ./librocksdb.* /usr/local/lib/
sudo cp -r ./include/rocksdb/ /usr/local/include/
rm -rf ${ROCKSDB_DIR}
popd

# Golang RocksDB bindings
if [ -d ${GOROCKSDB_DIR} ]; then
    pushd ${GOROCKSDB_DIR}
    git pull origin master
else
    git clone --depth=1 https://github.com/tecbot/gorocksdb ${GOROCKSDB_DIR}
fi
  1. Compile and install rocksdb:
PLATFORM=FEDORA ./rocksdb.sh
  1. Try to compile gorocksdb:
➜ CGO_CFLAGS="-I/usr/local/include/rocksdb" \
> CGO_LDFLAGS="-L/usr/local/lib -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -llz4 -lzstd" \
> go get github.com/tecbot/gorocksdb
# github.com/tecbot/gorocksdb
../../../github.com/tecbot/gorocksdb/options.go:1045:2: could not determine kind of name for C.rocksdb_options_set_allow_ingest_behind

Please clarify which version of upstream rocksdb does gorocksdb's master correspond to.

Hi @vitalyisaev2,

thanks for reporting this issue. The gorocksdb master always refers to master of rocksdb itself. It doesn't use versioning (yet). So setting ROCKSDB_VERSION to master should fix your problem for now.

@tecbot thanks for clarification! I would suggest that this rule should be reflected in Readme, because now it's only mentioned that RocksDB version must be equal or greater than 5.5+ :)