Exemplo n.º 1
0
    def test_ldconfig_and_environment(self):
        """ldconfig and environment"""
        g = generic_cmake(
            devel_environment={'CPATH': '/usr/local/spdlog/include:$CPATH'},
            directory='spdlog-1.4.2',
            ldconfig=True,
            prefix='/usr/local/spdlog',
            runtime_environment={'CPATH': '/usr/local/spdlog/include:$CPATH'},
            url='https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz')
        self.assertEqual(
            str(g),
            r'''# https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz && \
    mkdir -p /var/tmp && tar -x -f /var/tmp/v1.4.2.tar.gz -C /var/tmp -z && \
    mkdir -p /var/tmp/spdlog-1.4.2/build && cd /var/tmp/spdlog-1.4.2/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/spdlog /var/tmp/spdlog-1.4.2 && \
    cmake --build /var/tmp/spdlog-1.4.2/build --target all -- -j$(nproc) && \
    cmake --build /var/tmp/spdlog-1.4.2/build --target install -- -j$(nproc) && \
    echo "/usr/local/spdlog/lib" >> /etc/ld.so.conf.d/hpccm.conf && ldconfig && \
    rm -rf /var/tmp/spdlog-1.4.2 /var/tmp/v1.4.2.tar.gz
ENV CPATH=/usr/local/spdlog/include:$CPATH''')

        r = g.runtime()
        self.assertEqual(
            r, r'''# https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz
COPY --from=0 /usr/local/spdlog /usr/local/spdlog
RUN echo "/usr/local/spdlog/lib" >> /etc/ld.so.conf.d/hpccm.conf && ldconfig
ENV CPATH=/usr/local/spdlog/include:$CPATH''')
    def test_environment_and_toolchain(self):
        """environment and toolchain"""
        tc = toolchain(CC='gcc', CXX='g++', FC='gfortran')
        g = generic_cmake(
            check=True,
            cmake_opts=['-D CMAKE_BUILD_TYPE=Release',
                        '-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda',
                        '-D GMX_BUILD_OWN_FFTW=ON',
                        '-D GMX_GPU=ON',
                        '-D GMX_MPI=OFF',
                        '-D GMX_OPENMP=ON',
                        '-D GMX_PREFER_STATIC_LIBS=ON',
                        '-D MPIEXEC_PREFLAGS=--allow-run-as-root',
                        '-D REGRESSIONTEST_DOWNLOAD=ON'],
            directory='gromacs-2018.2',
            environment={'FOO': 'BAR'},
            prefix='/usr/local/gromacs',
            toolchain=tc,
            url='https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz')
        self.assertEqual(str(g),
r'''# https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz && \
    mkdir -p /var/tmp && tar -x -f /var/tmp/v2018.2.tar.gz -C /var/tmp -z && \
    mkdir -p /var/tmp/gromacs-2018.2/build && cd /var/tmp/gromacs-2018.2/build && FOO=BAR CC=gcc CXX=g++ FC=gfortran cmake -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs -D CMAKE_BUILD_TYPE=Release -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -D GMX_BUILD_OWN_FFTW=ON -D GMX_GPU=ON -D GMX_MPI=OFF -D GMX_OPENMP=ON -D GMX_PREFER_STATIC_LIBS=ON -D MPIEXEC_PREFLAGS=--allow-run-as-root -D REGRESSIONTEST_DOWNLOAD=ON /var/tmp/gromacs-2018.2 && \
    cmake --build /var/tmp/gromacs-2018.2/build --target all -- -j$(nproc) && \
    cmake --build /var/tmp/gromacs-2018.2/build --target check -- -j$(nproc) && \
    cmake --build /var/tmp/gromacs-2018.2/build --target install -- -j$(nproc) && \
    rm -rf /var/tmp/gromacs-2018.2 /var/tmp/v2018.2.tar.gz''')
    def test_repository(self):
        """test repository option"""
        g = generic_cmake(branch='v0.8.0',
                          cmake_opts=['-D CMAKE_BUILD_TYPE=RELEASE',
                                      '-D QUDA_DIRAC_CLOVER=ON',
                                      '-D QUDA_DIRAC_DOMAIN_WALL=ON',
                                      '-D QUDA_DIRAC_STAGGERED=ON',
                                      '-D QUDA_DIRAC_TWISTED_CLOVER=ON',
                                      '-D QUDA_DIRAC_TWISTED_MASS=ON',
                                      '-D QUDA_DIRAC_WILSON=ON',
                                      '-D QUDA_FORCE_GAUGE=ON',
                                      '-D QUDA_FORCE_HISQ=ON',
                                      '-D QUDA_GPU_ARCH=sm_70',
                                      '-D QUDA_INTERFACE_MILC=ON',
                                      '-D QUDA_INTERFACE_QDP=ON',
                                      '-D QUDA_LINK_HISQ=ON',
                                      '-D QUDA_MPI=ON'],
                          prefix='/usr/local/quda',
                          repository='https://github.com/lattice/quda.git')
        self.assertEqual(str(g),
r'''# https://github.com/lattice/quda.git
RUN mkdir -p /var/tmp && cd /var/tmp && git clone --depth=1 --branch v0.8.0 https://github.com/lattice/quda.git quda && cd - && \
    mkdir -p /var/tmp/quda/build && cd /var/tmp/quda/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/quda -D CMAKE_BUILD_TYPE=RELEASE -D QUDA_DIRAC_CLOVER=ON -D QUDA_DIRAC_DOMAIN_WALL=ON -D QUDA_DIRAC_STAGGERED=ON -D QUDA_DIRAC_TWISTED_CLOVER=ON -D QUDA_DIRAC_TWISTED_MASS=ON -D QUDA_DIRAC_WILSON=ON -D QUDA_FORCE_GAUGE=ON -D QUDA_FORCE_HISQ=ON -D QUDA_GPU_ARCH=sm_70 -D QUDA_INTERFACE_MILC=ON -D QUDA_INTERFACE_QDP=ON -D QUDA_LINK_HISQ=ON -D QUDA_MPI=ON /var/tmp/quda && \
    cmake --build /var/tmp/quda/build --target all -- -j$(nproc) && \
    cmake --build /var/tmp/quda/build --target install -- -j$(nproc) && \
    rm -rf /var/tmp/quda''')
