package.py 2.81 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
##############################################################################
# Copyright (c) 2013-2018, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
#
import os
from subprocess import PIPE
from subprocess import check_call

from spack import *
from llnl.util.filesystem import working_dir


class Aml(AutotoolsPackage):
    """AML: Building Blocks for Explicit Memory Management."""

    homepage = "https://xgitlab.cels.anl.gov/argo/aml"
    url      = "https://xgitlab.cels.anl.gov/argo/aml.git"

    version('master', git='https://xgitlab.cels.anl.gov/argo/aml.git',
            branch='master')

    depends_on('autoconf', type='build')
    depends_on('automake', type='build')
    depends_on('libtool',  type='build')
    depends_on('m4',       type='build')
    depends_on('numactl')
    depends_on('hwloc')

    #: disable regular test callbacks
    build_time_test_callbacks = None
    install_time_test_callbacks = None

    def autoreconf(self, spec, prefix):
        """Custom autoreconf because of jemalloc."""
        # If configure exists nothing needs to be done
        if os.path.exists(self.configure_abs_path):
            return
        # Else try to regenerate it
        autotools = ['m4', 'autoconf', 'automake', 'libtool']
        missing = [x for x in autotools if x not in spec]
        if missing:
            msg = 'Cannot generate configure: missing dependencies {0}'
            raise RuntimeError(msg.format(missing))
        with working_dir(self.configure_directory):
            check_call(["./autogen.sh"], stdout=PIPE, stderr=PIPE)
            return

    @run_after('install')
    def extracheck(self):
        if not self.run_tests:
            return
        with working_dir(self.build_directory):
            self._if_make_target_execute('check')