There is a need to build versions of Boost other than ones that have been officially released. For example, the current release of Boost (1.54) will not compile when used from an Objective-C++ source file, because it defines a struct-typed static variable named 'nil', which conflicts with the Objective-C/C++ language keyword. This defect has been fixed ( https://svn.boost.org/trac/boost/ticket/5010 ). To implement this new feature, with this change the boost.sh script will now try to perform a Subversion checkout of the source code from the Boost source repository if no source tarball can be found corresponding to the requested version.

I put the code that performs the svn checkout into unpackBoost(). The reason for this is that the cleaning steps are carried out after downloadBoost() but before unpackBoost(). The svn checkout could happen in downloadBoost() and then unpack could make a completely separate copy of the source code in order to make it "clean", but I thought this large amount of duplication was overkill. But perhaps that is preferable to requiring a full "svn co" every time the script is run. I am open to suggestions on this issue.

Example usage:
    * BOOST_SRC_VERSION=HEAD ./boost.sh
    * BOOST_SRC_VERSION=85256 ./boost.sh
    * BOOST_SRC_VERSION=1_44_0 ./boost.sh
For the "extract version from source" feature, revert the public-facing variable name from the changed BOOST_SRC_VERSION back to the original BOOST_VERSION. The attempt to clarify its modified purpose was not very successful, certainly not to the extent that it justified changing the public interface to the script. The internal variable used by the script is now BOOST_HPP_VERSION.
Merge branch 'extract-version-from-source' into source-from-boost-repo
Merge branch 'extract-version-from-source' into source-from-boost-repo
For Xcode 4.6 and above, use xcrun to find the executables for "clang" and "ar". This fixes the test case of building Boost 1.50.0 on OSX 10.8.4 using Xcode 4.6.3, which previously did not work.
Merge branch 'fix-new-clang-ar-paths'

* fix-new-clang-ar-paths:
  For Xcode 4.6 and above, use xcrun to find the executables for "clang" and "ar". This fixes the test case of building Boost 1.50.0 on OSX 10.8.4 using Xcode 4.6.3, which previously did not work.
Merge branch 'source-from-boost-repo'

* source-from-boost-repo:
  Merge branch 'extract-version-from-source' into source-from-boost-repo
  For the "extract version from source" feature, revert the public-facing variable name from the changed BOOST_SRC_VERSION back to the original BOOST_VERSION. The attempt to clarify its modified purpose was not very successful, certainly not to the extent that it justified changing the public interface to the script. The internal variable used by the script is now BOOST_HPP_VERSION.
  There is a need to build versions of Boost other than ones that have been officially released. For example, the current release of Boost (1.54) will not compile when used from an Objective-C++ source file, because it defines a struct-typed static variable named 'nil', which conflicts with the Objective-C/C++ language keyword. This defect has been fixed ( https://svn.boost.org/trac/boost/ticket/5010 ). To implement this new feature, with this change the boost.sh script will now try to perform a Subversion checkout of the source code from the Boost source repository if no source tarball can be found corresponding to the requested version.