Setting up musrfit on Different Platforms

1 Supported Operating Systems and Software Requirements

This page is intended to demonstrate for the interested user which steps are necessary to set up the free software μSR data analysis framework musrfit. While the preferred way is to run the software on GNU/Linux, with some restrictions it can also be set up under MS Windows and MacOS X. In case musrfit should be installed according to the description found on this page, the user is strongly encouraged to read completely each section dealing with the present installation step before starting the installation process!

Apart from GCC, the GNU Compiler Collection, the GNU build tools autoconf, automake and libtool as well as the helper tool pkg-config musrfit requires the installation of a few open-source libraries and programs:
boost C++ libraries
The powerful Spirit parser framework used by musrfit is included in that collection of libraries. Required version ≥ 1.33
GNU Scientific Library
A numerical C and C++ library which provides efficient implementations of various mathematical routines. Required version ≥ 1.9
FFTW
A C implementation for the fast computation of discrete Fourier transforms. Required version ≥ 3.1
ROOT
A C++ data analysis framework developed at CERN. Required version ≥ 5.22
libxml2
The XML C parser and toolkit of Gnome. Required version ≥ 2.0

Additionally, only if musrfit should support reading of data files in the NeXus format the following libraries are needed:
HDF4
A library and multi-object file format for storing and managing data.
HDF5
A data model, library, and file format for storing and managing data.
minixml
A small XML library that can be used to read and write XML and XML -like data files. Required version ≥ 2.2
NeXus
A common data format for neutron, x-ray, and muon science.

If optionally the editor and graphical user interface musrgui / musredit is going to be installed there is one further requirement:
Qt
A cross-platform application and user interface framework. Required version ≥ 3.3 & ≪ 4.0 (musrgui) OR ≥ 4.6 (musredit)

Each of the following sections focusing on the installation of musrfit on the different operating systems will also give a brief introduction on the installation of the requirements before the actual musrfit installation is described.

2 OS Restrictions

Before the further installation will be described, please note the following restrictions:
GNU/Linux
No serious problems are known at the moment.
MS Windows
The setup of musrfit (including the requirements) using Visual C++ has not been tested. If anybody likes to do this: Just go ahead and have fun! However, not very much assistance can be expected, although it would be an interesting experiment.
Mac OS X
On 10.6 Snow Leopard Qt3 for Mac is not supported any more since this was based on a 32-bit only API. Snow Leopard -users are advised to use the Qt4 based musredit or to rely on the standard Qt3 version for X11 in order to run musrgui.

3 GNU/Linux

3.1 Requirements

3.1.1 Everything but ROOT and NeXus

Depending on the GNU/Linux distribution chosen, the above mentioned software—except the ROOT system and the NeXus library—should be available from the distributor and could be easily installed in the form of binary packages. If done in this way there should be taken care of installing both, the libraries and the header (dev, devel) files.
On a Scientific Linux (Red Hat) system the following command executed as superuser from the shell will do the trick:
yum install boost boost-devel gsl gsl-devel fftw3 fftw3-devel libxml2 libxml2-devel qt qt-devel
When dealing with a distribution that uses the dpkg/apt package manager like Debian or Ubuntu the installation would look like:
apt-get install libboost-dev gsl-bin libgsl0-dev fftw3 fftw3-dev libxml2 libxml2-dev libqt3-mt libqt3-mt-dev qt3-dev-tools
Everyone should know best himself which is the way to install distribution software on the chosen distribution wink

In case the distribution does not include the required software it has to be compiled from the source files which normally means to download the source code from the corresponding website, to unpack the source tree and call the following from the shell:
./configure
make
make install
In order to obtain some information about the possible options for the installation, calling ./configure --help might give some useful hints.
For any further information on the standard installation of software, please refer to the web search engine of choice and ask for "install software on linux"...

3.1.2 Installation of NeXus requirements (optional)

Only if musrfit should support reading data files in the NeXus format the further required software has to be set up. The required libraries and header files could either be available through the user's GNU/Linux distribution or if this is not the case, the packages can be installed from the source code. E.g. on Red Hat-like systems binary packages for MXML, HDF4, and HDF5 might be called mxml, mxml-devel, hdf, hdf-devel, hdf5, hdf5-devel, on Debian-like systems libmxml1, libmxml-dev, libhdf4-0, libhdf4-dev, libhdf5-serial-1.8.4, libhdf5-serial-dev.

Even though there might exist binary packages for the NeXus library, it is best to build and install it directly from the source code which can be found here.

3.1.3 ROOT

