| Please read all sections marked with **. All others are optional and provide |
| background information. |
| |
| |
| Building and Installing from Source |
| =================================== |
| |
| ** Run-time Requirements (required read): |
| ----------------------------------------- |
| |
| - LAPACK and BLAS libraries |
| |
| |
| ** Build-time Requirements (required read): |
| ------------------------------------------- |
| |
| - LAPACK and BLAS libraries as above plus their header files. |
| |
| Platform notes: |
| + Mac OS X comes with LAPACK and BLAS preinstalled (as part of the |
| Accelerate framework) |
| + On RedHat/CentOS, LAPACK and BLAS come with with the lapack-devel and |
| blas-devel packages. When compiling against PostgreSQL, other "\*.-devel" |
| packages might be needed (e.g., openssl-devel). |
| + On Solaris, LAPACK and BLAS come with the Orcale Performance Studio |
| |
| - Internet connection to automatically download MADlib's dependencies if needed |
| (Boost, Armadillo). See configuration options below. |
| |
| Optional: |
| |
| - For generating user-level documentation (using `make doc`, see below): |
| + doxygen >= 1.7.3 to generate the user-level API reference in HTML format |
| + A recent LaTeX installation for generating the formulas in the user-level |
| documentation. |
| + graphviz >= 2.28 to generate graphs for the doxygen documentation |
| |
| - For generating developer-level documentation (using `make devdoc`, see below): |
| + doxygen as above |
| + git >= 1.7 to download/update the local MathJax installation, which is used |
| for displaying formulas in the developer-level documentation |
| |
| - For generating a complete installation package (RPM, Package Maker, etc.; see |
| below): |
| + PostgreSQL 9.x |
| + Greenplum 4.x |
| + All requirements for generating user-level documentation (see above) |
| |
| |
| ** Build instructions (required read): |
| -------------------------------------- |
| |
| From the MADlib root directory, execute the following commands: |
| |
| ./configure |
| cd build/ |
| make |
| |
| To build the user-level documentation using doxygen, run: |
| |
| make doc |
| |
| The developer documentation can be built by running `make devdoc` instead. |
| |
| Optionally, install MADlib with |
| |
| make install |
| |
| If your are missing a required library, the `./configure` or `make` step will |
| notice. Refer to your operating system's manual for instructions how to install |
| the above prerequisites. |
| |
| |
| Notes: |
| ------ |
| |
| - To speed things up, run `make -j X` instead of `make` where X is the number of |
| jobs (commands) to run simultaneously. A good choice is the number of |
| processor cores in your machine. |
| - MADlib depends on the linear-algebra library Armadillo. We always build it |
| during as part of our own build process. On all platforms except Mac OS X, we |
| install the armadillo shared library inside the MADlib directory. (The |
| Armadillo shared library is a mere umbrella library for the lower-level maths |
| libraries LAPACK, BLAS, ...) |
| |
| |
| Building an installation package (RPM, Package Maker, ...) |
| ---------------------------------------------------------- |
| |
| To create a binary installation package, run the following sequence of commands: |
| |
| ./configure |
| cd build |
| make doc |
| make package |
| |
| To create a complete installation package (for all supported DBMSs, equivalent |
| to what is offered on the MADlib web site), make sure that the build process is |
| able to locate the DBMS installations. For complete control, run `./configure |
| -DPOSTGRESQL_PG_CONFIG=/path/to/greenplum/pg_config |
| -DGREENPLUM_PG_CONFIG=/path/to/postgresql/pg_config` instead of just |
| `./configure`. |
| |
| |
| Configuration Options: |
| ---------------------- |
| |
| Depending on the environment, `./configure` might have to be called with |
| additional configuration parameters. The following provides an overview of the |
| most important options. Look at `build/CMakeCache.txt` (relative to MADlib root |
| directory) for more options, after having run `cmake` the first time. |
| |
| - `CMAKE_BUILD_TYPE` (default: `RelWithDebInfo`) |
| |
| `Debug`, `Release`, `RelWithDebInfo`, or `MinSizeRel` |
| |
| - `CMAKE_PREFIX_PATH` (default: *empty*) |
| |
| List (separated by `;` without trailing space) of additional search |
| paths (for each `${PREFIX_PATH}` in `${CMAKE_PREFIX_PATH}`, binaries are |
| searched for in `${PREFIX_PATH}/bin`, headers are searched for in |
| `${PREFIX_PATH}/include`, etc.) |
| |
| For instance, if Boost header files are located under a non-standard |
| location like `/opt/local/include/boost`, run |
| `./configure -DCMAKE_PREFIX_PATH=/opt/local` (though |
| `-DCMAKE_PREFIX_PATH=/opt/local/include` works, too, in the case of Boost). |
| |
| - `CMAKE_INSTALL_PREFIX` (default: `/usr/local/madlib`) |
| |
| Prefix when installing MADlib with `make install`. All files will be |
| installed within `${CMAKE_INSTALL_PREFIX}`. |
| |
| - `POSTGRESQL_PG_CONFIG` (default: `$(command -v pg_config)`) |
| |
| Path to `pg_config` of PostgreSQL installation, which is used to determine |
| various PostgreSQL search paths. |
| |
| - `GREENPLUM_PG_CONFIG` (default: `/usr/local/greenplum-db/bin/pg_config` if |
| available, otherwise `$(command -v pg_config)`) |
| |
| Path to `pg_config` of Greenplum installation, which is used to determine |
| various Greenplum search paths. |
| |
| - `BOOST_TAR_SOURCE` (default: *empty*) |
| |
| If no recent version of Boost is found (>= 1.46), Boost is downloaded |
| automatically. Alternatively, the path to the (possibly gzip'ed) |
| tarball can be specified by calling `./configure` with |
| `-DBOOST_TAR_SOURCE=/path/to/boost_x.tar.gz` |
| |
| - `-DARMADILLO_TAR_SOURCE` (default: *empty*) |
| |
| Armadillo is downloaded automatically, unless the you call `./configure` |
| with `-DARMADILLO_TAR_SOURCE=/path/to/armadillo_x.tar.gz`, in which case |
| this tarball is used. |
| |
| |
| Debugging |
| ========= |
| |
| For debugging it is helpful to generate an IDE project (e.g., XCode) with cmake |
| and then connect to the running database process: |
| |
| 0. Generate XCode project with CMake (in MADlib root directory): |
| `mkdir -p build/Xcode && cd build/Xcode && cmake -G Xcode ../..` |
| 1. Add an executable in XCode that points to the postgres binary |
| (e.g., `/usr/local/bin/postgres`) |
| 2. Do a `select pg_backend_pid();` in psql |
| 3. Choose "Run" -> "Attach to Process" -> "Process ID..." in XCode and enter |
| the process ID obtained in psql |