Exemplo n.º 4
0
    def __init__(self, **kwargs):
        """Initialize building block"""

        super(sensei, self).__init__(**kwargs)

        self.__branch = kwargs.pop('branch', 'v2.1.1')
        self.__catalyst = kwargs.pop('catalyst', '')
        self.__cmake_opts = kwargs.pop('cmake_opts', ['-DENABLE_SENSEI=ON'])
        self.__libsim = kwargs.pop('libsim', '')
        self.__miniapps = kwargs.pop('miniapps', False)
        self.__ospackages = kwargs.pop('ospackages',
                                       ['ca-certificates', 'git', 'make'])
        self.__prefix = kwargs.pop('prefix', '/usr/local/sensei')
        self.__repository = kwargs.pop(
            'repository', 'https://gitlab.kitware.com/sensei/sensei.git')
        self.__vtk = kwargs.pop('vtk', '')

        # Set the cmake options
        self.__cmake()

        # Setup build configuration
        self.__bb = generic_cmake(base_annotation=self.__class__.__name__,
                                  branch=self.__branch,
                                  comment=False,
                                  cmake_opts=self.__cmake_opts,
                                  prefix=self.__prefix,
                                  repository=self.__repository,
                                  **kwargs)

        # Container instructions
        self += comment('SENSEI version {}'.format(self.__branch))
        self += packages(ospackages=self.__ospackages)
        self += self.__bb