The ROOT system may or may not be part of the GNU/Linux distribution. If it is, it should be checked that the provided binaries are of a recent version and then these in principle can be installed using a package manager as described above.
In case the distribution provides no or only outdated binary packages there are the following possibilities:
  • Visit the ROOT web page and download the packed precompiled binary version matching best the GNU/Linux distribution. Then unpack the bundle to its final destination.
  • If there is no precompiled binary version of ROOT available for your system or e.g. ROOT should be compiled with another version of GCC visit the web page and download the 'complete source tree for all systems'. Then unpack this source tree to its destination (e.g. /opt/root-system)(1), configure(2) it (here using the minimal set of options) and compile it as follows right below:
    cd /opt/root-system
    ./configure linux --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
                (or in case of a 64 bit installation: ./configure linuxx8664gcc --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml)
    make
                (or in case there are multiple processors available, e.g.: make -j4)
    
After one of the two setup variants has been executed the system should be told where to find the ROOT installation, therefore the following is suggested:
  • As superuser create a file /etc/ld.so.conf.d/root-system.conf where the path to the lib directory of ROOT is added and call /sbin/ldconfig afterwards. In the example mentioned above one way of doing this is:
    echo "/opt/root-system/lib" >> /etc/ld.so.conf.d/root-system.conf
    /sbin/ldconfig
    
  • Additionally, as normal user one should append the following lines to the ~/.bashrc and/or ~/.bash_profile (and then either restart the shell or call the same commands once more from the shell) in order to change some path-setting environment variables:
    export ROOTSYS=/opt/root-system/
    export PATH=$ROOTSYS/bin:$PATH
    

3.2 musrfit

When all required software has been set up it can be proceeded with the musrfit installation. First, the most recent source code should be downloaded. The preferred way of doing so is to check out directly the subversion repository (if clients of subversion and ssh are installed). Assuming the code should be located in ~/musrfit this is achieved most easily calling from the terminal
cd
svn co svn+ssh://svn@savannah.psi.ch/repos/nemu/lem/trunk/analysis/musrfit musrfit
When asked (twice) for a password, type "svn". If the repository had been checked out already before, one can update the local copy using:
cd
svn up musrfit

As an alternative (if subversion is not available), the source code can also be downloaded and extracted from a tarball.
cd
curl http://savannah.psi.ch/viewcvs/trunk/analysis/musrfit.tar.gz -G --data-binary root=nemu%2Flem | tar xz

After the source-code extraction the autogen.sh script is called to prepare the build environment. If it has been executed successfully the configure script should be ready to collect all the information needed to create the Makefiles. If musrfit should support NeXus data files this has to be enabled by specifying the --enable-NeXus switch when calling configure. For an overview of all available options just call ./configure --help. Besides the standard options there are a few special options which should be mentioned here:

--prefix
Specify the installation prefix, e.g. /opt/root-system (by default: /usr/local)
--with-rootsys
Specify the top of the ROOT installation directory, e.g. /opt/root-system
--with-fftw3
Specify the prefix of the FFTW3 installation. e.g. /usr/local or /usr
--with-gsl
Set the prefix of the GSL installation, e.g. /usr/local or /usr
--with-boostinc
Set the path to the header files of the Boost installation, e.g. /usr/local/include or /usr/include
--with-hdf4
Set the prefix of the HDF4 installation, e.g. /usr/local (only useful in conjunction with the NeXus support)
--with-hdf5
Set the prefix of the HDF5 installation, e.g. /usr (only useful in conjunction with the NeXus support)
--with-nexus
Set the prefix of the NeXus installation, e.g. /usr/local (only useful in conjunction with the NeXus support)
--disable-omp
Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2)

Normally it should not be necessary to make use of any of the options except for specifying the installation path with --prefix. The other paths should be detected automatically. If this does not work for some reason the configure script will terminate and ask for the information. When the configure script has been called successfully everything is ready for building the musrfit libraries and executables. A standard installation sequence (without NeXus support) might then look like(3):
cd musrfit
sh autogen.sh
./configure --prefix=$ROOTSYS
make
make install
/sbin/ldconfig                                   (as superuser)
In order to finish the installation of musrfit two more things should be done:
  • Define the MUSRFITPATH environment variable containing the path to the musrfit executables and XML files. E.g. if the location of the example above is used append the following line to the ~/.bashrc and ~/.bash_profile (and then either restart the shell or call the same commands once more from the shell):
    export MUSRFITPATH=/opt/root-system/bin
    
  • Adjust the paths where musrfit will search for data files in the installed musrfit_startup.xml. For detailed information on this XML file refer to the manual.

3.3 musredit

If Qt4.6 or higher is set up on the machine the installation of the musrfit editor is also straight forward:
cd src/musredit
qmake musredit.pro
If everything went fine musredit can be compiled and installed:
make
make install
In case one does not like the executable musredit to be copied to the default installation directory $ROOTSYS/bin the last "make install" can be skipped and the executable can be copied somewhere else instead. However, the musredit_startup.xml should go to the installation directory MUSRFITPATH of the musrfit executables. Eventually, in the installed musredit_startup.xml the path specifications should be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual.

3.4 musrgui

