Compiling on macOS using Homebrew
What is homebrew and why use it
To quote from their website:
- easy to install
- does not need administrator privileges
- installs packages to their own directory and then symlinks their files into /usr/local
The formulas to install programs are called recipes and they make it possible to install several version of the same program (as well as HEAD of different Version Control Systems) at the same time which can then be symlinked. This makes it perfect for the purpose of in=stalling HEAD of GRASS GIS for testing purposes.
How to install GRASS GIS 7.1 SVN Head
I assume that homebrew is installed and working.
Different recipes are organized in so called taps which need to be added to homebrew by using brew tap command. The GRASS GIS 7.1 recipes are in the following github repo:
In addition, GRASS GIS has dependencies which can be found in the homebrew/science tap.
To add these two to homebrew, one has to use the commands
brew tap rkrug/head-only brew tap homebrew/science brew update
Finally, GRASS 7.1 SVN can be installed by
brew install grass-71
This should be it.
When using the option --with-liblas, it is possible that you get the following error:
checking whether to use libLAS... yes checking for liblas-config... /usr/local/opt/liblas/bin/liblas-config configure: error: *** Unable to locate libLAS library.
Thanks to Glynn Clements, there is a solution (see the mail on gmane): liblas was build against a non-installed gdal version.
The solution is simple: force homebrew to install from source, even when a bottle exists. So:
brew reinstall --build-from-source liblas
and try to install grass-71 again. Now it should work, even with the optin --with-liblas.
If this does not work, please leave comments at the issues page of the tap or at the grass-dev mailing list.
- There is an osgeo4mac which contains recipes for GRASS GIS 6.4 and 7.0 and other GIS tools - highly re=commendable tap!
- by running
brew test -v grass-71
you can run GRASS GIS tests but they are not implemented as they should be - work in progress.