Exemplo n.º 5
0
def build(container_format='singularity',
          os_release='ubuntu',
          os_version='20.04'):
    config.set_container_format(container_format)

    image = f'{os_release}:{os_version}'

    stage0 = Stage(name='stage0')
    stage0 += baseimage(image=image, _bootstrap='docker')
    stage0 += environment(variables={
        'LC_ALL': 'en_AU.UTF-8',
        'LANGUAGE': 'en_AU.UTF-8',
    })
    stage0 += label(metadata={
        'maintainer': 'Luhan Cheng',
        'email': '*****@*****.**'
    })
    stage0 += shell(commands=[
        'rm -f /bin/sh && ln -s /bin/bash /bin/sh',
        'rm -f /usr/bin/sh && ln -s /usr/bin/bash /usr/bin/sh',
        '/bin/bash',
    ])

    stage0 += packages(apt=[
        'wget', 'git', 'software-properties-common', 'build-essential',
        'locales', 'zlib1g-dev'
    ])
    stage0 += shell(commands=['locale-gen en_AU.UTF-8'])

    stage0 += comment('Installing vglrun and TurboVNC')
    stage0 += packages(apt=[
        'ubuntu-desktop', 'vim', 'mesa-utils', 'python3-pip', 'python3-pyqt5',
        'pyqt5-dev', 'python3-tk'
    ])
    stage0 += shell(commands=[
        'wget https://swift.rc.nectar.org.au/v1/AUTH_810/CVL-Singularity-External-Files/turbovnc_2.2.5_amd64.deb && dpkg -i turbovnc_2.2.5_amd64.deb && rm turbovnc_2.2.5_amd64.deb',
        'wget https://swift.rc.nectar.org.au/v1/AUTH_810/CVL-Singularity-External-Files/virtualgl_2.6.4_amd64.deb && dpkg -i virtualgl_2.6.4_amd64.deb && rm virtualgl_2.6.4_amd64.deb',
        'apt update', 'apt -y upgrade'
    ])

    # coin3d
    stage0 += packages(apt=[
        'mesa-common-dev', 'libglu1-mesa-dev', 'freeglut3-dev', 'autoconf',
        'autogen', 'doxygen'
    ])
    compiler = gnu(version="10")
    stage0 += compiler
    stage0 += boost()
    stage0 += generic_cmake(
        repository="https://github.com/coin3d/coin",
        recursive=True,
        cmake_opts=[
            '-G "Unix Makefiles"', "-DCMAKE_BUILD_TYPE=Release",
            "-DCOIN_BUILD_DOCUMENTATION=OFF",
            "-DCMAKE_INSTALL_PREFIX=/usr/local/coin3d"
        ],
        postinstall=['cd cpack.d', 'cpack --config debian.cmake'])

    return stage0
Exemplo n.º 6
0
    def __init__(self, **kwargs):
        """Initialize building block"""

        super(kokkos, self).__init__(**kwargs)

        self.__arch = kwargs.pop('arch', ['VOLTA70'])
        self.__baseurl = kwargs.pop(
            'baseurl', 'https://github.com/kokkos/kokkos/archive')
        self.__check = kwargs.pop('check', False)
        self.__cmake_opts = kwargs.pop('cmake_opts',
                                       ['-DCMAKE_BUILD_TYPE=RELEASE'])
        self.__cuda = kwargs.pop('cuda', True)
        self.__default_repository = 'https://github.com/kokkos/kokkos.git'
        self.__hwloc = kwargs.pop('hwloc', True)
        self.__ospackages = kwargs.pop('ospackages', [])
        self.__powertools = False  # enable the CentOS PowerTools repo
        self.__prefix = kwargs.pop('prefix', '/usr/local/kokkos')
        self.__version = kwargs.pop('version', '3.2.00')

        if self.repository:
            self.__directory = ''
        else:
            self.__directory = kwargs.pop('directory',
                                          'kokkos-{}'.format(self.__version))

        # Set the CMake options
        self.__cmake()

        # Set the Linux distribution specific parameters
        self.__distro()

        # Set the download specific parameters
        self.__download()
        kwargs['repository'] = self.repository
        kwargs['url'] = self.url

        # Setup the environment variables
        self.environment_variables['PATH'] = '{}/bin:$PATH'.format(
            self.__prefix)

        # Setup build configuration
        self.__bb = generic_cmake(
            annotations={'version': self.__version},
            base_annotation=self.__class__.__name__,
            cmake_opts=self.__cmake_opts,
            comment=False,
            devel_environment=self.environment_variables,
            directory=self.__directory,
            prefix=self.__prefix,
            runtime_environment=self.environment_variables,
            **kwargs)

        # Container instructions
        self += comment('Kokkos version {}'.format(self.__version))
        self += packages(ospackages=self.__ospackages,
                         powertools=self.__powertools)
        self += self.__bb
    def test_build_directory(self):
        """build directory option"""
        g = generic_cmake(
            build_directory='/tmp/build',
            directory='spdlog-1.4.2',
            url='https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz')
        self.assertEqual(str(g),
r'''# https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz && \
    mkdir -p /var/tmp && tar -x -f /var/tmp/v1.4.2.tar.gz -C /var/tmp -z && \
    mkdir -p /tmp/build && cd /tmp/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local /var/tmp/spdlog-1.4.2 && \
    cmake --build /tmp/build --target all -- -j$(nproc) && \
    cmake --build /tmp/build --target install -- -j$(nproc) && \
    rm -rf /var/tmp/spdlog-1.4.2 /var/tmp/v1.4.2.tar.gz /tmp/build''')