If Qt4.6 or higher is not available but Qt3 is set up musrgui can be installed. For this please follow the instructions for the musredit installation where simply every musredit occurrence has to be replaced by musrgui.
If there are problems during the qmake step, e.g. "uic: File generated with too old version of Qt Designer", this most probably means the Qt4 version of qmake is being used. In order to use the Qt3 version it should be enough to specify the full path to its location when calling it. Within the most GNU/Linux distributions this location will be something like /usr/lib/qt-3.3/bin/qmake.

3.5 Check of the installation

In order to perform a quick test for finding out if the installation has been completed successfully, a few msr files together with the corresponding data files can be found in the musrfit source tree at doc/examples/.
If musrgui has been installed, just open one of the test-*.msr files in the editor and test the musrfit functionalities. Otherwise, if only the terminal should be used, as an initial test for instance the following could be done:
cd doc/examples
musrview test-histo-ROOT-NPP.msr

Notes

1 : In case only a single user is working at the machine it might be considerable to change the ownership of the ROOT folder so that the user has easy write access to this directory:
chown username:username /opt/root-system/ -R

2 : When using GCC ≥ 4.2 please make sure that the environment variables USE_PARALLEL_MINUIT2 and USE_OPENMP are not set! Otherwise MINUIT2 will be compiled with parallelization support and cannot be used together with musrfit afterwards since the musrfit code is not fully thread-safe! When compiled with GCC ≥ 4.2 musrfit itself will parallelize the χ2 calculation.

3 : In case the normal user has no write permissions to the $ROOTSYS and the installation path the "make install" commands have to be executed as superuser.


4 MS Windows

Under Windows a native installation is not supported but there is the possibility to run musrfit through Cygwin which has the great advantage that one gains additionally various nice UNIX tools also for other purposes wink
Please also be aware of the fact that the X server which is going to be installed with Cygwin has to be started (e.g. by selecting it from the "Programs" folder) before any graphical application (musrview, musrgui, etc.) is run.

One more advice: Please never try to install either ROOT or musrfit from or to a directory containing spaces in the absolute path or in case you do, do not wonder if some errors occur!
msr files, however, might be saved in such directories like ...\My Documents\...

4.1 Requirements

4.1.1 Setting up Cygwin

For the start go to the Cygwin website, download the setup file and use it to install Cygwin 1.7. During the installation process you will be asked where you want to install Cygwin and normally the default choice should just be fine. At some point you will be asked which packages should be installed—make sure that you choose at least the following (or packages with revisions close to the following) in order to fulfill the musrfit requirements and be able to work with this base system:

a2ps, alternatives, autoconf, automake, base-cygwin, base-files, base-passwd bash, bash-completion, bc, binutils, bison, boost, boost-devel, bzip2, cmake, colorgcc, coreutils, curl, cygutils, cygwin, editrights, fftw3, findutils, flex, font-adobe-dpi100, font-adobe-dpi75, font-alias, font-bitstream-dpi100, font-bitstream-dpi75, font-encodings, font-ibm-type1, font-sun-misc, font-util, font-xfree86-type1, fontconfig, freeglut, gawk, gcc-tools-autoconf, gcc-tools-automake, gcc4, gcc4-core, gcc4-fortran, gcc4-g++, gccmakedep, gd, gettext, ghostscript, ghostscript-fonts-std, giflib, gmp, grep, groff, gsl, gsl-apps, gsl-devel, gv, gzip, inputproto, jasper, jpeg, lapack, less, libboost, libbz2_1, libcharset1, libcurl4, libfftw3-devel, libfftw3_3, libgcc1, libgd-devel, libgif-devel, libGL-devel, libGL1, libGLU-devel, libGLU1, libglut-devel, libglut3, libgmp-devel libgmp3, libgomp1, libICE-devel, libICE6, libjpeg-devel, libjpeg62, liblapack-devel, libmpfr-devel, libmpfr1, libncurses-devel, libncurses9, libOSMesa-devel, libOSMesa7, libpng, libpng14, libpng14-devel, libreadline6, libSM-devel, libSM6, libssh2_1, libstdc++6, libstdc++6-devel, libtiff-devel, libtiff5, libtool, libX11-devel, libX11_6, libXau-devel, libXau6, libXaw7, libxcb-devel, libxcb-xlib-devel libXcursor-devel, libXcursor1, libXdmcp-devel, libXdmcp6, libXext-devel, libXext6, libXfixes-devel, libXfixes3, libXfont-devel, libXfont1, libXft-devel, libXft2, libXi-devel, libXi6, libxkbfile1, libxml2, libxml2-devel, libXmu-devel, libXmu6, libXpm-devel, libXpm4, libXrender-devel, libXrender1, libXt-devel, libXt6, login, m4, make, makedepend, man, mpfr, nano, opengl, openssh, openssl, pdftk, perl, ping, pkg-config, psutils, python, qt3, qt3-bin, qt3-devel, readline, rebase, rgb, rsync, run, screen, sed, subversion, tar, tcltk, terminfo, unzip, util-linux, vim, w32api, which, X-start-menu-icons, xauth, xextproto, xfontsel, xinit, xkbcomp, xkeyboard-config, xkill, xlogo, xlsfonts, xorg-cf-files, xorg-scripts, xorg-server, xproto, xrdb, xrefresh, xset, xterm, zip, zlib, zlib-devel, zlib0, libQt3Support4-devel, libQtAssistantClient4-devel, libQtCore4-devel, libQtDBus4-devel, libQtDesigner4-devel, libQtGui4-devel, libQtHelp4-devel, libQtNetwork4-devel, libQtOpenGL4-devel, libQtScript4-devel, libQtScriptTools4-devel, libQtSql4-devel, libQtSvg4-devel, libQtTest4-devel, libQtWebKit4-devel, libQtXml4-devel, libQtXmlPatterns4-devel

