Stop Thinking, Just Do!

Sungsoo Kim's Blog

MonetDB Source compilation on OS X

tagsTags

13 January 2016


MonetDB Source compilation on OS X

Install Xcode

To be able to build (almost) any software package on OS X, one needs to have Apple Xcode installed, or at least the Xcode command-line tools. Xcode comes with a C/C++ compiler toolset, which (as of the more recent versions) is based on Clang/LLVM and not GCC.

If you want the most recent version of Xcode you can only obtain it from the Apple Developer Website (if you are a registered Apple developer) or directly from the Apple Mac App Store here.

Run the following command in Terminal in order to install the Xcode command-line tools:

xcode-select --install

Beware, OS X usually ships with a BSD toolset, unlike most Linux distribution that make use of the GNU toolset. This affects not only the compiler, but also tools (such as make, pkgconfig, aws, sed) used in the build scripts of MonetDB.

Installing required packages

There are two community supported package managers that one can use to install the dependencies for building MonetDB on OS X: Homebrew or MacPorts. At this point you would need to pick which package manager to use and install only one of them.

Using Homebrew

To install Homebrew please follow the up-to-date instructions for your OS X version. You can find these on their website found here.

Minimal modules build-set

After Homebrew is installed, you should install the required packages for building MonetDB absolute minimal set of modules. Run the command below to install the required packages (and their dependencies in the brackets): pkg-config; pcre

brew install pkg-config pcre openssl

Default modules build-set

Keep reading/installing if you want to build the other MonetDB modules included in the default build-set.

  • JDBC & control Install JDK 7, which you can get from the Oracle website. Note: You need the JDK, not the JRE. After JDK in installed, set the JAVA_HOME variable and add the JDK bin directory to your shell’s PATH. To do this, add the lines below to your .profile, .bashrc or .bash_profile (or the corresponding config file for your shell).

export JAVA_HOME=$(/usr/libexec/java_home) export PATH=${JAVA_HOME}/bin:$PATH

Install Apache Ant

brew install ant

  • ODBC Install unixODBC

brew install unixodbc

  • GEOM Install geos

brew install geos

Other

  • sphinxclient Install libsphinxclient

brew install libsphinxclient

  • GSL Install gsl

brew install gsl

  • FITS Install cfitsio

brew install cfitsio

Before building

You most likely need to install automake, autoconf, libtool, gettext and readline  from Homebrew as well. These will also be required to run the bootstrap script (see below).

brew install autoconf automake libtool gettext readline

Putting it all together

brew install autoconf automake libtool gettext readline pkg-config pcre openssl unixodbc geos gsl cfitsio

Using MacPorts

As an alternative to Homebrew, you can also use MacPorts to obtain the required packages. To install MacPorts please follow the up-to-date instructions for your OS X version. You can find these on their website here. Do not forget to restart your command prompt shell (since MacPorts will add new extensions to your PATH) and run:

sudo port -v selfupdate

Minimal modules build-set

After MacPorts is installed, you should install the required packages for building MonetDB absolute minimal set of modules. Run the command below to install the required packages (and their dependencies in the brackets): pkgconfig (libiconv); openssl (zlib); pcre (bzip2, ncurses, libedit); libxml2 (expat, gettext, xz).

sudo port install pkgconfig openssl pcre libxml2

Default modules build-set

Keep reading/installing if you want to build the other MonetDB modules included in the default build-set.

  • JDBC & control Install JDK 7, which you can get from the Oracle website. Note: You need the JDK, not the JRE. After JDK in installed, set the JAVA_HOME variable and add the JDK bin directory to your shell’s PATH. To do this, add the lines below to your .profile, .bashrc or .bash_profile (or the corresponding config file for your shell).

export JAVA_HOME=$(/usr/libexec/java_home) export PATH=${JAVA_HOME}/bin:$PATH

