LStore - A fault-tolerant, performant distributed data storage framework.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
binding
build
cmake
debian
doc
scripts
src
test
vendor/jerasure
.dockerignore
.gitignore
CMakeLists.txt
Jenkinsfile
LICENSE.txt
README.md
VERSION
lstore.spec
sort.py

README.md

LStore Release Tools

Structure

  • binding - Bindings to third-party applications
  • build - Location where all sources are built
    • logs - Build logs
    • package - Storage with built RPMs
    • repo - Default YUM/APT repositories
    • local - Installation path for packages built with build-*.sh
    • ccache - Default ccache location for docker builds
  • cmake - Additional CMake modules
  • debian - Configurations for dpkg-buildpackage
  • doc - Documentation source
  • scripts - Build scripts
    • docker - Cached Dockerfiles
      • builder - Bare images with only LStore dependencies and build tools installed
      • buildslave - Larger image with a number of developer tools
  • src - Source repositories
  • test - Test, benchmark, fuzz harness and cases
  • vendor - External dependencies

Dependencies

You will need to bring your own copies of:

  • czmq-devel
  • fuse-devel
  • leveldb-devel
  • openssl-devel
  • zlib-devel
  • zmq-devel

In addition, LStore has build-time dependencies on

  • C, C++ compiler
  • cmake

For centos, at least, these dependencies can be installed with:

yum groupinstall "Development Tools"
yum install cmake openssl-devel czmq-devel zmq-devel zlib-devel fuse-devel leveldb-devel

If the local CMake installation is too old, we install a local copy into build/

Building

LStore uses CMake as its meta build system. To initialize the build system, execute:

cd build
cmake ..

Once the Makefile is initialized, commonly used targets include:

  • make externals - build any neccessary external packages
  • make all - build LStore libraries and binaries
  • make docs - build LStore documentation

Packaging LStore

LStore uses a docker-based system for packaging LStore for various linux distributions. In general, the packaging scripts all accept a list of distributions on the command line. By default, each distribution will be attempted. These base images containing external dependencies and build tools can be bootstrapped with:

./scripts/build-docker-base.sh [distribution] [distribution] ...

For each supported distribution, a docker image named lstore/builder:DIST will pe produced and tagged. For instance, a base Centos 7 image will be named lstore/builder:centos-7. These images can be updated by executing build-docker-base.sh again.

Once the base images are installed, the current source tree can be packaged with:

./scripts/package.sh [distribution] [distribution] ...

Once package.sh completes, the output binaries for each distribution will be stored in package/<distribution>/<package>/<revision>. The revisions are auto-generated by a heuristic that considers the number of git commits between the working copy and the most recent release tag.