Exemplo n.º 8
0
    def __instructions(self):
        self += comment('paraview {}'.format(self.__version))

        if hpccm.config.g_linux_distro == linux_distro.CENTOS:
            dist = 'rpm'
            self += shell(commands=[
                'wget https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-linux.zip',
                'unzip ninja-linux.zip', 'mv ninja /usr/local/bin',
                'rm ninja-linux.zip'
            ])
        else:
            self.__ospackages.extend(['ninja-build'])

        self.__cmake_args.extend([
            '-G Ninja', '-DCMAKE_BUILD_TYPE=Release',
            '-DPARAVIEW_BUILD_EDITION={}'.format(self.__edition)
        ])
        if not self.__shared:
            self.__cmake_args.append('-DBUILD_SHARED_LIBS=OFF')
        if self.__toolchain.CC == 'mpicc':
            self.__cmake_args.append('-DPARAVIEW_USE_MPI=ON')
        for module in self.__modules:
            self.__cmake_args.append(
                '-DVTK_MODULE_ENABLE_{}=YES'.format(module))

        # TODO: Install dependencies for rendering editions (ospackages)

        self += generic_cmake(
            branch=self.__version,
            cmake_opts=self.__cmake_args,
            prefix=self.__prefix,
            toolchain=self.__toolchain,
            recursive=True,
            repository='https://gitlab.kitware.com/paraview/paraview.git')
        self.__environment_variables['ParaView_DIR'] = self.__prefix
        # Set library path
        if self.__shared:
            libpath = os.path.join(self.__prefix, 'lib')
            if hpccm.config.g_linux_distro == linux_distro.CENTOS:
                libpath += '64'
            if self.ldconfig:
                self += shell(commands=[self.ldcache_step(directory=libpath)])
            else:
                self.__environment_variables[
                    'LD_LIBRARY_PATH'] = '{}:$LD_LIBRARY_PATH'.format(libpath)

        self += environment(variables=self.__environment_variables)