Install Apache Ant, which can be downloaded its website [https://ant.apache.org/bindownload.cgi]. Unpack the package in a directory in your home space, e.g. in /Users/<username>/tools/apache-ant. After that set the ANT_HOME variables and update the PATH like this:

export ANT_HOME=/Users/<username>/tools/apache-ant export PATH=${ANT_HOME}/bin:$PATH

  • ODBC Install unixODBC (libtool, readline)

sudo port install unixodbc

Add the line below when configuring the build to point the tool to the library (see Configuring below).

--with-unixodbc =/opt/local --with-readline=/opt/local

  • GEOM Install geos

sudo port install geos

Other

  • curl Install curl (curl-ca-bundle, libind)

sudo port install curl

  • libmicrohttpd Install libmicrohttpd (gmp, libtasn1, nettle, libffi, glib2, popt, desktop-file-utils, libxslt, p11-kit, gnutls, libgpg-error, libgcrypt)

sudo port install libmicrohttpd

  • liburiparser Install uriparser

sudo port install uriparser

  • sphinxclient

Install libsphinxclient

sudo port install libsphinxclient

Add the line below when configuring the build to point the tool to the library (see Configuring below).

--with-sphinxclient=/opt/local

  • GSL Install gsl

sudo port install gsl

  • FITS Install cfitsio

sudo port install cfitsio

Before building

You will probably need to install automake (gdbm, perl5.16, perl5) and autoconf from MacPorts as well. These will also be required to run the bootstrap script (see below).

sudo port install automake autoconf

Putting it all together

sudo port install automake autoconf pkgconfig openssl pcre libxml2 unixodbc bison geos gsl cfitsio curl libmicrohttpd uriparser libsphinxclient

Obtaining sources and bootstrapping

Sources of the latest released and testing versions on MonetDB can be obtained from the repository: released or testing. Download the selected file and unpack it in a directory.

Cloning MonetDB Mercurial repository

Optionally, bleeding egde sources can be directly obtained from the MonetDB Mercurial repository. To do that make sure you have Mercurial installed on your system first - latest version available here. The clone the MonetDB repository. Note this can take some time and a lot of data will be transferred.

hg clone http://dev.monetdb.org/hg/MonetDB/

Bootstrapping

Sources check-out from Mercurial need to be bootstrapped first, before configure can be run. To do that, go in the directory you in check you cloned the repository and run:

./bootstrap

  • If you are using Homebrew, you will also need to set M4DIRS to the directory where the Homebrew gettext M4 macros are in. The same holds for the OpenSSL libs and includes:

export M4DIRS=/usr/local/opt/gettext/share/aclocal export LDFLAGS=-L/usr/local/opt/openssl/lib export CPPFLAGS=-I/usr/local/opt/openssl/include

Configuring build

With Homebrew

Before starting the configure tool, go in the directory where the MonetDB sources are, and create a subdirectory BUILD. Go in the BUILD directory and run the following command, where prefix is the location where you would like MonetDB installed.

../configure --prefix=<full-path>

With MacPorts

Before starting the configure tool, go in the directory where the MonetDB sources are, and create a subdirectory BUILD. Go in the BUILD directory and run the following command, where prefix is the location where you would like MonetDB installed.

../configure --prefix=<full-path> --with-libiconv-prefix=/opt/local

  • If you want to build the ODBC driver or enable sphinxclient support, do not forget to add the appropriate arguments, e.g.:

../configure --prefix=<full-path> --with-libiconv-prefix=/opt/local --with-sphinxclient=/opt/local --with-unixodbc =/opt/local --with-readline=/opt/local

Note: If you don’t have root/admin permission for your system you will not be able to deploy the RubyGem. If you don’t need the RubyGem simply disable with with the option --without-rubygem

Building

To build the configured modules, simply run from the BUILD directory, using the -j<number> argument for a parallel build. E.g.

make -j4

Once the build process finishes, install MonetDB in the prefix location set during the configure process.

make install

Note: If you have built the RubyGem, on OS X you will need to use sudo make install to deploy it.


comments powered by Disqus