After these installations already most of the required software is present and the Cygwin shell can be started now for the further steps! Inside the shell the POSIX naming convention applies, therefore, paths will be given with separating / instead of \ in DOS. The file structure accessible through this shell can also be accessed through the Windows Explorer—just go to the directory which you specified as "cygwin root" during the installation: this is the equivalent to / in the shell. By default, the different hard drives or network shares like C:\ can be found at /cygdrive/c/ in the shell—the cygdrive prefix can in principle also be changed but for now we stick to the default.

Since later on the boost header files should be used and in the standard Cygwin installation these are found at a version specific location, the later handling will be easier if a symbolic link to these files is created now in the terminal (in case it had not been present before):
ln -sf /usr/include/boost-x_yy_z/boost /usr/include/boost
where x_yy_z has to be substituted by the correct version number, e.g. 1_33_1.

4.1.2 Installation of NeXus requirements (optional)

Only if musrfit should support reading data files in the NeXus format the further required software has to be set up. Under Cygwin of all the required libraries only HDF5 is available. The packages hdf5 and libhdf5-devel can be installed through the Cygwin setup. One should also make sure that bison, flex and a package containing /usr/lib/librpc.a (e.g. sunrpc = 4.0-3, but not sunrpc = 4.0-4) are installed.

All other libraries have to be built from the sources. The following lines will track the installation of JPEG 6b, MXML 2.5, HDF 4.2.5, and NeXus 4.2.1. The version numbers and source-code locations might of course change with time but should be easily adjustable.
cd
mkdir nexus
cd nexus
curl http://www.hdfgroup.org/ftp/lib-external/jpeg/src/jpegsrc.v6b.tar.gz -G | tar xz
cd jpeg-6b
./configure --prefix=/usr/local --enable-static
make
make install
cd ..
curl http://ftp.easysw.com/pub/mxml/2.5/mxml-2.5.tar.gz -G | tar xz
cd mxml-2.5
./configure --prefix=/usr/local --enable-static
make
make install
cd ..
curl http://www.hdfgroup.org/ftp/HDF/HDF_Current/src/hdf-4.2.5.tar.gz -G | tar xz
cd hdf-4.2.5
./configure --prefix=/usr/local --enable-static --disable-fortran --with-jpeg=/usr/local
make
make install
cd ..
curl http://download.nexusformat.org/kits/nexus-4.2.1.tar.gz -G | tar xz
cd nexus-4.2.1
./configure --prefix=/usr/local --with-hdf4=/usr/local --with-hdf5=/usr --with-xml=/usr/local
make
make install

4.1.3 ROOT

In order to install the ROOT system, there are two possibilities:
  • Download the precompiled Cygwin GCC 4.3 package of the most recent ROOT version from the web page and unpack it in a Cygwin shell (in order to get the line endings correctly) at the final location. Suppose the package has been downloaded to C:\ and the ROOT tree should be in C:\root, this is achieved by:
    cd /cygdrive/c
    tar xzf root_v5.xx.yy.win32gcc-gcc-4.3.tar.gz
    
  • If due to some reason there was no precompiled Cygwin GCC 4.3 package available or ROOT should be built from source, one has to visit the web page, download the 'complete source tree for all systems' and save it for instance in C:\.
    Then go to the Cygwin shell and unpack this source tree, configure(2) it (here using the minimal set of options) and compile it as follows right below:
    cd /cygdrive/c
    tar xzf root_v5.xx.yy.source.tar.gz
    cd root
    ./configure win32gcc --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    make
    

In order to finalize the ROOT installation and to prepare already the installation of musrfit and musredit this is a good time for setting necessary environment variables for the use in Cygwin. For accomplishing that put the following lines at the end of the /home/Username/.bashrc (C:\cygwin\home\Username\.bashrc for the user "Username" and the "cygwin root" at "C:\cygwin"):
export DISPLAY=:0.0
export QTDIR=/usr/lib/qt4
export ROOTSYS=/cygdrive/c/root
export PATH=$ROOTSYS/bin:$QTDIR/bin:/usr/i686-pc-cygwin/bin:$PATH
export MUSRFITPATH=$ROOTSYS/bin

