BBP on OS X Guide

From SCECpedia
Jump to navigationJump to search

Introduction

The Broadband Platform is compatible with Linux as well as OS X. However, due to some recent changes that Apple has made to their Xcode development tools, users on Mavericks (OS X 10.9) and Yosemite (OS X 10.10) will need to follow some additional steps to make the installation work. There are several installation issues or limitations related to the BBP on a Mac. The primary target operating system for BBP is Linux. Mac's OS is somewhat different environment, so installation on a Mac is a bit more complex.

The key Mac OS X-specific issues include:

  • Mac must have a full Python installation that includes NumPy, SciPy, matplotlib and other packages
  • Mac must have a gcc compiler environment, obtained through the XCODE software
  • Mac must have a gcc fortran compiler installed, not available in XCODE. If you follow the instructions given in the Mac Ports section below, it will required administrator account privileges because these will be required to install the fortran compiler in the default location.
  • Mac must have specialized Python language geographic project module pyproj installed
  • Currently, the SDSU BBToolbox software is not compatible with the Mac environment. The code will crash and as a result the SDSU method does not pass all Unit tests when compiled on a Mac. This is a known, Mac-specific issue. The SDSU method passes all tests in the target Linux environment. We will provide a resolution to this know limitation of the Mac-version of the BBP, as soon as one is available.

BBP 15.3.0 Installation on Mac OS X

This section describes the installation of the BBP 15.3.0 distribution on Mac OS X using a package management tool called Mac Ports. Mac Ports simplifies the installation process by automating several of the installation steps, but it will require administrator access unless you want to install it from the source (a few extra steps that we will not cover in this guide). If you prefer not to use Mac Ports in order to have greater flexibility in selecting the packages you would like to install, you can follow the directions provided by one developer who installed BBP 15.3.0 on his Mac OS X laptop without using Mac Ports. Details are provided in the BBP_on_OS_X_Guide_Without_Mac_Ports page.

The steps below will guide you through the installation of Mac Ports and the necessary C/Fortran GNU compilers in addition to the Python packages required by the Broadband Platform. At the end of this section, we provide information about running the Unit and Acceptance Tests available on the Broadband Platform, along with some Mac OS X-specific details.

OS X 10.9 Mavericks using MacPorts

Installing OS X on Mavericks is possible by following these steps:

  1. Install Xcode from the Mac App Store
  2. Install the Xcode command line tools. To do this, in your Terminal window, please type:
    $ sudo xcode-select --install
    A dialog box will pop-up asking if you want to install the command line tools. Please choose "OK" on this box.
  3. Accept Xcode license by typing:
    $ sudo xcodebuild -license
    Scroll to the end and then type 'agree'.
  4. Then install MacPorts from http://www.macports.org. MacPorts helps install the requirements to compile the Broadband Platform. The version of MacPorts we used was 2.3.3, please make sure you install the package for OS X 10.9 Mavericks
  5. Install GCC 4.8 using the following command:
    $ sudo port install gcc48
  6. ​​​​ Select the new compiler as the default compiler using the command:
    $ sudo port select gcc mp-gcc48
  7. Install the PIP package manager for Python, using the command:
    $ sudo easy_install pip
  8. Install PyProj, using the command:
    $ sudo pip install pyproj
  9. Compile the Broadband Platform by going into the src directory and typing "make"
  10. Continue the Installation Instructions on Broadband User Guide v15.3.0

OS X 10.10 Yosemite using MacPorts