Exemplo n.º 9
0
    def test_runtime(self):
        """Runtime"""
        g = generic_cmake(
            cmake_opts=[
                '-D CMAKE_BUILD_TYPE=Release',
                '-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda',
                '-D GMX_BUILD_OWN_FFTW=ON', '-D GMX_GPU=ON', '-D GMX_MPI=OFF',
                '-D GMX_OPENMP=ON', '-D GMX_PREFER_STATIC_LIBS=ON',
                '-D MPIEXEC_PREFLAGS=--allow-run-as-root'
            ],
            directory='gromacs-2018.2',
            prefix='/usr/local/gromacs',
            url='https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz')
        r = g.runtime()
        self.assertEqual(
            r, r'''# https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz
COPY --from=0 /usr/local/gromacs /usr/local/gromacs''')
Exemplo n.º 10
0
    def __init__(self, **kwargs):
        """Initialize building block"""

        super(magma, self).__init__(**kwargs)

        self.__baseurl = kwargs.pop(
            'baseurl', 'http://icl.utk.edu/projectsfiles/magma/downloads')
        self.__cmake_opts = kwargs.pop('cmake_opts', [])
        self.__gpu_target = kwargs.pop('gpu_target',
                                       ['Pascal', 'Volta', 'Turing'])
        self.__ospackages = kwargs.pop('ospackages', ['tar', 'wget'])
        self.__prefix = kwargs.pop('prefix', '/usr/local/magma')
        self.__version = kwargs.pop('version', '2.5.3')

        # Set the cmake options
        self.__cmake()

        # Setup the environment variables
        self.environment_variables['CPATH'] = '{}:$CPATH'.format(
            posixpath.join(self.__prefix, 'include'))
        self.environment_variables['LIBRARY_PATH'] = '{}:$LIBRARY_PATH'.format(
            posixpath.join(self.__prefix, 'lib'))
        if not self.ldconfig:
            self.environment_variables[
                'LD_LIBRARY_PATH'] = '{}:$LD_LIBRARY_PATH'.format(
                    posixpath.join(self.__prefix, 'lib'))

        # Setup build configuration
        self.__bb = generic_cmake(
            annotations={'version': self.__version},
            base_annotation=self.__class__.__name__,
            comment=False,
            cmake_opts=self.__cmake_opts,
            devel_environment=self.environment_variables,
            prefix=self.__prefix,
            runtime_environment=self.environment_variables,
            url='{0}/magma-{1}.tar.gz'.format(self.__baseurl, self.__version),
            **kwargs)

        # Container instructions
        self += comment('MAGMA version {}'.format(self.__version))
        self += packages(ospackages=self.__ospackages)
        self += self.__bb
    def test_pre_and_post(self):
        """Preconfigure and postinstall options"""
        g = generic_cmake(
            directory='/var/tmp/spdlog-1.4.2',
            postinstall=['echo "post"'],
            preconfigure=['echo "pre"'],
            prefix='/usr/local/spdlog',
            url='https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz')
        self.assertEqual(str(g),
r'''# https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://github.com/gabime/spdlog/archive/v1.4.2.tar.gz && \
    mkdir -p /var/tmp && tar -x -f /var/tmp/v1.4.2.tar.gz -C /var/tmp -z && \
    cd /var/tmp/spdlog-1.4.2 && \
    echo "pre" && \
    mkdir -p /var/tmp/spdlog-1.4.2/build && cd /var/tmp/spdlog-1.4.2/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/spdlog /var/tmp/spdlog-1.4.2 && \
    cmake --build /var/tmp/spdlog-1.4.2/build --target all -- -j$(nproc) && \
    cmake --build /var/tmp/spdlog-1.4.2/build --target install -- -j$(nproc) && \
    cd /usr/local/spdlog && \
    echo "post" && \
    rm -rf /var/tmp/spdlog-1.4.2 /var/tmp/v1.4.2.tar.gz''')
