docker: Add Dockerfiles for images needed by AWS gitlab-runners
The built images are set up with fairly recent versions of gcc and clang: - centos_7: [ gcc@5.5.0 (built from src), clang@6.0.0 (spack-built from src) ] - ubuntu_18.04: [ gcc@5.5.0 (system), clang@6.0.0-1ubuntu2 (system) ]
This commit is contained in:
parent
fce1c4133f
commit
05cdb5a0bb
@ -0,0 +1,61 @@
|
||||
|
||||
#
|
||||
# To build this image:
|
||||
#
|
||||
# cd <path-to-spack-repo>/share/spack/docker/spack_builder
|
||||
# docker build -f Dockerfile-spack_builder_centos_7 -t spack_builder_centos_7 .
|
||||
#
|
||||
|
||||
from spack/centos:7
|
||||
|
||||
RUN yum update -y && \
|
||||
yum install -y \
|
||||
gmp-devel \
|
||||
libmpc-devel \
|
||||
mpfr-devel \
|
||||
vim \
|
||||
which && \
|
||||
rm -rf /var/cache/yum && yum clean all
|
||||
|
||||
# Download, build and install gcc 5.5.0
|
||||
RUN mkdir -p /home/spackuser/Download/gcc550/build-gcc550 && \
|
||||
mkdir -p /opt/gcc/gcc-5.5.0 && \
|
||||
cd /home/spackuser/Download/gcc550 && \
|
||||
curl -OL https://ftp.gnu.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.xz && \
|
||||
tar -xvf gcc-5.5.0.tar.xz && \
|
||||
cd build-gcc550 && \
|
||||
../gcc-5.5.0/configure \
|
||||
--enable-languages=c,c++,fortran \
|
||||
--disable-multilib \
|
||||
--prefix=/opt/gcc/gcc-5.5.0 && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
cd /home/spackuser && \
|
||||
rm -rf /home/spackuser/Download
|
||||
|
||||
RUN export PATH=/spack/bin:$PATH && \
|
||||
spack compiler find /opt/gcc/gcc-5.5.0
|
||||
|
||||
RUN sed -i 's/f77: null/f77: \/opt\/gcc\/gcc-5.5.0\/bin\/gfortran/g;s/fc: null/fc: \/opt\/gcc\/gcc-5.5.0\/bin\/gfortran/g' ~/.spack/linux/compilers.yaml
|
||||
|
||||
RUN mkdir -p /home/spackuser/spackcommand
|
||||
|
||||
COPY update_rpaths.py /home/spackuser/spackcommand/update_rpaths.py
|
||||
|
||||
RUN spack python /home/spackuser/spackcommand/update_rpaths.py \
|
||||
--prefix /opt/gcc/gcc-5.5.0 \
|
||||
--rpaths /opt/gcc/gcc-5.5.0/lib64
|
||||
|
||||
RUN export PATH=/spack/bin:$PATH && \
|
||||
spack install -y llvm@6.0.0%gcc@5.5.0 && \
|
||||
spack clean -a
|
||||
|
||||
RUN export PATH=/spack/bin:$PATH && \
|
||||
spack compiler find $(spack location -i llvm@6.0.0%gcc@5.5.0)
|
||||
|
||||
RUN sed -i 's/f77: null/f77: \/opt\/gcc\/gcc-5.5.0\/bin\/gfortran/g;s/fc: null/fc: \/opt\/gcc\/gcc-5.5.0\/bin\/gfortran/g' ~/.spack/linux/compilers.yaml
|
||||
|
||||
RUN spack python /home/spackuser/spackcommand/update_rpaths.py \
|
||||
--prefix /spack/opt/spack/linux-centos7-x86_64/gcc-5.5.0/llvm-6.0.0-awfpo7kn3k24weu655rrt2erihzd4gii \
|
||||
--rpaths /spack/opt/spack/linux-centos7-x86_64/gcc-5.5.0/llvm-6.0.0-awfpo7kn3k24weu655rrt2erihzd4gii/lib
|
||||
|
@ -0,0 +1,23 @@
|
||||
|
||||
#
|
||||
# To build this image:
|
||||
#
|
||||
# cd <path-to-spack-repo>/share/spack/docker/spack_builder
|
||||
# docker build -f Dockerfile-spack_builder_ubuntu_18.04 -t spack_builder_ubuntu_18.04 .
|
||||
#
|
||||
|
||||
from spack/ubuntu:bionic
|
||||
|
||||
RUN apt-get -yqq update && apt-get -yqq install \
|
||||
clang \
|
||||
g++-5 \
|
||||
gcc-5 \
|
||||
gfortran-5 \
|
||||
unzip \
|
||||
vim && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN export PATH=/spack/bin:$PATH && \
|
||||
spack compiler find gcc clang
|
||||
|
||||
RUN sed -i 's/f77: null/f77: \/usr\/bin\/gfortran/g;s/fc: null/fc: \/usr\/bin\/gfortran/g' ~/.spack/linux/compilers.yaml
|
34
share/spack/docker/spack_builder/update_rpaths.py
Normal file
34
share/spack/docker/spack_builder/update_rpaths.py
Normal file
@ -0,0 +1,34 @@
|
||||
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import argparse
|
||||
from spack.config import config as spack_config
|
||||
|
||||
|
||||
def update_compiler(prefix, rpaths):
|
||||
compilers_config = spack_config.get('compilers')
|
||||
|
||||
for compiler_entry in compilers_config:
|
||||
if compiler_entry['compiler']['paths']['cc'].startswith(prefix):
|
||||
print('found target compiler: {0}'.format(
|
||||
compiler_entry['compiler']['spec']))
|
||||
compiler_entry['compiler']['extra_rpaths'].append(rpaths)
|
||||
|
||||
spack_config.update_config('compilers', compilers_config)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Create argument parser
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Add extra_rpaths to default system compilers.yaml")
|
||||
|
||||
parser.add_argument('-p', '--prefix', default=None,
|
||||
help="Install prefix of compiler to update")
|
||||
parser.add_argument('-r', '--rpaths', default=None,
|
||||
help="Extra rpaths to add to target compiler")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
update_compiler(args.prefix, args.rpaths)
|
Loading…
Reference in New Issue
Block a user