The Shibboleth V1 software has reached its End of Life and is no longer supported. This documentation is available for historical purposes only.
MacNotes
ServiceProvider Notes
Successful C++ SP Builds
- OS X 10.3 using gcc3
- OS X 10.4 using gcc3
- OS X 10.4 using gcc4
- NOTE: Upgrade type installations of OS X 10.4 will run into strange compilation errors:
/usr/bin/libtool: for architecture: cputype (16777234) cpusubtype (0) file: -lSystem is not an object file (not allowed in a library)
. This may be remedied by installing a fresh version of XCode Tools 2.1.
Build Environment Setup
- Set
DYLD_LIBRARY_PATH
to the eventual lib path into which you'll be installing the packages you're building (e.g./opt/shibboleth-sp/lib
) - Set
MACOSX_DEPLOYMENT_TARGET
to your OS X version (e.g. 10.3 or 10.4) - Set
XERCESCROOT
to the root of the unpacked Xerces-C tarball
configure
Commands
- OpenSSL: (not needed, just use what comes with OS X)
- libcurl: (not needed on 10.4, or use
./configure --disable-static --without-ca-bundle --enable-thread --prefix=/opt/shibboleth-sp
) - log4cpp:
./configure --disable-static --disable-doxygen --prefix=/opt/shibboleth-sp
- For log4cpp 0.3.5rc3 and most likely others, the file
../include/log4cpp/Manipulator.hh
contains an extra semi-colon (;
) on line 29 that needs to be removed before building log4cpp.
- For log4cpp 0.3.5rc3 and most likely others, the file
- Xerces-C:
./runConfigure -p macosx -c gcc -x g++ -r pthread -n native -b 32 -P /opt/shibboleth-sp
- XML-Security-C:
./configure --without-xalan --prefix=/opt/shibboleth-sp
- OpenSAML:
./configure --with-curl=/opt/shibboleth-sp --with-log4cpp=/opt/shibboleth-sp --prefix=/opt/shibboleth-sp -C
- Shibboleth:
./configure --with-saml=/opt/shibboleth-sp --with-log4cpp=/opt/shibboleth-sp --enable-apache-13 --with-apxs=/usr/sbin/apxs --prefix=/opt/shibboleth-sp -C
Build Notes
- On all versions of OS X, the ONC RPC library used by Shibboleth for www/shibd connectivity is not thread-safe for clients or servers. Since shibd is multi-threaded, the Shibboleth-supplied version of
liboncrpc.dylib
must be used instead of the Apple version. This is automatically handled by theconfigure
script, but does result in various warnings about duplicate symbols while compiling and linking. This is normal and does not appear to prevent the proper symbols from being found at run time.
- It's possible to build some of the libraries in either flat- or two-namespace mode. This means that all exported symbols can be global (normal on Unix) or scoped to the shared library (normal on Windows). Either approach appears to work, but scoping symbols is usually preferable, and can be enabled by setting the MACOSX_DEPLOYMENT_TARGET environment variable to 10.4 (or whatever the OS X version is). Anything value newer than 10.1 will default to two-namespace mode during the build.
- For Xerces to fetch remote URLs (something the
siterefresh
tool currently depends on, you must enable the "native" Xerces NetAccessor on this platform. This is done with the option-n native
when runningrunConfigure
Runtime Notes
- Set
DYLD_LIBRARY_PATH
to the lib path containing the dependencies and Shibboleth libraries (e.g./opt/shibboleth-sp/lib
). This is required both in the script that starts theshibd
daemon and when starting Apache (so you might put it in/usr/sbin/apachectl
).
- On at least 10.4, it appears to be necessary to "preload" some symbols from some of the libraries in order for C++ RTTI to work when Apache loads mod_shib. This may be an artifact of changes in gcc4. To do this, you must set DYLD_INSERT_LIBRARIES in the Apache processes to
/opt/shibboleth-sp/lib/libshib-target.dylib:/opt/shibboleth-sp/lib/libshib.dylib
(substituting the actual path of these libraries, if not in the location shown). The simplest thing to do is place a command to set and export this variable in/usr/sbin/apachectl
such as:export DYLD_INSERT_LIBRARIES=/opt/shibboleth-sp/lib/libshib-target.dylib:/opt/shibboleth-sp/lib/libshib.dylib