Exemplo n.º 12
0
    def test_package(self):
        """local package"""
        g = generic_cmake(cmake_opts=[
            '-D CMAKE_BUILD_TYPE=Release',
            '-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda',
            '-D GMX_BUILD_OWN_FFTW=ON', '-D GMX_GPU=ON', '-D GMX_MPI=OFF',
            '-D GMX_OPENMP=ON', '-D GMX_PREFER_STATIC_LIBS=ON',
            '-D MPIEXEC_PREFLAGS=--allow-run-as-root',
            '-D REGRESSIONTEST_DOWNLOAD=ON'
        ],
                          directory='gromacs-2018.2',
                          package='gromacs/v2018.2.tar.gz',
                          prefix='/usr/local/gromacs')
        self.assertEqual(
            str(g), r'''# gromacs/v2018.2.tar.gz
COPY gromacs/v2018.2.tar.gz /var/tmp/v2018.2.tar.gz
RUN mkdir -p /var/tmp && tar -x -f /var/tmp/v2018.2.tar.gz -C /var/tmp -z && \
    mkdir -p /var/tmp/gromacs-2018.2/build && cd /var/tmp/gromacs-2018.2/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs -D CMAKE_BUILD_TYPE=Release -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -D GMX_BUILD_OWN_FFTW=ON -D GMX_GPU=ON -D GMX_MPI=OFF -D GMX_OPENMP=ON -D GMX_PREFER_STATIC_LIBS=ON -D MPIEXEC_PREFLAGS=--allow-run-as-root -D REGRESSIONTEST_DOWNLOAD=ON /var/tmp/gromacs-2018.2 && \
    cmake --build /var/tmp/gromacs-2018.2/build --target all -- -j$(nproc) && \
    cmake --build /var/tmp/gromacs-2018.2/build --target install -- -j$(nproc) && \
    rm -rf /var/tmp/gromacs-2018.2 /var/tmp/v2018.2.tar.gz''')
    def test_defaults_ubuntu(self):
        """Default generic_cmake building block"""
        g = generic_cmake(
            cmake_opts=['-D CMAKE_BUILD_TYPE=Release',
                        '-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda',
                        '-D GMX_BUILD_OWN_FFTW=ON',
                        '-D GMX_GPU=ON',
                        '-D GMX_MPI=OFF',
                        '-D GMX_OPENMP=ON',
                        '-D GMX_PREFER_STATIC_LIBS=ON',
                        '-D MPIEXEC_PREFLAGS=--allow-run-as-root'],
            directory='gromacs-2018.2',
            prefix='/usr/local/gromacs',
            url='https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz')
        self.assertEqual(str(g),
r'''# https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz && \
    mkdir -p /var/tmp && tar -x -f /var/tmp/v2018.2.tar.gz -C /var/tmp -z && \
    mkdir -p /var/tmp/gromacs-2018.2/build && cd /var/tmp/gromacs-2018.2/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs -D CMAKE_BUILD_TYPE=Release -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -D GMX_BUILD_OWN_FFTW=ON -D GMX_GPU=ON -D GMX_MPI=OFF -D GMX_OPENMP=ON -D GMX_PREFER_STATIC_LIBS=ON -D MPIEXEC_PREFLAGS=--allow-run-as-root /var/tmp/gromacs-2018.2 && \
    cmake --build /var/tmp/gromacs-2018.2/build --target all -- -j$(nproc) && \
    cmake --build /var/tmp/gromacs-2018.2/build --target install -- -j$(nproc) && \
    rm -rf /var/tmp/gromacs-2018.2 /var/tmp/v2018.2.tar.gz''')