Afterwards close the Cygwin shell and reopen it again for the installation of musrfit.

4.2 musrfit

First, the most recent source code should be downloaded. The preferred way of doing so is to check out directly the subversion repository (if clients of subversion and ssh are installed). Assuming the code should be located in ~/musrfit this is achieved most easily calling from the terminal
cd
svn co svn+ssh://svn@savannah.psi.ch/repos/nemu/lem/trunk/analysis/musrfit musrfit
When asked (twice) for a password, type "svn". If the repository had been checked out already before, one can update the local copy using:
cd
svn up musrfit

As an alternative (if subversion is not available), the source code can also be downloaded and extracted from a tarball.
cd
curl http://savannah.psi.ch/viewcvs/trunk/analysis/musrfit.tar.gz -G --data-binary root=nemu%2Flem | tar xz

After the source-code extraction the autogen.sh script is called to prepare the build environment. If it has been executed successfully the configure script should be ready to collect all the information needed to create the Makefiles. If musrfit should support NeXus data files this has to be enabled by specifying the --enable-static --enable-NeXus switches when calling configure. For an overview of all available options just call ./configure --help. Besides the standard options there are a few special options which should be mentioned here:

--prefix
Specify the installation prefix, e.g. /opt/root-system (by default: /usr/local)
--with-rootsys
Specify the top of the ROOT installation directory, e.g. /opt/root-system
--with-fftw3
Specify the prefix of the FFTW3 installation. e.g. /usr/local or /usr
--with-gsl
Set the prefix of the GSL installation, e.g. /usr/local or /usr
--with-boostinc
Set the path to the header files of the Boost installation, e.g. /usr/local/include or /usr/include
--with-hdf4
Set the prefix of the HDF4 installation, e.g. /usr/local (only useful in conjunction with the NeXus support)
--with-hdf5
Set the prefix of the HDF5 installation, e.g. /usr (only useful in conjunction with the NeXus support)
--with-nexus
Set the prefix of the NeXus installation, e.g. /usr/local (only useful in conjunction with the NeXus support)
--disable-omp
Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2)

Normally it should not be necessary to make use of any of the options except for specifying the installation path with --prefix. The other paths should be detected automatically. If this does not work for some reason the configure script will terminate and ask for the information. When the configure script has been called successfully everything is ready for building the musrfit libraries and executables. A standard installation sequence (without NeXus support) might then look like:
cd musrfit
sh autogen.sh
./configure --prefix=$ROOTSYS
make
make install
In order to finish the installation of musrfit the paths where musrfit searches for data files should be adjusted in the installed musrfit_startup.xml (/cygdrive/c/root/bin/musrfit_startup.xml or C:\root\bin\musrfit_startup.xml). The paths have to obey the POSIX naming convention. For detailed information on this XML file refer to the manual.

4.3 musredit

If Qt4.5 is set up on the machine the installation of the musrfit editor is also straight forward:
cd src/musredit
qmake-qt4 musredit.pro
If everything went fine musredit can be compiled and installed:
make
make install
Eventually, in the installed musredit_startup.xml (/cygdrive/c/root/bin/musredit_startup.xml or C:\root\bin\musredit_startup.xml) the path specifications should be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual.


In case one likes to get the editor started just with starting the X server from the Windows start menu the file ~/.startxwinrc with the following contents can be created:
#!/bin/sh

export DISPLAY=:0.0
export QTDIR=/usr/lib/qt4
export ROOTSYS=/cygdrive/c/root
export PATH=$ROOTSYS/bin:$QTDIR/bin:/usr/i686-pc-cygwin/bin:$PATH
export MUSRFITPATH=$ROOTSYS/bin

musredit &

4.4 musrgui

If Qt4.5 is not available but Qt3 is set up musrgui can be installed. For this please follow the instructions for the musredit installation where simply every musredit occurrence has to be replaced by musrgui, and qt4 is replaced by qt3.

4.5 Check of the installation

In order to perform a quick test for finding out if the installation has been completed successfully, a few msr files together with the corresponding data files can be found in the musrfit source tree at doc/examples/.
If musrgui has been installed, just open one of the test-*.msr files in the editor and test the musrfit functionalities. Otherwise, if only the terminal should be used, as an initial test for instance the following could be done:
cd doc/examples
musrview test-histo-ROOT-NPP.msr

4.6 Possible problems

It might be that especially when running on Windows 7 musredit and musrgui produce errors like a "STATUS_ACCESS_VIOLATION". In this case, try to do the following: Close all Cygwin programs (including the terminals and X server) and run from a Windows command prompt (cmd)
C:\cygwin\bin\ash.exe /bin/rebaseall
If this does not resolve the problem, try to change the compatibility settings of C:\cygwin\bin\sh.exe and C:\cygwin\bin\bash.exe so that they are executed with administrator privileges.

