1import os, shutil 2import re 3 4from build.project import Project 5 6class BoostProject(Project): 7 def __init__(self, url, md5, installed, 8 **kwargs): 9 m = re.match(r'.*/boost_(\d+)_(\d+)_(\d+)\.tar\.bz2$', url) 10 version = "%s.%s.%s" % (m.group(1), m.group(2), m.group(3)) 11 Project.__init__(self, url, md5, installed, 12 name='boost', version=version, 13 **kwargs) 14 15 def _build(self, toolchain): 16 src = self.unpack(toolchain) 17 18 # install the headers manually; don't build any library 19 # (because right now, we only use header-only libraries) 20 includedir = os.path.join(toolchain.install_prefix, 'include') 21 dest = os.path.join(includedir, 'boost') 22 shutil.rmtree(dest, ignore_errors=True) 23 shutil.copytree(os.path.join(src, 'boost'), dest) 24 25 # touch the boost/version.hpp file to ensure it's newer than 26 # the downloaded Boost tarball, to avoid reinstalling Boost on 27 # every run 28 os.utime(os.path.join(toolchain.install_prefix, self.installed)) 29