""" See BENTO_BUILD.txt. Caveats: - no automatic detection for BLAS/LAPACK/etc... You need to set it up manually for now (except on Mac OS X and Debian/Ubuntu). The upside is that it is extremely easy to do so - bento is still in flux, and some things may changes between releases. """ import os import sys import subprocess # Ugly but necessary hack: import numpy here so that wscript in sub directories # will see this numpy and not an already installed one import __builtin__ __builtin__.__NUMPY_SETUP__ = True from bento.commands import hooks from bento.utils.utils \ import \ cmd_is_runnable from bento.backends.waf_backend \ import \ WAF_TOOLDIR from bento.backends.waf_tools \ import \ blas_lapack sys.path.insert(0, os.getcwd()) try: _SETUP_PY = __import__("setup") finally: sys.path.pop(0) def compute_git_revision(top_node): git_repo_node = top_node.find_node(".git") if git_repo_node and cmd_is_runnable(["git", "--version"]): s = subprocess.Popen(["git", "rev-parse", "HEAD"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=top_node.abspath()) out = s.communicate()[0] return out.decode().strip() else: return "" def _register_metadata(context): git_revision = compute_git_revision(context.top_node) full_version = context.pkg.version if not _SETUP_PY.ISRELEASED: full_version += '.dev-' + git_revision[:7] context.register_metadata("git_revision", git_revision) context.register_metadata("is_released", _SETUP_PY.ISRELEASED) context.register_metadata("full_version", full_version) @hooks.post_configure def post_configure(context): conf = context.waf_context if conf.env["CC_NAME"] == "gcc": conf.env.CFLAGS_PYEXT.append("-Wfatal-errors") conf.load("arch", tooldir=[WAF_TOOLDIR]) if sys.platform == "darwin": conf.env["MACOSX_DEPLOYMENT_TARGET"] = "10.4" conf.check_cc_default_arch() archs = [conf.env.DEFAULT_CC_ARCH] conf.env.ARCH = archs blas_lapack.check_blas_lapack(context) @hooks.pre_build def pre_build(context): _register_metadata(context) @hooks.pre_sdist def pre_sdist(context): _register_metadata(context) @hooks.options def options(global_context): blas_lapack.add_options(global_context)