5 Mac OS X

With Mac OS X the situation is up to some extent similar like on MS Windows but still different since Mac OS X is a UNIX system. The similarity is that also on OS X a helping framework—either MacPorts or Fink—which provides open-source software is employed to fulfill the basic software requirements of musrfit. In the following, both possibilities (using MacPorts or Fink) are described but it is emphasized here that it should be followed only one of the possible routes.

5.1 Requirements (MacPorts)

5.1.1 Everything but ROOT and NeXus

Before proceeding with the usage of the MacPorts system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed:
Xcode tools
Useful developer tools including for instance the GNU compiler collection
X11
The X-window system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard)

After installing the Xcode tools go to the MacPorts install page, download the installer for your system and follow the installation instructions on the page. By default the MacPorts system will be installed in /opt/local.
To be sure that the newest version of the software is used a MacPorts upgrade should be performed by typing in a terminal:
sudo port -v selfupdate

Remark: MacPorts uses rsync in order to synchronize the list of available packages. It frequently happens that this service is blocked by firewalls. In this case it should be possible to download a local version of the package repository and do the synchronization. If this step becomes necessary (and only then) it can be done in the following way:
  1. Get a local version of the repository:
    svn co http://svn.macports.org/repository/macports/trunk/dports ~/dports
    
  2. Edit the file /opt/local/etc/macports/sources.conf: At the end of the file, comment the line beginning with "rsync://" and add a new line pointing to your local copy, e.g.
    file:///Users/username/dports
    
  3. Synchronize the packages:
    sudo port -v -d sync
    

Then the MacPorts system should be set up and can be used to install additional software.
The installation of the software mentioned above is then done in the terminal:
sudo port -v install pkgconfig autoconf automake libtool fftw-3 fftw-3-single gsl boost libxml2 qt3-mac
Under OS X 10.6 Snow Leopard it will not be possible to install qt3-mac since the system is by default a 64-bit system and the old qt3-mac depends on software which is only available for 32-bit systems. It is suggested to install qt4-mac instead and use musredit. (It would also be possible to install the qt3 port instead; the disadvantage is that the qt3 version does not support Apple's aqua style and a great deal of additional software has to be installed to meet its dependencies. At the moment this seems to be the only possibility to get musrgui running on OS X 10.6.)

5.1.2 Installation of NeXus requirements (optional)

Only if musrfit should support reading data files in the NeXus format the further required packages are set up:
sudo port -v install jpeg6b hdf4 hdf5-18
Unfortunately, the minixml and NeXus libraries have to be compiled and installed directly from the source code. Given the respective version numbers of 2.5 and 4.2.1 (which are subject to change with time) this can be achieved for example by:
cd
curl http://ftp.easysw.com/pub/mxml/2.5/mxml-2.5.tar.gz -G | tar xz
cd mxml-2.5
./configure --prefix=/usr/local
make
sudo make install
cd ..
curl http://download.nexusformat.org/kits/nexus-4.2.1.tar.gz -G | tar xz
cd nexus-4.2.1
./configure --prefix=/usr/local
make
sudo make install

5.1.3 ROOT

For installing the ROOT system there are two independent possibilities:
  • Visit the ROOT web page and download the packed precompiled binary version matching the OS X version. Then unpack the bundle to its final destination (e.g. /opt/root-system).
  • If there is no precompiled binary version of ROOT available for your system or e.g. ROOT should be compiled with another version of GCC visit the web page and download the 'complete source tree for all systems'. Then unpack this source tree to its destination (e.g. /opt/root-system). In case only a single user is working at the machine it might be considerable to change the ownership of the ROOT folder so that the user ("username" in the example) has easy write access to this directory:
    sudo chown -R username:staff /opt/root-system/ 
    Finally, ROOT can be configured (here using the minimal set of options) and compiled as stated right below:
    cd /opt/root-system
    ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    make
    

In order to finalize the ROOT installation and to prepare already the installation of musrfit and musrgui / musredit this is a good time for setting necessary environment variables for the use in Mac OS X. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file ~/.MacOSX/environment.plist and re-login:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>MUSRFITPATH</key>
        <string>/opt/root-system/bin</string>        (where to find the musrfit executables)
        <key>QTDIR</key>
        <string>/opt/local/lib/qt3mac</string>       (where to find Qt3 (for musrgui) or Qt4 (for musredit))
        <key>ROOTSYS</key>
        <string>/opt/root-system</string>            (where to find the ROOT system)
</dict>
</plist>

Additionally, one might want to put a line in ~/.profile (or ~/.bash_profile) to look for executables also in the ROOT and Qt binary directories:
export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH

5.2 Requirements (Fink)

5.2.1 Everything but ROOT and NeXus

Before proceeding with the usage of the Fink system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed:
Xcode tools
Useful developer tools including for instance the GNU compiler collection
X11
The X-window-system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard)

