Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
5 contributors

Users who have contributed to this file

@brianjmurrell @johannlombardi @GitHuaKuang @mjean308 @JohnMalmberg
141 lines (126 sloc) 6.3 KB
# Copyright (C) 2018-2019 Intel Corporation
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted for any purpose (including commercial purposes)
# provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or materials provided with the distribution.
#
# 3. In addition, redistributions of modified forms of the source or binary
# code must carry prominent notices stating that the original code was
# changed and the date of the change.
#
# 4. All publications or advertising materials mentioning features or use of
# this software are asked, but not required, to acknowledge that it was
# developed by Intel Corporation and credit the contributors.
#
# 5. Neither the name of Intel Corporation, nor the name of any Contributor
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# 'recipe' for Docker to build an image of centOS-based
# environment for building the DAOS project.
#
# Pull base image
FROM centos:7
MAINTAINER <daos@daos.groups.io>
# Build arguments can be set via --build-arg
# use same UID as host and default value of 1000 if not specified
ARG UID=1000
# for good measure, clean the metadata
RUN yum clean metadata
# Install basic tools
RUN yum -y install epel-release; \
yum -y install \
boost-devel clang-analyzer cmake CUnit-devel doxygen file flex \
gcc gcc-c++ git golang graphviz lcov \
libaio-devel libcmocka-devel libevent-devel libiscsi-devel \
libtool libtool-ltdl-devel libuuid-devel libyaml-devel \
make meson nasm ninja-build numactl-devel openssl-devel \
pandoc patch pylint python python-devel python36-devel \
python-pep8 python-pygit2 python2-pygithub python-requests \
readline-devel scons sg3_utils ShellCheck yasm pciutils
# DAOS specific
RUN yum -y install \
python2-avocado python2-avocado-plugins-output-html \
python2-avocado-plugins-varianter-yaml-to-mux \
yum-plugin-copr python-pathlib \
python2-clustershell python2-Cython python2-pip; \
yum -y copr enable jhli/ipmctl; \
yum -y copr enable jhli/safeclib; \
yum -y install libipmctl-devel
# Add DAOS user
ENV USER daos
ENV PASSWD daos
RUN useradd -u $UID -ms /bin/bash $USER
RUN echo "$USER:$PASSWD" | chpasswd
# Create directory for DAOS backend storage
RUN mkdir /mnt/daos
RUN chown daos.daos /mnt/daos
# Dependencies
# Packages for NVML, PMIx, hwloc and OpenMPI exist in CentOS, but are
# unfortunately outdated. The DAOS build system will rebuild those packages.
ARG JENKINS_URL=""
ARG QUICKBUILD=1
RUN if [ $QUICKBUILD -eq 0 ]; then \
for repo in openpa libfabric pmix ompi mercury spdk isa-l fio dpdk \
protobuf-c fuse pmdk argobots raft cart@daos_devel1; do \
branch="master"; \
build_number="lastSuccessfulBuild"; \
if [[ $repo = *@* ]]; then \
branch="${repo#*@}"; \
repo="${repo%@*}"; \
if [[ $branch = *:* ]]; then \
build_number="${branch#*:}"; \
branch="${branch%:*}"; \
fi; \
fi; \
echo -e "[$repo:$branch:$build_number]\n\
name=$repo:$branch:$build_number\n\
baseurl=${JENKINS_URL}job/daos-stack/job/$repo/job/$branch/$build_number/artifact/artifacts/centos7/\n\
enabled=1\n\
gpgcheck = False\n" >> /etc/yum.repos.d/$repo:$branch:$build_number.repo; \
done; \
yum -y install cart-devel argobots-devel libpmem-devel libpmemobj-devel \
fuse-devel protobuf-c-devel spdk-devel fio libisa-l-devel \
mercury-devel openpa-devel libfabric-devel ompi-devel \
pmix-devel hwloc-devel dpdk-devel-18.02; \
fi
# force an upgrade to get any newly built RPMs
ARG CACHEBUST=1
RUN yum -y upgrade --exclude=dpdk-devel,dpdk
# Switch to new user
#USER $USER
WORKDIR /home/$USER
# set NOBUILD to disable git clone & build
ARG NOBUILD
# Fetch DAOS code
RUN if [ "x$NOBUILD" = "x" ] ; then git clone https://github.com/daos-stack/daos.git; fi
WORKDIR /home/$USER/daos
# Build DAOS & dependencies
RUN if [ "x$NOBUILD" = "x" ] ; then git submodule init && git submodule update; fi
RUN if [ "x$NOBUILD" = "x" ] ; then scons --build-deps=yes install PREFIX=/usr; fi
# Set environment variables
ENV LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
ENV CRT_PHY_ADDR_STR="ofi+sockets"
ENV OFI_INTERFACE=eth0
ENV FI_SOCKETS_MAX_CONN_RETRY=1
ENV DAOS_SINGLETON_CLI=1
ENV CRT_ATTACH_INFO_PATH=/tmp/uri
You can’t perform that action at this time.