Skip to content

Latest commit

 

History

History
88 lines (71 loc) · 3.03 KB

README.md

File metadata and controls

88 lines (71 loc) · 3.03 KB

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.