In order to install the Broadband Platform on Yosemite, you must follow these steps:

  1. Install Xcode from the Mac App Store
  2. Install the Xcode command line tools. To do this, in your Terminal window, please type:
    $ sudo xcode-select --install
    A dialog box will pop-up asking if you want to install the command line tools. Please choose "OK" on this box.
  3. Accept Xcode license by typing:
    $ sudo xcodebuild -license
    Scroll to the end and then type 'agree'.
  4. Then install MacPorts from http://www.macports.org. MacPorts helps install the requirements to compile the Broadband Platform. The version of MacPorts we used was 2.3.3, please make sure you select the package for OS X 10.10 Yosemite
  5. Install GCC 4.9 using the following command:
    $ sudo port install gcc49
  6. Select the new compiler as the default compiler using the command:
    $ sudo port select gcc mp-gcc49
  7. Install the PIP package manager for Python, using the command:
    $ sudo easy_install pip
  8. Install PyProj, using the command:
    $ sudo pip install pyproj
  9. Compile the Broadband Platform by going into the src directory and typing "make"
  10. Continue the Installation Instructions on Broadband User Guide v15.3.0

Unit and Acceptance Tests for Mac OS X

Running Unit Tests

In order to run the unit tests, users should go to the tests directory and type:

$ ./UnitTests.py

The tests should begin and will take between 30-60 minutes to run, depending on your computer speed. At the end of each test, a "ok" should be printed if the test was successful. At the end, the program will print the number of tests that passed and the number of tests that failed. If a test has failed, first check that you have built the executables.You can rerun just the specific test that failed (test_<module>.py). If the test is still failing, also verify that you have the ref_data directory, since it contains the input and reference files. If you're looking for more information about the failure, you can consult the Unit Tests log file in $BBP_DATA_DIR/logs/unit_tests.log . If you can't determine the reason for the failure, contact support.

Please note that one of the SDSU components, BBToolbox, does not pass its Unit Test when running on a Mac OS X system. This is a known limitation of the current BBP release. You will see a message similar to:

test_bbtoolbox (test_bbtoolbox.Test_BBToolbox) ... /bin/sh: line 1:  6027 Abort trap: 6
/Users/maechlin/Documents/dev/bbp_2015/15.3.0/bbp/src/sdsu/bin/BBtoolbox.exe <
/Users/maechlin/Documents/dev/bbp_2015/bbp_data/tmpdata/9642805/bbtoolbox_test_stat/parfilename_test_stat >>
/Users/maechlin/Documents/dev/bbp_2015/bbp_data/logs/9642805/9642805.bbtoolbox_test_stat.log 2>&1
ERROR

This reduces the available number of ground motion methods that can be run on the Mac. On Linux, there are five methods available (GP, SDSU, UCSB, EXSIM, CSM). On a Mac, there are four methods available (GP, UCSB, EXSIM, CSM).

After running the unit tests, users can proceed to the acceptance tests below.

Running Acceptance Tests

To run the acceptance tests, users should:

$ ./AcceptTests.py

There will be one test for each method in the platform, for both the validation mode (historical events) and the scenario modes (hypotethical earthquakes). These tests will take somewhere between 2 and 3 hours to run, depending on how fast the computer is.

Since the acceptance tests can take a long time to run, you may wish to resume where you left off. This feature is supported automatically. If you do not wish to resume, delete the resume file in $BBP_DATA_DIR/logs/resume.txt. If there are any failure or errors while running the acceptance tests, consult the Troubleshooting section at the end of this user guide for known issues and their solutions.

When they're complete, the console will either print "OK" or how many tests failed. Acceptance test failures indicate that the modules are not integrated correctly. On Mac OS X, the SDSU codebase is not yet fully supported and will cause the 3 SDSU acceptance tests to fail. For the other tests, if a certain acceptance test fails, you can get more information by consulting the acceptance test logs in $BBP_DATA_DIR/logs/acceptance_test_logs/<test that failed>.log. If you can't determine the reason for the failure, contact support.

Here's the expected output when running on a Mac OS X, showing the three SDSU tests failing (which is expected for this release):

