debian-matlab-mexhelper(1) helper to build Matlab extensions on Debian


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


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.


Print usage summary and option list.


Print full help.


Print version information and exit.


Command to build the extensions in the source directory


Command to install the extensions after building


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


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


Target directory into which binary extensions get moved.


Target directory in which symlinks to binary extensions get created.


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.


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


Written by Michael Hanke.


Copyright © 2010-2011 Michael Hanke <[email protected]>

Licensed under GNU 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.