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''')
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
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
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''')
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)
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''')
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''')
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''')
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()
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