After installing the Xcode tools go to the Fink download page, download the installer for your system and follow the installation instructions on the page. By default the Fink system is installed in /sw. After the basic setup make sure that in /sw/etc/fink.conf the line starting with Trees: reads like:
Trees: local/main stable/main stable/crypto unstable/main
After applying the changes above to the configuration file, the Fink core system should be upgraded to its newest version by typing in a terminal:
sudo fink selfupdate
Then the Fink system should be set up and can be used to install additional software.
The Fink installer package also contains a graphical user interface called FinkCommander and it is suggested to use that for installing the following packages (or packages with revisions close to the following)—it is necessary to compile a few packages from source since no binary packages are available, however, this is done automatically by the FinkCommander after you have chosen the software packages for installation:

autoconf automake boost1.41.nopython boost1.41.nopython-shlibs fftw3 fftw3-shlibs gsl gsl-shlibs libtool2 libtool2-shlibs libxml2 libxml2-bin libxml2-shlibs pkgconfig qt3mac qt3mac-shlibs

Under OS X 10.6 Snow Leopard it will not be possible to install qt3mac since the system is by default a 64-bit system and the old qt3-mac depends on software which is only available for 32-bit systems. It is suggested to install qt4mac instead and use musredit.

Also, due to some not fulfilled dependencies, it might not be possible to install FFTW3 through Fink. In this case (and ONLY in THIS case) simply download the FFTW3 source code from its download page and install it from a terminal using the following commands (for the FFTW version 3.x.y):
tar xz fftw-3.x.y
cd fftw-3.x.y
./configure --enable-single --enable-shared --enable-threads --prefix=/usr/local
make
sudo make install

Since later on the boost header files should be used and in the standard Fink installation these are found at a version specific location, the later handling will be easier if a symbolic link to this files is created now in the terminal (if it did not exist earlier), e.g.:
ln -sf /sw/include/boost-x_yy_z/boost /sw/include/boost
where x_yy_z has to be substituted by the correct version number, e.g. 1_41_0.

5.2.2 Installation of NeXus requirements (optional)

Only if musrfit should support reading data files in the NeXus format the further required packages can be installed through Fink:

libjpeg hdf hdf5-18 hdf5-18-shlibs

Unfortunately, the minixml and NeXus libraries have to be compiled and installed directly from the source code. Given the respective version numbers of 2.5 and 4.2.1 (which are subject to change with time) this can be achieved for example by:
cd
curl http://ftp.easysw.com/pub/mxml/2.5/mxml-2.5.tar.gz -G | tar xz
cd mxml-2.5
./configure --prefix=/usr/local
make
sudo make install
cd ..
curl http://download.nexusformat.org/kits/nexus-4.2.1.tar.gz -G | tar xz
cd nexus-4.2.1
./configure --prefix=/usr/local
make
sudo make install

5.2.3 ROOT

For installing the ROOT system there are some independent possibilities:
  • Visit the ROOT web page and download the packed precompiled binary version matching the OS X version. Then unpack the bundle to its final destination (e.g. /opt/root-system).
  • If there is no precompiled binary version of ROOT available for your system or e.g. ROOT should be compiled with another version of GCC visit the web page and download the 'complete source tree for all systems'. Then unpack this source tree to its destination (e.g. /opt/root-system). In case only a single user is working at the machine it might be considerable to change the ownership of the ROOT folder so that the user ("username" in the example) has easy write access to this directory:
    sudo chown -R username:staff /opt/root-system/ 
    Finally, ROOT can be configured (here using the minimal set of options) and compiled as stated right below:
    cd /opt/root-system
    ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml
    make
    
  • ROOT is also available through the FinkCommander! Install root5 or root5-devel. However, this versions also have to be compiled locally since there are no binary packages. The manual installation mentioned right above should be preferred in this case.

In order to finalize the ROOT installation and to prepare already the installation of musrfit and musrgui / musredit this is a good time for setting necessary environment variables for the use in Mac OS X. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file ~/.MacOSX/environment.plist and re-login:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>MUSRFITPATH</key>
        <string>/opt/root-system/bin</string>        (where to find the musrfit executables)
        <key>QTDIR</key>
        <string>/sw/lib/qt3mac</string>              (where to find Qt3 (for musrgui) or Qt4 (for musredit))
        <key>ROOTSYS</key>
        <string>/opt/root-system</string>            (where to find the ROOT system)
</dict>
</plist>

Additionally, one might want to put a line in ~/.profile (or ~/.bash_profile) to look for executables also in the ROOT and Qt binary directories:
export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH

5.3 musrfit