Exemplo n.º 14
0
    def __init__(self, **kwargs):
        """Initialize building block"""
        super(amgx, self).__init__(**kwargs)

        self.__branch = kwargs.pop('branch', 'master')
        self.__cmake_opts = kwargs.pop('cmake_opts', [])
        self.__ospackages = kwargs.pop('ospackages', ['git', 'make'])
        self.__prefix = kwargs.pop('prefix', '/usr/local/amgx')
        self.__repository = kwargs.pop('repository',
                                       'https://github.com/NVIDIA/amgx')

        # Set the environment
        self.environment_variables['CPATH'] = '{}:$CPATH'.format(
            posixpath.join(self.__prefix, 'include'))
        self.environment_variables['LIBRARY_PATH'] = '{}:$LIBRARY_PATH'.format(
            posixpath.join(self.__prefix, 'lib'))
        if not self.ldconfig:
            self.environment_variables[
                'LD_LIBRARY_PATH'] = '{}:$LD_LIBRARY_PATH'.format(
                    posixpath.join(self.__prefix, 'lib'))

        # Setup build configuration
        self.__bb = generic_cmake(
            annotations={'branch': self.__branch},
            base_annotation=self.__class__.__name__,
            branch=self.__branch,
            comment=False,
            cmake_opts=self.__cmake_opts,
            devel_environment=self.environment_variables,
            prefix=self.__prefix,
            runtime_environment=self.environment_variables,
            repository=self.__repository,
            **kwargs)

        # Container instructions
        self += comment('AMGX branch {}'.format(self.__branch))
        self += packages(ospackages=self.__ospackages)
        self += self.__bb
 def test_invalid_package(self):
     """invalid package url"""
     with self.assertRaises(RuntimeError):
         g = generic_cmake(url='https://foo/bar.sh')
 def test_both_branch_and_commit(self):
     """both branch and commit"""
     with self.assertRaises(RuntimeError):
         g = generic_cmake(branch='dev', commit='deadbeef',
                           repository='foo')
 def test_both_repository_and_url(self):
     """both repository and url"""
     with self.assertRaises(RuntimeError):
         g = generic_cmake(repository='foo', url='bar')
 def test_no_url(self):
     """missing url"""
     with self.assertRaises(RuntimeError):
         g = generic_cmake()
Exemplo n.º 19
0
    def __init__(self, **kwargs):
        """Initialize building block"""

        super(rdma_core, self).__init__(**kwargs)

        # Parameters
        self.__baseurl = kwargs.pop(
            'baseurl', 'https://github.com/linux-rdma/rdma-core/archive')
        self.__default_repository = 'https://github.com/linux-rdma/rdma-core.git'
        self.__ospackages = kwargs.pop('ospackages', [])
        self.__prefix = kwargs.pop('prefix', '/usr/local/rdma-core')
        self.__runtime_ospackages = []  # Filled in by __distro()
        self.__toolchain = kwargs.pop('toolchain', toolchain())
        self.__version = kwargs.pop('version', '31.2')

        # Set the Linux distribution specific parameters
        self.__distro()

        # Set the download specific parameters
        self.__download()
        kwargs['repository'] = self.repository
        kwargs['url'] = self.url

        # Setup the environment variables
        self.environment_variables['CPATH'] = '{}:$CPATH'.format(
            posixpath.join(self.__prefix, 'include'))
        self.environment_variables[
            'LIBRARY_PATH'] = '{0}:{1}:$LIBRARY_PATH'.format(
                posixpath.join(self.__prefix, 'lib'),
                posixpath.join(self.__prefix, 'lib64'))
        self.environment_variables['PATH'] = '{}:$PATH'.format(
            posixpath.join(self.__prefix, 'bin'))
        if not self.ldconfig:
            self.environment_variables[
                'LD_LIBRARY_PATH'] = '{0}:{1}:$LD_LIBRARY_PATH'.format(
                    posixpath.join(self.__prefix, 'lib'),
                    posixpath.join(self.__prefix, 'lib64'))

        # Setup build configuration
        self.__bb = generic_cmake(
            annotations={'version': self.__version}
            if not self.repository else {},
            base_annotation=self.__class__.__name__,
            comment=False,
            devel_environment=self.environment_variables,
            directory='rdma-core-{}'.format(self.__version)
            if self.url else None,
            prefix=self.__prefix,
            runtime_environment=self.environment_variables,
            toolchain=self.__toolchain,
            **kwargs)

        # Container instructions
        if self.repository:
            if self.branch:
                self += comment('RDMA Core {} {}'.format(
                    self.repository, self.branch))
            elif self.commit:
                self += comment('RDMA Core {} {}'.format(
                    self.repository, self.commit))
            else:
                self += comment('RDMA Core {}'.format(self.repository))
        else:
            self += comment('RDMA Core version {}'.format(self.__version))
        # pandoc is in EPEL on CentOS 7 and PowerTools on CentOS 8
        self += packages(epel=True,
                         ospackages=self.__ospackages,
                         powertools=True)
        self += self.__bb