docker: unite Dockerfiles; auto-deploy images to DockerHub (#9329)

* Unite Dockerfiles - add build/run/push scripts
* update docker documentation
* update .travis.yml
* switch to using a preprocessor on Dockerfiles
* skip building docker images on pull requests
* update files with copyright info
* tweak when travis builds for docker files are done
This commit is contained in:
Omar Padron
2018-10-26 13:15:05 -04:00
committed by Todd Gamblin
parent 734d903b03
commit aa1c814c75
27 changed files with 483 additions and 418 deletions

View File

@@ -1 +0,0 @@
COMPOSE_PROJECT_NAME=spack

View File

@@ -0,0 +1,132 @@
ARG BASE
FROM $BASE
MAINTAINER Spack Maintainers <maintainers@spack.io>
ARG BASE
ARG DISTRO
ARG DISTRO_VERSION
ENV DOCKERFILE_BASE=$BASE \
DOCKERFILE_DISTRO=$DISTRO \
DOCKERFILE_DISTRO_VERSION=$DISTRO_VERSION \
SPACK_ROOT=/spack \
FORCE_UNSAFE_CONFIGURE=1 \
DEBIAN_FRONTEND=noninteractive \
container=docker
COPY bin $SPACK_ROOT/bin
COPY etc $SPACK_ROOT/etc
COPY lib $SPACK_ROOT/lib
COPY share $SPACK_ROOT/share
COPY var $SPACK_ROOT/var
RUN mkdir -p $SPACK_ROOT/opt/spack
MASK PUSH
MASK [[ $DISTRO == arch ]]
RUN pacman -Sy --noconfirm \
base-devel ca-certificates curl gcc \
gcc-fortran git gnupg2 iproute2 \
make openssh python python-pip \
sudo tcl \
&& echo 'nobody ALL=(ALL) NOPASSWD: ALL' > \
/etc/sudoers.d/nobody-sudo \
&& sudo -u nobody git clone --depth 1 \
https://aur.archlinux.org/lua-posix.git /tmp/lua-posix \
&& sudo -u nobody git clone --depth 1 \
https://aur.archlinux.org/lmod.git /tmp/lmod \
&& ( cd /tmp/lua-posix \
&& sudo -u nobody makepkg -si --asdeps --noconfirm ) \
&& ( cd /tmp/lmod \
&& sudo -u nobody makepkg -si --noconfirm ) \
&& rm -rf /tmp/lua-posix /tmp/lmod /etc/sudoers.d/nobody-sudo
MASK [[ $DISTRO =~ (centos|rhel.*) ]]
RUN yum update -y
MASK PUSH
MASK [[ $DISTRO =~ rhel.* ]]
RUN yum install -y yum-conf-repos.noarch \
&& yum update -y
MASK POP
RUN yum install -y epel-release \
&& yum update -y \
&& yum --enablerepo epel groupinstall -y "Development Tools" \
&& yum --enablerepo epel install -y \
curl findutils gcc-c++ gcc \
gcc-gfortran git gnupg2 hostname \
iproute Lmod make patch \
openssh-server python python-pip tcl \
&& rm -rf /var/cache/yum \
&& yum clean all
MASK [[ $DISTRO == fedora ]]
RUN dnf update -y \
&& dnf group install -y "C Development Tools and Libraries" \
&& dnf install -y \
@development-tools \
curl findutils gcc-c++ gcc \
gcc-gfortran git gnupg2 hostname \
iproute Lmod make patch \
openssh-server python tcl \
&& dnf clean all
MASK [[ $DISTRO == opensuse ]]
RUN zypper -n ref \
&& zypper -n up --skip-interactive --no-recommends \
&& zypper -n install -l --no-recommends --type pattern \
devel_basis devel_C_C++ \
&& zypper -n install -l --no-recommends \
bash bash-completion ca-certificates curl \
findutils gcc gcc-locale gcc-c++ \
gcc-fortran git glibc-locale gpg2 \
hostname iproute lua-lmod make \
patch openssh python python-pip \
python-xml tcl \
&& zypper clean \
&& rm -rf /var/cache/zypp/*
MASK [[ $DISTRO == ubuntu ]]
RUN apt-get -yqq update \
&& apt-get -yqq install \
build-essential ca-certificates curl g++ \
gcc gfortran git gnupg2 \
iproute2 lmod lua-posix make \
openssh-server python python-pip tcl
MASK PUSH
MASK [[ $DISTRO_VERSION == bionic ]]
# [WORKAROUND]
# https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082
RUN ln -s posix_c.so /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so
MASK POP
RUN rm -rf /var/lib/apt/lists/*
MASK POP
RUN rm -rf $SPACK_ROOT/.git \
&& pip install boto3 \
&& ( echo ". /usr/share/lmod/lmod/init/bash" \
&& echo ". $SPACK_ROOT/share/spack/setup-env.sh" \
&& echo ". $SPACK_ROOT/share/spack/spack-completion.bash" ) \
>> /etc/profile.d/spack.sh \
&& ln -s $SPACK_ROOT/share/spack/docker/handle-ssh.sh \
/etc/profile.d/handle-ssh.sh \
&& ln -s $SPACK_ROOT/share/spack/docker/handle-prompt.sh \
/etc/profile.d/handle-prompt.sh \
&& mkdir -p /root/.spack \
&& cp $SPACK_ROOT/share/spack/docker/modules.yaml \
/root/.spack/modules.yaml \
&& rm -rf /root/*.*
MASK PUSH
MASK [[ $DISTRO_VERSION =~ (centos|fedora|opensuse|rhel.*) ]]
RUN rm -f /run/nologin
MASK POP
WORKDIR /root
ENTRYPOINT ["bash", "/spack/share/spack/docker/entrypoint.bash"]
CMD ["docker-shell"]

View File

@@ -0,0 +1,84 @@
#! /usr/bin/env bash
#
# Copyright 2013-2018 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)
script="$( basename "$0" )"
cd "$( dirname "$0" )"
if [ -z "$BASE_IMAGE" ] ; then
BASE_IMAGE="ubuntu"
fi
if [ -z "$BASE_TAG" ] ; then
BASE_TAG="latest"
fi
if [ -z "$DISTRO" ] ; then
DISTRO="${BASE_IMAGE}"
fi
if [ -z "$DISTRO_VERSION" ] ; then
DISTRO_VERSION="${BASE_TAG}"
fi
if [ -z "$BASE_NAME" ] ; then
BASE_NAME="${DISTRO}"
fi
if [ "$BASE_TAG" '=' 'latest' ] ; then
BASE_TAG=""
fi
if [ -n "$BASE_TAG" ] ; then
BASE_TAG=":${BASE_TAG}"
fi
TAG="spack/${BASE_NAME}${BASE_TAG}"
export BASE_IMAGE BASE_TAG DISTRO DISTRO_VERSION BASE_NAME TAG
if [ "$script" '=' 'run-image.sh' ] ; then
com="docker run --rm -ti"
if [ -z "$DISABLE_MOUNT" ] ; then
DISABLE_MOUNT=1
if [ -z "$*" ] ; then
DISABLE_MOUNT=0
fi
fi
if [ "$DISABLE_MOUNT" '==' 0 ] ; then
com="${com} -v \"$( readlink -f ../../.. ):/spack\""
fi
eval "exec ${com}" "${TAG}" "$@"
elif [ "$script" '=' 'render-image-template.sh' ] ; then
./dpp.bash Dockerfile
elif [ "$script" '=' 'push-image.sh' ] ; then
docker push "${TAG}"
for tag in ${EXTRA_TAGS} ; do
docker push "spack/${BASE_NAME}:${tag}"
done
else
tag_options="-t ${TAG}"
for tag in ${EXTRA_TAGS} ; do
tag_options="${tag_options} -t spack/${BASE_NAME}:${tag}"
done
cache_options=""
if docker pull "${TAG}" ; then
cache_options="--cache-from ${TAG}"
fi
exec ./render-image-template.sh |
docker build -f - \
${cache_options} \
${tag_options} \
--build-arg BASE="${BASE_IMAGE}${BASE_TAG}" \
--build-arg DISTRO="${DISTRO}" \
--build-arg DISTRO_VERSION="${DISTRO_VERSION}" \
../../..
fi

View File

@@ -1,59 +0,0 @@
FROM base/archlinux
MAINTAINER Omar Padron <omar.padron@kitware.com>
ENV SPACK_ROOT=/spack \
FORCE_UNSAFE_CONFIGURE=1 \
DISTRO=arch
RUN pacman -Sy --noconfirm \
base-devel \
ca-certificates \
curl \
gcc \
gcc-fortran \
git \
gnupg2 \
iproute2 \
make \
openssh \
python \
sudo \
tcl && \
git clone --depth 1 git://github.com/spack/spack.git /spack && \
echo 'nobody ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/nobody-sudo && \
sudo -u nobody git clone --depth 1 \
https://aur.archlinux.org/lua-posix.git /tmp/lua-posix && \
sudo -u nobody git clone --depth 1 \
https://aur.archlinux.org/lmod.git /tmp/lmod && \
( cd /tmp/lua-posix ; sudo -u nobody makepkg -si --asdeps --noconfirm ) && \
( cd /tmp/lmod ; sudo -u nobody makepkg -si --noconfirm ) && \
rm -rf /tmp/lua-posix /tmp/lmod /spack/.git /etc/sudoers.d/nobody-sudo
RUN ( cd /usr/share/lmod ; ln -s $( ls -d ./* | head -n 1 ) ./lmod )
RUN echo "source /usr/share/lmod/lmod/init/bash" \
> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/setup-env.sh" \
>> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/spack-completion.bash" \
>> /etc/profile.d/spack.sh
COPY common/handle-ssh.sh /etc/profile.d/handle-ssh.sh
COPY common/handle-prompt.sh /etc/profile.d/handle-prompt.sh.source
RUN ( \
echo "export DISTRO=$DISTRO" ; \
echo "if [ x\$PROMPT '!=' 'x' -a x\$PROMPT '!=' 'x0' ]" ; \
echo "then" ; \
echo "source /etc/profile.d/handle-prompt.sh.source" ; \
echo "fi" ; \
) > /etc/profile.d/handle-prompt.sh
RUN mkdir -p /root/.spack
COPY common/modules.yaml /root/.spack/modules.yaml
RUN rm -rf /root/*.*
WORKDIR /root
ENTRYPOINT ["bash"]
CMD ["-l"]

View File

@@ -1,57 +0,0 @@
FROM centos
MAINTAINER Omar Padron <omar.padron@kitware.com>
ENV SPACK_ROOT=/spack \
FORCE_UNSAFE_CONFIGURE=1 \
DISTRO=centos
RUN yum update -y && \
yum install -y epel-release && \
yum update -y && \
yum groupinstall -y "Development Tools" && \
yum install -y \
curl \
findutils \
gcc-c++ \
gcc \
gcc-gfortran \
git \
gnupg2 \
hostname \
iproute \
Lmod \
make \
patch \
openssh-server \
python \
tcl && \
git clone --depth 1 git://github.com/spack/spack.git /spack && \
rm -rf /spack/.git /var/cache/yum && yum clean all
RUN echo "source /usr/share/lmod/lmod/init/bash" \
> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/setup-env.sh" \
>> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/spack-completion.bash" \
>> /etc/profile.d/spack.sh
COPY common/handle-ssh.sh /etc/profile.d/handle-ssh.sh
COPY common/handle-prompt.sh /etc/profile.d/handle-prompt.sh.source
RUN ( \
echo "export DISTRO=$DISTRO" ; \
echo "if [ x\$PROMPT '!=' 'x' -a x\$PROMPT '!=' 'x0' ]" ; \
echo "then" ; \
echo "source /etc/profile.d/handle-prompt.sh.source" ; \
echo "fi" ; \
) > /etc/profile.d/handle-prompt.sh
RUN mkdir -p /root/.spack
COPY common/modules.yaml /root/.spack/modules.yaml
RUN rm -f /run/nologin
RUN rm -rf /root/*.*
WORKDIR /root
ENTRYPOINT ["bash"]
CMD ["-l"]

View File

@@ -1,56 +0,0 @@
FROM fedora:24
MAINTAINER Omar Padron <omar.padron@kitware.com>
ENV SPACK_ROOT=/spack \
FORCE_UNSAFE_CONFIGURE=1 \
DISTRO=fedora
RUN dnf update -y && \
dnf group install -y "C Development Tools and Libraries" && \
dnf install -y \
@development-tools \
curl \
findutils \
gcc-c++ \
gcc \
gcc-gfortran \
git \
gnupg2 \
hostname \
iproute \
Lmod \
make \
patch \
openssh-server \
python \
tcl && \
git clone --depth 1 git://github.com/spack/spack.git /spack && \
rm -rf /spack/.git && dnf clean all
RUN echo "source /usr/share/lmod/lmod/init/bash" \
> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/setup-env.sh" \
>> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/spack-completion.bash" \
>> /etc/profile.d/spack.sh
COPY common/handle-ssh.sh /etc/profile.d/handle-ssh.sh
COPY common/handle-prompt.sh /etc/profile.d/handle-prompt.sh.source
RUN ( \
echo "export DISTRO=$DISTRO" ; \
echo "if [ x\$PROMPT '!=' 'x' -a x\$PROMPT '!=' 'x0' ]" ; \
echo "then" ; \
echo "source /etc/profile.d/handle-prompt.sh.source" ; \
echo "fi" ; \
) > /etc/profile.d/handle-prompt.sh
RUN mkdir -p /root/.spack
COPY common/modules.yaml /root/.spack/modules.yaml
RUN rm -f /run/nologin
RUN rm -rf /root/*.*
WORKDIR /root
ENTRYPOINT ["bash"]
CMD ["-l"]

View File

@@ -1,65 +0,0 @@
FROM opensuse
MAINTAINER Omar Padron <omar.padron@kitware.com>
ENV SPACK_ROOT=/spack \
FORCE_UNSAFE_CONFIGURE=1 \
DISTRO=opensuse
RUN zypper -n ref && \
zypper -n up --skip-interactive --no-recommends && \
zypper -n install -l --no-recommends --type pattern \
devel_basis \
devel_C_C++ && \
zypper -n install -l --no-recommends \
bash \
bash-completion \
ca-certificates \
curl \
findutils \
gcc \
gcc-locale \
gcc-c++ \
gcc-fortran \
git \
glibc-locale \
gpg2 \
hostname \
iproute \
lua-lmod \
make \
patch \
openssh \
python \
python-xml \
tcl && \
git clone --depth 1 git://github.com/spack/spack.git /spack && \
zypper clean && \
rm -rf /spack/.git /var/cache/zypp/*
RUN echo "source /usr/share/lmod/lmod/init/bash" \
> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/setup-env.sh" \
>> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/spack-completion.bash" \
>> /etc/profile.d/spack.sh
COPY common/handle-ssh.sh /etc/profile.d/handle-ssh.sh
COPY common/handle-prompt.sh /etc/profile.d/handle-prompt.sh.source
RUN ( \
echo "export DISTRO=$DISTRO" ; \
echo "if [ x\$PROMPT '!=' 'x' -a x\$PROMPT '!=' 'x0' ]" ; \
echo "then" ; \
echo "source /etc/profile.d/handle-prompt.sh.source" ; \
echo "fi" ; \
) > /etc/profile.d/handle-prompt.sh
RUN mkdir -p /root/.spack
COPY common/modules.yaml /root/.spack/modules.yaml
RUN rm -f /run/nologin
RUN rm -rf /root/*.*
WORKDIR /root
ENTRYPOINT ["bash"]
CMD ["-l"]

View File

@@ -1,62 +0,0 @@
FROM sl:7
MAINTAINER Patrick Gartung (gartung@fnal.gov)
ENV SPACK_ROOT=/spack \
FORCE_UNSAFE_CONFIGURE=1 \
DISTRO=rhel7 \
container=docker
RUN yum update -y && \
yum install -y yum-conf-repos.noarch && \
yum update -y && \
yum -y install epel-release && \
yum update -y && \
yum --enablerepo epel \
groupinstall -y "Development Tools" && \
yum --enablerepo epel \
install -y \
curl \
findutils \
gcc-c++ \
gcc \
gcc-gfortran \
git \
gnupg2 \
hostname \
iproute \
Lmod \
make \
patch \
openssh-server \
python \
tcl
RUN git clone --depth=1 git://github.com/spack/spack.git /spack && \
rm -rf /var/cache/yum /spack/.git && yum clean all
RUN echo "source /usr/share/lmod/lmod/init/bash" \
> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/setup-env.sh" \
>> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/spack-completion.bash" \
>> /etc/profile.d/spack.sh
COPY common/handle-ssh.sh /etc/profile.d/handle-ssh.sh
COPY common/handle-prompt.sh /etc/profile.d/handle-prompt.sh.source
RUN ( \
echo "export DISTRO=$DISTRO" ; \
echo "if [ x\$PROMPT '!=' 'x' -a x\$PROMPT '!=' 'x0' ]" ; \
echo "then" ; \
echo "source /etc/profile.d/handle-prompt.sh.source" ; \
echo "fi" ; \
) > /etc/profile.d/handle-prompt.sh
RUN mkdir -p /root/.spack
COPY common/modules.yaml /root/.spack/modules.yaml
RUN rm -f /run/nologin
RUN rm -rf /root/*.*
WORKDIR /root
ENTRYPOINT ["bash"]
CMD ["-l"]

View File

@@ -1,51 +0,0 @@
FROM ubuntu
MAINTAINER Omar Padron <omar.padron@kitware.com>
ENV DEBIAN_FRONTEND=noninteractive \
SPACK_ROOT=/spack \
FORCE_UNSAFE_CONFIGURE=1 \
DISTRO=ubuntu
RUN apt-get -yqq update && apt-get -yqq install \
build-essential \
ca-certificates \
curl \
g++ \
gcc \
gfortran \
git \
gnupg2 \
lmod \
make \
openssh-server \
python \
tcl && \
git clone --depth 1 git://github.com/spack/spack.git /spack && \
rm -rf /spack/.git && rm -rf /var/lib/apt/lists/*
RUN echo "source /usr/share/lmod/lmod/init/bash" \
> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/setup-env.sh" \
>> /etc/profile.d/spack.sh
RUN echo "source /spack/share/spack/spack-completion.bash" \
>> /etc/profile.d/spack.sh
COPY common/handle-ssh.sh /etc/profile.d/handle-ssh.sh
COPY common/handle-prompt.sh /etc/profile.d/handle-prompt.sh.source
RUN ( \
echo "export DISTRO=$DISTRO" ; \
echo "if [ x\$PROMPT '!=' 'x' -a x\$PROMPT '!=' 'x0' ]" ; \
echo "then" ; \
echo "source /etc/profile.d/handle-prompt.sh.source" ; \
echo "fi" ; \
) > /etc/profile.d/handle-prompt.sh
RUN mkdir -p /root/.spack
COPY common/modules.yaml /root/.spack/modules.yaml
RUN rm -rf /root/*.*
WORKDIR /root
ENTRYPOINT ["bash"]
CMD ["-l"]

View File

@@ -0,0 +1,18 @@
# Copyright 2013-2018 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)
unset DISTRO
unset DISTRO_VERSION
unset BASE_IMAGE
unset BASE_NAME
unset BASE_TAG
unset TAG
unset EXTRA_TAGS
export BASE_IMAGE="base/archlinux"
export BASE_NAME="archlinux"
export BASE_TAG="2018.10.01"
export DISTRO="arch"
export EXTRA_TAGS="latest"

View File

@@ -0,0 +1,16 @@
# Copyright 2013-2018 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)
unset DISTRO
unset DISTRO_VERSION
unset BASE_IMAGE
unset BASE_NAME
unset BASE_TAG
unset TAG
unset EXTRA_TAGS
export BASE_IMAGE=centos
export BASE_TAG="7"
export EXTRA_TAGS="latest"

View File

@@ -0,0 +1,16 @@
# Copyright 2013-2018 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)
unset DISTRO
unset DISTRO_VERSION
unset BASE_IMAGE
unset BASE_NAME
unset BASE_TAG
unset TAG
unset EXTRA_TAGS
export BASE_IMAGE=fedora
export BASE_TAG="24"
export EXTRA_TAGS="latest"

View File

@@ -0,0 +1,16 @@
# Copyright 2013-2018 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)
unset DISTRO
unset DISTRO_VERSION
unset BASE_IMAGE
unset BASE_NAME
unset BASE_TAG
unset TAG
unset EXTRA_TAGS
export BASE_IMAGE=opensuse
export BASE_TAG="tumbleweed"
export EXTRA_TAGS="latest"

View File

@@ -0,0 +1,17 @@
# Copyright 2013-2018 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)
unset DISTRO
unset BASE_IMAGE
unset BASE_NAME
unset BASE_TAG
unset TAG
unset EXTRA_TAGS
export BASE_IMAGE=sl
export BASE_TAG="7"
export BASE_NAME=scilinux
export DISTRO=rhel7
export EXTRA_TAGS="latest"

View File

@@ -0,0 +1,15 @@
# Copyright 2013-2018 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)
unset DISTRO
unset BASE_IMAGE
unset BASE_NAME
unset BASE_TAG
unset TAG
unset EXTRA_TAGS
export BASE_IMAGE=ubuntu
export BASE_TAG="bionic"
export EXTRA_TAGS="latest"

View File

@@ -1,56 +0,0 @@
version: '3'
services:
arch:
build:
context: build
dockerfile: arch.dockerfile
volumes:
- '../../..:/spack'
environment:
PROMPT: "${PROMPT:-0}"
centos:
build:
context: build
dockerfile: centos.dockerfile
volumes:
- '../../..:/spack'
environment:
PROMPT: "${PROMPT:-0}"
fedora:
build:
context: build
dockerfile: fedora.dockerfile
volumes:
- '../../..:/spack'
environment:
PROMPT: "${PROMPT:-0}"
opensuse:
build:
context: build
dockerfile: opensuse.dockerfile
volumes:
- '../../..:/spack'
environment:
PROMPT: "${PROMPT:-0}"
scilinux:
build:
context: build
dockerfile: scilinux.dockerfile
volumes:
- '../../..:/spack'
environment:
PROMPT: "${PROMPT:-0}"
scilinux:
build: ./spack_scilinux
volumes:
- '../../..:/spack'
environment:
PROMPT: "${PROMPT:-0}"
ubuntu:
build:
context: build
dockerfile: ubuntu.dockerfile
volumes:
- '../../..:/spack'
environment:
PROMPT: "${PROMPT:-0}"

77
share/spack/docker/dpp.bash Executable file
View File

@@ -0,0 +1,77 @@
#! /usr/bin/env bash
#
# Copyright 2013-2018 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)
function prefix_tokens() {
line="$1" ; shift
nprefix="$1"
line="${line::$nprefix} "
echo "${line::$nprefix}"
}
# read file contents, or stdin
cat "$1" |
# remove blank lines
grep -v '^ *$' |
# remove leading whitespace
sed 's/^ *//g' |
# remove comments
grep -v '^#.*' |
# remove trailing whitespace
sed 's/ *$//g' |
# remove extraneous whitespace
sed 's/ */ /g' |
# mask out subsections
(
stack_level=1
mask_level=1
while read LINE ; do
try_print=1
if [ "$( prefix_tokens "$LINE" 10 )" '=' 'MASK PUSH ' ] ; then
tmp="$stack_level"
stack_level="$(( stack_level + 1 ))"
if [ "$mask_level" '=' "$tmp" ] ; then
mask_level="$stack_level"
fi
try_print=0
elif [ "$( prefix_tokens "$LINE" 9 )" '=' 'MASK POP ' ] ; then
stack_level="$(( stack_level - 1 ))"
if [ "$mask_level" -gt "$stack_level" ] ; then
mask_level="$stack_level"
fi
try_print=0
elif [ "$( prefix_tokens "$LINE" 5 )" '=' 'MASK ' ] ; then
if [ "$(( mask_level + 1 ))" -ge "$stack_level" ] ; then
mask_level="$stack_level"
eval "${LINE:5}"
if [ "$?" '!=' 0 ] ; then
mask_level="$(( mask_level - 1 ))"
fi
fi
try_print=0
fi
if [ "$stack_level" -lt 1 ] ; then
stack_level=1
mask_level=0
fi
if [ "$try_print" '=' 1 -a "$mask_level" '=' "$stack_level" ] ; then
echo "$LINE"
fi
done
)

View File

@@ -0,0 +1,43 @@
#! /usr/bin/env bash -e
#
# Copyright 2013-2018 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)
if [ "$1" '=' 'docker-shell' ] ; then
if [ -t 0 ] ; then
exec bash -il
else
(
echo -n "It looks like you're trying to run an intractive shell"
echo -n " session, but either no psuedo-TTY is allocateed for this"
echo -n " container's STDIN, or it is closed."
echo
echo -n "Make sure you run docker with the --interactive and --tty"
echo -n " options."
echo
) >&2
exit 1
fi
else
exec 3>&1
exec 4>&2
exec 1>&-
exec 2>&-
source /etc/profile.d/spack.sh
source /etc/profile.d/handle-ssh.sh
exec 1>&3
exec 2>&4
exec 3>&-
exec 4>&-
spack "$@"
exit $?
fi

View File

@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
if [ x$SPACK_PROMPT '!=' x0 ] ; then
__tmp="`mktemp -d`"
__trylock() {
@@ -83,7 +85,7 @@ __git_head() {
__update_prompt() {
local prompt
prompt=''
linux_distro="$DISTRO"
linux_distro="$DOCKERFILE_DISTRO"
if [ -n "$linux_distro" ] ; then
linux_distro='\[\e[1;34m\][\[\e[0;34m\]'"$linux_distro"'\[\e[1;34m\]]'
if [ -n "$prompt" ] ; then
@@ -163,3 +165,5 @@ __update_prompt_main() {
}
PROMPT_COMMAND=__update_prompt_main
fi # [ x$SPACK_PROMPT '!=' x0 ]

View File

@@ -0,0 +1 @@
./build-image.sh

View File

@@ -0,0 +1 @@
./build-image.sh

View File

@@ -0,0 +1 @@
build-image.sh