OSX 10.6.4 Snow Leopard

From NEOSYS Dev Wiki

Building Exodus on Mac is similar to building on Linux.

This build was performed on OSX 10.6.4 (Snow Leopard) on Macbook Pro

1 Installing C++ compiler

  1. Insert Mac OSX Install DVD
  2. Open Optional Installs folder
  3. Open Xcode.mpkg
  4. Follow instructions
  5. IMPORTANT: Check ALL options including Mac OSX 10.4 Support

The XCODE package includes subversion and curl

2 Installing Postgres

This is Postgres 9.0.1 but you can use any version back to 8.1.0

http://www.postgresql.org/download/macosx

http://www.enterprisedb.com/products/pgdownload.do#osx

https://www.enterprisedb.com/getfile.jsp?fileid=1517

Once downloaded, just do a standard install and remember the admin user password.

3 Building ICU, Boost and Exodus

Edit in the following script, or just cut and paste it into your bash command prompt.

cd ~
nano installexodus.sh
chmod +x installexodus.sh
./installexodus.sh

The latest version of this script is at http://code.google.com/p/exodusdb/source/browse/trunk/installexodus.sh

#!/bin/bash

echo 1. Build and install ICU
cd ~
#svn co http://source.icu-project.org/repos/icu/icu/tags/release-4-8/ icu
rm icu4c-4_8-src.tgz
curl -L -O http://download.icu-project.org/files/icu4c/4.8/icu4c-4_8-src.tgz | tee icu4c-4_8-src.tgz | tar xz
cd icu/source
./configure --enable-extras=no \
  --enable-extras=no \
  --enable-icuio=no \
  --enable-layout=no \
  --enable-tests=no \
  --enable-samples=no
make clean
make
sudo make install

echo 2. Build and install Boost
cd ~
rm -f boost_1_46_1.tar.gz
#wget http://sourceforge.net/projects/boost/files/boost/1.46.1/boost_1_46_1.tar.gz
curl -L -O http://sourceforge.net/projects/boost/files/boost/1.46.1/boost_1_46_1.tar.gz | tee boost_1_46_1.tar.gz | tar xz
cd boost_1_46_1

#bjam should say "has_icu builds: yes" otherwise check your icu installation above
./bootstrap.sh
sudo ./bjam --with-date_time --with-filesystem --with-regex --with-system --with-thread install link=shared -a


echo 3. Build and install Exodus

export PATH=/Library/PostgreSQL/9.0/bin/:$PATH

#see XCODE's Cross-Development Programming Guide:Configuring a Makefile-Based Project
#export MACOSX_DEPLOYMENT_TARGET=10.4

cd ~
svn co HTTPS://exodusdb.googlecode.com/svn/trunk/ exodus
cd ~/exodus
#./configure --with-sysroot=/Developer/SDKs/MacOSX10.4.0.sdk
./configure
make clean #in case half-built with wrong boost libs
make
sudo make install

4 Packaging Exodus

You need Bitrock http://installbuilder.bitrock.com/installbuilder-enterprise-7.2.0-osx-installer.app.zip

cd ~exodus
#cp configlocalEXAMPLE.cmd configlocal.cmd
nano configlocal.cmd
/pack.sh

5 General Info

5.1 Installing Ports

This is not needed for Exodus but it is useful to install unix-like tools on mac

  1. http://www.macports.org/install.php
  2. http://distfiles.macports.org/MacPorts/MacPorts-1.9.1-10.6-SnowLeopard.dmg

At the console command prompt

sudo port -v selfupdate
sudo port install <put your favourite packages>

5.2 Dependencies

otool -L /usr/local/lib/libexodus*.dylib
/usr/local/lib/libexodus-11.5.0.dylib:
        /usr/local/lib/libexodus-11.5.0.dylib (compatibility version 1.0.0, current version 1.0.0)
        libpq.5.dylib (compatibility version 5.0.0, current version 5.3.0)
        libboost_date_time.dylib (compatibility version 0.0.0, current version 0.0.0)
        libboost_filesystem.dylib (compatibility version 0.0.0, current version 0.0.0)
        libboost_thread.dylib (compatibility version 0.0.0, current version 0.0.0)
        libboost_regex.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 103.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)
otool -L /usr/local/lib/libboost_*.dylib
libboost_date_time.dylib:
        libboost_date_time.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)
libboost_filesystem.dylib:
        libboost_filesystem.dylib (compatibility version 0.0.0, current version 0.0.0)
        libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)
libboost_regex.dylib:
        libboost_regex.dylib (compatibility version 0.0.0, current version 0.0.0)
        libicui18n.48.dylib (compatibility version 48.0.0, current version 48.0.0)
        ../lib/libicudata.48.0.dylib (compatibility version 48.0.0, current version 48.0.0)
        libicuuc.48.dylib (compatibility version 48.0.0, current version 48.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)
libboost_system.dylib:
        libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)
libboost_thread.dylib:
        libboost_thread.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)

5.3 Uninstalling

#!/bin/bash

#ICU

pushd /usr/local
sudo rm -rf include/unicode
sudo rm -rf include/layout
sudo rm -f  bin/derb
sudo rm -f  bin/genbrk
sudo rm -f  bin/gencfu
sudo rm -f  bin/gencnval
sudo rm -f  bin/genctd
sudo rm -f  bin/genrb
sudo rm -f  bin/icu-config
sudo rm -f  bin/icuinfo
sudo rm -f  bin/makeconv
sudo rm -f  bin/uconv
sudo rm -f  lib/libicu*
sudo rm -rf lib/icu
sudo rm -f  lib/pkgconfig/icu*.pc
sudo rm -rf share/icu
sudo rm -f  share/man/man1/icu-config.1
sudo rm -f  share/man/man8/icupkg.8
sudo rm -f  sbin/icupkg
find . | grep icu
popd

#Boost

pushd /usr/local
sudo rm -rf include/boost
sudo rm -f  lib/libboost*
sudo rm -f  pkgconfig/boost*.pc
find . | grep boost
popd

#Exodus

pushd /usr/local
sudo rm -rf include/exodus*
sudo rm -f  lib/libexodus*
sudo rm -f  lib/pkgconfig/exodus*.pc
sudo rm -f  bin/exodus
sudo rm -f  bin/configexodus
find . | grep exodus
popd