-bash-4.1$ ./AcceptTests.py 
Number of tests to run: 12
test_user-CSM (__main__.BBP2G_Acceptance_Tests) ... ok
test_user-EXSIM (__main__.BBP2G_Acceptance_Tests) ... ok
test_user-GP (__main__.BBP2G_Acceptance_Tests) ... ok
test_user-SDSU (__main__.BBP2G_Acceptance_Tests) ... /
/bin/sh: line 1: 56574 Abort trap: 6           /Users/fsilva/Work/svn/temp/15.3.0/bbp/src/sdsu/bin/BBtoolbox.exe <
/Users/fsilva/Work/svn/temp/bbp_sims/tmpdata/4047777/bbtoolbox_northridge_3_sta/parfilename_northridge_3_ sta >>
/Users/fsilva/Work/svn/temp/bbp_sims/logs/4047777/4047777.bbtoolbox_northridge_3_sta.log 2>&
FAIL
test_user-UCSB (__main__.BBP2G_Acceptance_Tests) ... ok
test_valid-northridge-CSM (__main__.BBP2G_Acceptance_Tests) ... ok
test_valid-northridge-EXSIM (__main__.BBP2G_Acceptance_Tests) ... ok
test_valid-northridge-GP (__main__.BBP2G_Acceptance_Tests) ... ok
test_valid-northridge-GP_seis (__main__.BBP2G_Acceptance_Tests) ... ok
test_valid-northridge-SDSU (__main__.BBP2G_Acceptance_Tests) ...
/bin/sh: line 1: 58755 Abort trap: 6           /Users/fsilva/Work/svn/temp/15.3.0/bbp/src/sdsu/bin/BBtoolbox.exe < 
/Users/fsilva/Work/svn/temp/bbp_sims/tmpdata/4049707/bbtoolbox_northridge_3_sta/parfilename_northridge_3_sta >> 
/Users/fsilva/Work/svn/temp/bbp_sims/logs/4049707/4049707.bbtoolbox_northridge_3_sta.log 2>&1
FAIL
test_valid-northridge-SDSU_seis (__main__.BBP2G_Acceptance_Tests) ...
/bin/sh: line 1: 58788 Abort trap: 6           /Users/fsilva/Work/svn/temp/15.3.0/bbp/src/sdsu/bin/BBtoolbox.exe <
/Users/fsilva/Work/svn/temp/bbp_sims/tmpdata/4050735/bbtoolbox_northridge_3_sta/parfilename_northridge_3_sta >> 
/Users/fsilva/Work/svn/temp/bbp_sims/logs/4050735/4050735.bbtoolbox_northridge_3_sta.log 2>&1
FAIL
test_valid-northridge-UCSB (__main__.BBP2G_Acceptance_Tests) ... ok

======================================================================
FAIL: test_user-SDSU (__main__.BBP2G_Acceptance_Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./AcceptTests.py", line 111, in permutation_test
    self.failIf(rc != 0, "Acceptance test failed to execute")
AssertionError: Acceptance test failed to execute

======================================================================
FAIL: test_valid-northridge-SDSU (__main__.BBP2G_Acceptance_Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
 File "./AcceptTests.py", line 111, in permutation_test
   self.failIf(rc != 0, "Acceptance test failed to execute")
AssertionError: Acceptance test failed to execute

======================================================================
FAIL: test_valid-northridge-SDSU_seis (__main__.BBP2G_Acceptance_Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./AcceptTests.py", line 111, in permutation_test
    self.failIf(rc != 0, "Acceptance test failed to execute")
AssertionError: Acceptance test failed to execute

----------------------------------------------------------------------
Ran 12 tests in 3647.739s

FAILED (failures=3)

Potential Additional Steps

One developer needed to run the following commands to make the Mac installation work. These are not needed on a clean installation but could be required to repair or upgrade an existing Mac OS X setup.

  • export PYTHONPATH=/Library/Python/2.7/site-packages/:$PYTHONPATH
  • sudo pip install scipy --upgrade
  • sudo pip install numpy --upgrade
  • sudo pip install matplotlib --upgrade

Related Entries