As of Oct2020 releases compilation of MonetDB is done using CMake. The build of a program or library with CMake is a two stage process. First, standard build files are created (generated) from configuration files (CMakeLists.txt) which are written in CMake language. Then the platform's native build tools (native toolchain) are used for actual building of programs.
Note: Before release Oct2020 building the MonetDB software was based on the bootstrap-configure-make pattern.
MonetDB can be compiled in any location on your file system and it does not require special (root) permissions.
For latest build instructions please read: dev.monetdb.org/hg/MonetDB/file/tip/documentation/source/build.rst. This document also contains at the bottom specific information for compilation on Windows and macOS.
While the core task of compiling MonetDB itself is very simple (on UNIX based platforms), inexperienced users often run into problems caused by many effects of the build environment. The catch is the differences between the target platforms, because not all libraries needed may have been installed by your system administrator. Typical missing components on a binary distribution such as Fedora or Debian or Ubuntu are the
xxx-dev packages necessary for MonetDB to compile against the package itself.
For Fedora specific packages read: dev.monetdb.org/hg/MonetDB/file/tip/documentation/source/build-fedora.rst.
For Debian specific packages read: dev.monetdb.org/hg/MonetDB/file/tip/documentation/source/build-debian.rst.
In a nutshell, building the MonetDB sources involves commands:
% mkdir build % cd build % cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/monetdb /path/to/monetdb/source % cmake --build . % cmake --build . --target install
MonetDB is a rather large C-based program, and it sometimes closely interacts with the host system it runs on to achieve the best end results for the user. This makes the code not always as generic as we ultimately would like it to be. Because we understand that these parts of the code are likely suspects for malfunctioning, we try to test our sources on a nightly basis on as many different platforms that we can access. This mainly focuses on different architectures, kernels and libcs, but we also test a couple of Linux distributions, see Nightly testing.