MariaDB MaxScale can be built on any system that meets the requirements. The main requirements are as follows:
- CMake version 2.8 or later (Packaging requires version 2.8.12 or later)
- GCC version 4.4.7 or later
- SQLite3 version 3.3 or later
- OpenSSL
- Bison 2.7 or later
- Flex 2.5.35 or later
- libuuid
- GNUTLS
- libcurl
This is the minimum set of requirements that must be met to build the MaxScale core package.
This installs MaxScale as if it was installed from a package. Install git
before running the following commands.
git clone https://github.com/mariadb-corporation/MaxScale
mkdir build
cd build
../MaxScale/BUILD/install_build_deps.sh
cmake ../MaxScale -DCMAKE_INSTALL_PREFIX=/usr
make
sudo make install
sudo ./postinst
For a definitive list of packages, consult the install_build_deps.sh script.
The tests and other parts of the build can be controlled via CMake arguments.
Here is a small table with the names of the most common parameters and what
they control. These should all be given as parameters to the -D switch in
NAME=VALUE format (e.g. -DBUILD_TESTS=Y
).
Argument Name | Explanation |
---|---|
CMAKE_INSTALL_PREFIX | Location where MariaDB MaxScale will be installed to. Set this to /usr if you want MariaDB MaxScale installed into the same place the packages are installed. |
BUILD_TESTS | Build tests |
WITH_SCRIPTS | Install systemd and init.d scripts |
PACKAGE | Enable building of packages |
TARGET_COMPONENT | Which component to install, default is the 'core' package. Other targets are 'experimental', which installs experimental packages, 'devel' which installs development headers and 'all' which installs all components. |
TARBALL | Build tar.gz packages, requires PACKAGE=Y |
Note: You can look into defaults.cmake for a list of the CMake variables.
To run the MaxScale unit test suite, configure the build with -DBUILD_TESTS=Y
,
compile and then run the make test
command.
Other useful targets for Make are documentation
, which generates the Doxygen documentation,
and uninstall
which uninstall MariaDB MaxScale binaries after an install.
Note: If you configure CMake multiple times, it's possible that you will run into problems when building MaxScale. Most of the time this manifests as a missing pcre2.h header file. When this happens, delete everything in the build directory and run the CMake command again.
If you wish to build packages, just add -DPACKAGE=Y
to the CMake invocation
and build the package with make package
instead of installing MaxScale with
make install
. This process will create a RPM/DEB package depending on your
system.
To build a tarball, add -DTARBALL=Y
to the cmake invokation. This will create
a maxscale-x.y.z.tar.gz file where x.y.z is the version number.
Some Debian and Ubuntu systems suffer from a bug where make package
fails
with errors from dpkg-shlibdeps. This can be fixed by running make
before
make package
and adding the path to the libmaxscale-common.so library to
the LD_LIBRARY_PATH environment variable.
make
LD_LIBRARY_PATH=$PWD/server/core/ make package
MaxScale is split into multiple components. The main component is the core MaxScale package which contains MaxScale and all the modules. This is the default component that is build, installed and packaged. There exist two other components, the experimental and the devel components. The former contains all experimental modules which are not considered as part of the core MaxScale package and they can be alpha or beta quality modules. The latter of the optional components, devel, contains the development files required for MaxScale module development.
The component which is build is controlled by the TARGET_COMPONENT CMake variable. The default value for this is core which builds the core MaxScale package.
To build other components, you will need to set value of the TARGET_COMPONENT CMake variable to the component name you wish to install or package.
To install the experimental modules, invoke CMake with -DTARGET_COMPONENT=experimental:
cmake ../MaxScale -DTARGET_COMPONENT=experimental
make
make install
To create a monolithic package with all the components, set the value of TARGET_COMPONENT to 'all', PACKAGE to Y and build the package:
cmake ../MaxScale -DPACKAGE=Y -DTARGET_COMPONENT=all
make package