First, the most recent source code should be downloaded. The preferred way of doing so is to check out directly the subversion repository (if clients of subversion and ssh are installed). Assuming the code should be located in ~/musrfit this is achieved most easily calling from the terminal
cd
svn co svn+ssh://svn@savannah.psi.ch/repos/nemu/lem/trunk/analysis/musrfit musrfit
When asked (twice) for a password, type "svn". If the repository had been checked out already before, one can update the local copy using:
cd
svn up musrfit

As an alternative (if subversion is not available), the source code can also be downloaded and extracted from a tarball.
cd
curl http://savannah.psi.ch/viewcvs/trunk/analysis/musrfit.tar.gz -G --data-binary root=nemu%2Flem | tar xz

After the source-code extraction the autogen.sh script is called to prepare the build environment. If it has been executed successfully the configure script should be ready to collect all the information needed to create the Makefiles. If musrfit should support NeXus data files this has to be enabled by specifying the --enable-NeXus switch when calling configure. For an overview of all available options just call ./configure --help. Besides the standard options there are a few special options which should be mentioned here:

--prefix
Specify the installation prefix, e.g. /opt/root-system (by default: /usr/local)
--with-rootsys
Specify the top of the ROOT installation directory, e.g. /opt/root-system
--with-fftw3
Specify the prefix of the FFTW3 installation. e.g. /sw
--with-gsl
Set the prefix of the GSL installation, e.g. /sw
--with-boostinc
Set the path to the header files of the Boost installation, e.g. /sw/include
--with-hdf4
Set the prefix of the HDF4 installation, e.g. /sw (only useful in conjunction with the NeXus support)
--with-hdf5
Set the prefix of the HDF5 installation, e.g. /sw (only useful in conjunction with the NeXus support)
--with-nexus
Set the prefix of the NeXus installation, e.g. /usr/local (only useful in conjunction with the NeXus support)
--disable-omp
Switches off the OpenMP features of musrfit (parallelization of the χ2 calculation when compiled with GCC ≥ 4.2)

Normally it should not be necessary to make use of any of the options except for specifying the installation path with --prefix. The other paths should be detected automatically. If this does not work for some reason the configure script will terminate and ask for the information. When the configure script has been called successfully everything is ready for building the musrfit libraries and executables. A standard installation sequence (without NeXus support) might then look like:
cd musrfit
sh autogen.sh
./configure --prefix=$ROOTSYS
make
make install
In order to finish the installation of musrfit the paths where musrfit searches for data files should be adjusted in the installed musrfit_startup.xml ($ROOTSYS/bin/musrfit_startup.xml). For detailed information on this XML file refer to the manual.

5.4 musredit

If Qt4.6 or higher is set up on the machine the installation of the musrfit editor is also straight forward:
cd src/musredit
qmake musredit.pro
If everything went fine musredit can be compiled and installed:
make
make install
The last command copies musredit.app to the standard program directory /Applications and the musredit_startup.xml to $ROOTSYS/bin/musredit_startup.xml. Eventually, in the installed musredit_startup.xml the path specifications have to be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual.

5.5 musrgui

If Qt3 is set up the installation of the musrfit editor can be done as follows from within the shell:
cd src/musrgui
qmake musrgui.pro
make
make install
The last command copies musrgui.app to the standard program directory /Applications (4) and the musrgui_startup.xml to $ROOTSYS/bin/musrgui_startup.xml. Eventually, in the installed musrgui_startup.xml the path-specifications have to be adjusted to match the local musrfit installation. For detailed information on this XML file refer to the manual.

Under some circumstances it might happen, that if musrgui was called from Finder the necessary libraries for executing musrfit could not be found. In that case, the only workaround for the moment is to export the environment variable DYLD_LIBRARY_PATH in the shell and call musrgui from a terminal! In order to accomplish that, add the following lines to ~/.profile and call musrgui with the specified command (e.g. mgui):
export DYLD_LIBRARY_PATH=/opt/root-system/lib:/sw/lib:$DYLD_LIBRARY_PATH
alias mgui='/Applications/musrgui.app/Contents/MacOS/musrgui'

Notes

4 : In the case qt3-mac has not been installed, there will be no musrgui.app but only the executable musrgui which will be placed in the directory $ROOTSYS/bin and has to be called from the terminal.


5.6 Check of the installation

In order to perform a quick test for finding out if the installation has been completed successfully, a few msr files together with the corresponding data files can be found in the musrfit source tree at doc/examples/.
If musrgui has been installed, just open one of the test-*.msr files in the editor and test the musrfit functionalities. Otherwise, if only the terminal should be used, as an initial test for instance the following could be done:
cd doc/examples
musrview test-histo-ROOT-NPP.msr

-- BMW & AS


This topic: MUSR > WebHome > MusrFit > MusrFitSetup
Topic revision: r47 - 07 Aug 2011 - 16:10:00 - BastianWojek
 
Ideas, requests, problems regarding PSI Wiki? Send feedback