Setting up a development workspace¶
General¶
LizardFS does not have too many dependences, so it is easy to develop on any platform you like.
On Linux¶
Debian / Ubuntu¶
Installing all required dependencies on Debian based distributions is easy – just run:
apt install git cmake g++ libspdlog-dev libfuse3-dev libfuse-dev fuse isal libisal-dev libboost-all-dev asciidoc-base zlib1g-dev pkg-config libthrift-dev libcrcutil-dev libjudy-dev libpam0g-dev libdb-dev libgtest-dev
and you should be ready to go.
CentoOS-7 / RHEL-7 / SL 7¶
Luckily the friendly people from CERN have created a complete environment for gcc6 based development. Install the following packages:
For the backports from Fedora (needed or current cmake and buildtools):
sudo yum install epel-releaseFor
gcc6:
On RHEL:
sudo yum-config-manager --enable rhel-server-rhscl-7-rpmsOn CentOS and SL:
sudo yum install centos-release-sclOn all of them:
sudo yum install cmake zlib-devel fuse-devel Judy-devel asciidoc libtool automake autoconf rpm-build rpmlint a2x boost-devel sudo yum install devtoolset-6 devtoolset-6-gcc-c++ devtoolset-6-libstdc++-develIf you want to build the
libisal2stuff yurself, addyasmandnasmto the list:sudo yum install yasm nasm
To start working with the freshly installed gcc6 toolset, please enter:
scl enable devtoolset-6 bash
Additional packages required and not provided by standard repos:
libisal2
These dependencies can be obtained from our CentOS repositories and should work on all 3 enterprise repos.
CentoOS-6 / RHEL-6 / ScientificLinux 6¶
As for the 7 series of the enterprise Linuces, the friendly people from CERN have created a complete environment for gcc-6 based development for all Enterprise Linuces. Install the following packages:
For the backports from Fedora (needed or current cmake and buildtools):
sudo yum install epel-releaseFor
gcc6:
On RHEL:
sudo yum-config-manager --enable rhel-server-rhscl-7-rpmsOn Centos and SL:
sudo yum install centos-release-sclOn all of them:
sudo yum install cmake zlib-devel fuse-devel Judy-devel asciidoc libtool automake autoconf-2.69 rpm-build rpmlint a2x sudo yum install devtoolset-6 devtoolset-6-gcc-c++ devtoolset-6-libstdc++-develIf you want to build the
libisal2stuff yurself, addyasmandnasmto the list:sudo yum install yasm nasm
To start working with the freshly installed gcc6 toolset, please enter:
scl enable devtoolset-6 bash
Additional packages required and not provided by standard repos:
libisal2, current boost edition, autoconf-2.69.
These dependencies can be obtained from our CentOS repositories and should work on all 3 enterprise repos.
Mac OS/X¶
Compiling software like LizardFS on MacOS/X requires some additional software to be installed on your Mac. You will need to install Xcode from Apple and than issue:
xcode-select --install
to add the command line tools to your system.
To get all the goodies from the current LizardFS, you will require to build LizardFS with gcc 6 and the latest OSXFuse library.
We have had good experiences with using homebrew for adding open source software to MacOS/X and would like to recommend to developers to use it to add all additional software required.
To install homebrew, issue the following at your command prompt:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Than to install CMake issue:
brew install cmake
and finally gcc6 with:
brew install homebrew/versions/gcc6
To generate manpages please also add the Pandoc document format translator:
brew install pandoc
And last but not least, if you would like to generate documentation as well, install the sphinx documentation engine:
brew install sphinx-doc
As on any other OS we have no preferences for a IDE on MacOS/X. You can use Xcode, Eclipse, Netbeans, Sublime Text 3 or whatever else fickle’s your fancy.
To build with your installed gcc6 you will need to set the following variables in your environment before invoking CMake:
export CC=/usr/local/bin/gcc-6
export CXX=/usr/local/bin/g++-6
export CPP=/usr/local/bin/cpp-6
homebrew is also the perfect place to get git and additions to git and gerrit.
Some people had good experiences using SmartGIT but it is not free.
What you will require for acceptable ec speed will be the isa-l library.
Now you are ready to compile a fully featured LizardFS package on your Mac.
FreeBSD¶
Note
All the instructions are for FreeBSD 11.
To create a working development environment on FreeBSD there are a range of ports or packages you will need to install:
gcc6 binutils bash gmake cmake git judy boost
If you want to make use of the storage extensions for Intel platforms by Intel, please install the isa-l package as well. The packages will install other required dependencies auto-magically.
For building the manpages and documentation you will require additionally:
hs-pandoc
hs-pandoc-types
py-sphinx
For linking to the right gcc version, you should set:
export LDFLAGS=-Wl,-rpath=/usr/local/lib/gcc6
in your environment.
For making bash work correctly, please add the following to /etc/fstab:
fdesc /dev/fd fdescfs rw 0 0
Before you can build LizardFS with your newly setup build environment, please set the following variables in your environment or add them to your .bashrc:
export CC=/usr/local/bin/gcc6
export CXX=/usr/local/bin/g++6
export CPP=/usr/local/bin/cpp6
export MAKE=/usr/local/bin/gmake
export SHELL=/usr/local/bin/bash
We also strongly suggest to build LizardFS while working inside bash.
Make sure your FreeBSD as well as your packages and ports are always up to date.