DEBIAN-MATLAB-MEXHELPER(1)

NAME
debian-matlab-mexhelper - helper to build Matlab extensions on Debian

SYNOPSIS
debian-matlab-mexhelper [OPTIONS] <package name> <mode>

DESCRIPTION
The is a small helper that eases building and installing MEX extensions for Matlab toolbox packages in Debian binary packages. Because these packages cannot build-depend on Matlab (for obvious reasons) they need to compile their extensions at installation time using a local Matlab installation. The helper is somewhat flexible by supporting custom build, install and clean commands, as well as source and destination directories. It also deals with moving extensions into library directories and automatically symlinks them into the toolbox directory.

There are two major modes: 'install' to build, install and symlink extensions (useful in postinst) and 'clean' to remove installed extensions and symlinks (useful in prerm).

The command to build the extensions is invoked in the source directory. By default, this is /usr/src/matlab/<package name>, but can be overridden with the --src-dir option. Any optional 'install' (--install-cmd) and 'clean' (--clean-cmd) are invoked in the source directory too.

Moreover, this helper will also take any installed extensions from a default installation path /usr/share/matlab/site/m/<package name>, move them into /usr/lib/matlab/site/<package name> and symlink back to the original location. These locations can be configured with the --m-dir and --mex-dir options respectively. Again, this step is optional and is only performed if a package actually installs extensions inot this location.

OPTIONS
-h

    Print usage summary and option list.

--help

    Print full help.

--version

    Print version information and exit.

--build-cmd

    Command to build the extensions in the source directory

--install-cmd

    Command to install the extensions after building

--clean-cmd

    Command to clean the source tree after installation. This is not the command that is executed in 'clean' mode.

--src-dir

    Directory with the extension sources. This is also the directory in which build, install and clean commands get invoked.

--mex-dir

    Target directory into which binary extensions get moved.

--m-dir

    Target directory in which symlinks to binary extensions get created.

--make

    Set default commands for 'build-cmd' (make), 'install-cmd' (make install DESTDIR=$m_dir) and 'clean-cmd' (make distclean) if no specific command has been provided via the respective options.

EXAMPLES
The following call can be used in a package's postinst script if it comes with a Matlab script 'build_matlab.m' that builds and installs its extension into the desired locations. The --src-dir option is used to point to a non-standard location of the extension sources.

debian-matlab-mexhelper somepackagename install
    --src-dir /usr/src/dynare-matlab/mex/sources --build-cmd 'matlab -nodesktop -nodisplay -nojvm -r build_matlab'

If a package installs extension sources into the standard location and builds its extensions using a Makefile that support the DESTDIR for installing the built extensions and a 'distclean' target it is sufficient to run the following.

    debian-matlab-mexhelper somepackagename install --make

Otherwise it is also possible to fully customize all commands.

debian-matlab-mexhelper difficultpackage install
    --build-cmd 'make -C src all toolbox MEXBIN="matlab-mex"' --install-cmd 'make -C src install && find . ! -wholename "./src" -name "*.mex?*" -print0 | xargs -0 -I {} cp -v --parent {} /usr/share/difficultpackage' --clean-cmd 'make -C src distclean toolbox-distclean && find . -name "*.mex?*" -delete'

If a package uses debian-matlab-mexhelper to install extensions into the standard location it can also be used to remove all MEX extensions and created symlinks when a package is removed from a system. To achieve this simply put the following call into a package's prerm script.

    debian-matlab-mexhelper packagename clean

AUTHOR
Written by Michael Hanke.

COPYRIGHT
Copyright © 2010-2011 Michael Hanke <michael.hanke@gmail.com>

Licensed under GNU General Public License version 3 or later.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.