From 911b6d7671a66010b02ddf8b38d25f3438da71ce Mon Sep 17 00:00:00 2001 From: Omar Padron Date: Tue, 26 Jun 2018 10:37:28 -0400 Subject: Docker dedupe (#8441) * Add Dockerfile for Scientific Linux 7 (RHEL7 recompile) * revert version change * remove duplicate docker-related files --- share/spack/docker/build/arch.dockerfile | 59 ++++++++ share/spack/docker/build/centos.dockerfile | 57 ++++++++ share/spack/docker/build/common/handle-prompt.sh | 160 +++++++++++++++++++++ share/spack/docker/build/common/handle-ssh.sh | 36 +++++ share/spack/docker/build/common/modules.yaml | 6 + share/spack/docker/build/fedora.dockerfile | 56 ++++++++ share/spack/docker/build/opensuse.dockerfile | 65 +++++++++ share/spack/docker/build/scilinux.dockerfile | 62 ++++++++ share/spack/docker/build/ubuntu.dockerfile | 51 +++++++ share/spack/docker/docker-compose.yml | 28 +++- share/spack/docker/spack_arch/Dockerfile | 59 -------- share/spack/docker/spack_arch/handle-prompt.sh | 143 ------------------ share/spack/docker/spack_arch/handle-ssh.sh | 36 ----- share/spack/docker/spack_arch/modules.yaml | 6 - share/spack/docker/spack_centos/Dockerfile | 57 -------- share/spack/docker/spack_centos/handle-prompt.sh | 143 ------------------ share/spack/docker/spack_centos/handle-ssh.sh | 36 ----- share/spack/docker/spack_centos/modules.yaml | 6 - share/spack/docker/spack_fedora/Dockerfile | 56 -------- share/spack/docker/spack_fedora/handle-prompt.sh | 143 ------------------ share/spack/docker/spack_fedora/handle-ssh.sh | 36 ----- share/spack/docker/spack_fedora/modules.yaml | 6 - share/spack/docker/spack_opensuse/Dockerfile | 65 --------- share/spack/docker/spack_opensuse/handle-prompt.sh | 143 ------------------ share/spack/docker/spack_opensuse/handle-ssh.sh | 36 ----- share/spack/docker/spack_opensuse/modules.yaml | 6 - share/spack/docker/spack_ubuntu/Dockerfile | 51 ------- share/spack/docker/spack_ubuntu/handle-prompt.sh | 143 ------------------ share/spack/docker/spack_ubuntu/handle-ssh.sh | 36 ----- share/spack/docker/spack_ubuntu/modules.yaml | 6 - 30 files changed, 575 insertions(+), 1218 deletions(-) create mode 100644 share/spack/docker/build/arch.dockerfile create mode 100644 share/spack/docker/build/centos.dockerfile create mode 100644 share/spack/docker/build/common/handle-prompt.sh create mode 100644 share/spack/docker/build/common/handle-ssh.sh create mode 100644 share/spack/docker/build/common/modules.yaml create mode 100644 share/spack/docker/build/fedora.dockerfile create mode 100644 share/spack/docker/build/opensuse.dockerfile create mode 100644 share/spack/docker/build/scilinux.dockerfile create mode 100644 share/spack/docker/build/ubuntu.dockerfile delete mode 100644 share/spack/docker/spack_arch/Dockerfile delete mode 100644 share/spack/docker/spack_arch/handle-prompt.sh delete mode 100644 share/spack/docker/spack_arch/handle-ssh.sh delete mode 100644 share/spack/docker/spack_arch/modules.yaml delete mode 100644 share/spack/docker/spack_centos/Dockerfile delete mode 100644 share/spack/docker/spack_centos/handle-prompt.sh delete mode 100644 share/spack/docker/spack_centos/handle-ssh.sh delete mode 100644 share/spack/docker/spack_centos/modules.yaml delete mode 100644 share/spack/docker/spack_fedora/Dockerfile delete mode 100644 share/spack/docker/spack_fedora/handle-prompt.sh delete mode 100644 share/spack/docker/spack_fedora/handle-ssh.sh delete mode 100644 share/spack/docker/spack_fedora/modules.yaml delete mode 100644 share/spack/docker/spack_opensuse/Dockerfile delete mode 100644 share/spack/docker/spack_opensuse/handle-prompt.sh delete mode 100644 share/spack/docker/spack_opensuse/handle-ssh.sh delete mode 100644 share/spack/docker/spack_opensuse/modules.yaml delete mode 100644 share/spack/docker/spack_ubuntu/Dockerfile delete mode 100644 share/spack/docker/spack_ubuntu/handle-prompt.sh delete mode 100644 share/spack/docker/spack_ubuntu/handle-ssh.sh delete mode 100644 share/spack/docker/spack_ubuntu/modules.yaml diff --git a/share/spack/docker/build/arch.dockerfile b/share/spack/docker/build/arch.dockerfile new file mode 100644 index 0000000000..6aa9ac0118 --- /dev/null +++ b/share/spack/docker/build/arch.dockerfile @@ -0,0 +1,59 @@ +FROM base/archlinux +MAINTAINER Omar Padron + +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"] diff --git a/share/spack/docker/build/centos.dockerfile b/share/spack/docker/build/centos.dockerfile new file mode 100644 index 0000000000..20c24b038f --- /dev/null +++ b/share/spack/docker/build/centos.dockerfile @@ -0,0 +1,57 @@ +FROM centos +MAINTAINER Omar Padron + +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"] diff --git a/share/spack/docker/build/common/handle-prompt.sh b/share/spack/docker/build/common/handle-prompt.sh new file mode 100644 index 0000000000..2faf38d627 --- /dev/null +++ b/share/spack/docker/build/common/handle-prompt.sh @@ -0,0 +1,160 @@ +__tmp="`mktemp -d`" + +__trylock() { + local dir + dir="$__tmp/$1.lock" + mkdir "$dir" &>/dev/null + return $? +} + +__queue_init() { + local r + local w + + mkdir "$__tmp/$1.read.lock" ; r=$? + mkdir "$__tmp/$1.write.lock" ; w=$? + + if [ "$r" '=' '0' -a "$w" '=' '0' ] ; then + return 0 + else + return 1 + fi +} + +__queue_try_read() { + __trylock "$1.read" + return $? +} + +__queue_try_write() { + __trylock "$1.write" + return $? +} + +__queue_make_readable() { + rm -r "$__tmp/$1.read.lock" &>/dev/null + return $? +} + +__queue_make_writable() { + rm -r "$__tmp/$1.write.lock" &>/dev/null + return $? +} + +__read() { + cat "$__tmp/$1" 2> /dev/null + return $? +} + +__write() { + cat > "$__tmp/$1" 2> /dev/null + return $? +} + +__revparse_head() { + head="`git -C /spack rev-parse $@ HEAD 2>/dev/null`" + result="$?" + if [ "$result" '!=' '0' ] ; then + head="`git --git-dir=/spack/.git \\ + --work-tree=/spack rev-parse $@ HEAD 2>/dev/null`" + result="$?" + fi + + echo "$head" + return $result +} + +__git_head() { + head="`__revparse_head --abbrev-ref`" + if [ "$?" '=' '0' ] ; then + if [ "$head" '=' 'HEAD' ] ; then + head="`__revparse_head | cut -c1-8`..." + fi + + echo "$head" + fi +} + +__update_prompt() { + local prompt + prompt='' + linux_distro="$DISTRO" + if [ -n "$linux_distro" ] ; then + linux_distro='\[\e[1;34m\][\[\e[0;34m\]'"$linux_distro"'\[\e[1;34m\]]' + if [ -n "$prompt" ] ; then + prompt="$prompt " + fi + prompt="$prompt$linux_distro" + fi + + git_head="`__git_head`" + + if [ -n "$git_head" ] ; then + git_head='\[\e[1;32m\](\[\e[0;32m\]'"$git_head"'\[\e[1;32m\])' + if [ -n "$prompt" ] ; then + prompt="$prompt " + fi + prompt="$prompt$git_head" + fi + + if [ -n "$prompt" ] ; then + prompt="$prompt " + fi + prompt="$prompt"'\[\e[0;m\]\W: ' + echo "$prompt" | __write prompt +} + +set -m +( + __queue_init query + __queue_init prompt + + __update_prompt + __queue_make_readable prompt + + __queue_make_writable query + + while sleep 0.010 ; do + last_q_time='' + + while sleep 0.010 ; do + q_time="`date +%s%N`" + if __queue_try_read query ; then + last_q_time="$q_time" + __queue_make_writable query + fi + + if [ -n "$last_q_time" -a \ + "$(( (q_time - last_q_time)/10000000 > 100 ))" '=' '1' ] ; then + break + fi + done + + __update_prompt + __queue_make_readable prompt + done +) &>/dev/null & +set +m + +__update_prompt_main_first_call=1 +__update_prompt_main() { + if [ "$__update_prompt_main_first_call" '=' '1' ] ; then + while sleep 0.001 ; do + if __queue_try_read prompt ; then + PS1="`__read prompt`" + break + fi + done + __update_prompt_main_first_call=0 + else + if __queue_try_read prompt ; then + PS1="`__read prompt`" + fi + fi + + if __queue_try_write query ; then + __queue_make_readable query + fi +} + +PROMPT_COMMAND=__update_prompt_main diff --git a/share/spack/docker/build/common/handle-ssh.sh b/share/spack/docker/build/common/handle-ssh.sh new file mode 100644 index 0000000000..f13c10e212 --- /dev/null +++ b/share/spack/docker/build/common/handle-ssh.sh @@ -0,0 +1,36 @@ +uid="`id -u`" +if [ "$uid" '=' '0' ] ; then + for key_type in dsa ecdsa ed25519 rsa ; do + private_key_file="/etc/ssh/ssh_host_${key_type}_key" + public_key_file="$private_key_file.pub" + + if [ '!' -f "$private_key_file" ] ; then + ssh-keygen \ + -q -t "$key_type" -N "" -f "$private_key_file" + chmod 600 "$private_key_file" + chmod 644 "$public_key_file" + fi + done + + mkdir -p /var/run/sshd + + pgrep -u 0 -U 0 sshd &> /dev/null + if [ '!' "$?" '=' '0' ] ; then + nohup /usr/sbin/sshd -f /etc/ssh/sshd_config < /dev/null &> /dev/null + fi +fi + +if [ '!' -f "$HOME/.ssh/id_rsa" ] ; then + ssh-keygen \ + -t rsa -C "spack.developer@docker.host" -N "" -f "$HOME/.ssh/id_rsa" + cat "$HOME/.ssh/id_rsa.pub" >> "$HOME/.ssh/authorized_keys" + chmod 600 "$HOME/.ssh/authorized_keys" + + docker_ip="`ip address show dev eth0 | + grep inet | + cut -d' ' -f 6 | + cut -d/ -f 1`" + + ssh-keyscan -t rsa 127.0.0.1 localhost "$docker_ip" "`hostname`" \ + > "$HOME/.ssh/known_hosts" 2> /dev/null +fi diff --git a/share/spack/docker/build/common/modules.yaml b/share/spack/docker/build/common/modules.yaml new file mode 100644 index 0000000000..02907ecc40 --- /dev/null +++ b/share/spack/docker/build/common/modules.yaml @@ -0,0 +1,6 @@ +modules: + enable: + - lmod + lmod: + core_compilers: + - gcc diff --git a/share/spack/docker/build/fedora.dockerfile b/share/spack/docker/build/fedora.dockerfile new file mode 100644 index 0000000000..bf06411d21 --- /dev/null +++ b/share/spack/docker/build/fedora.dockerfile @@ -0,0 +1,56 @@ +FROM fedora:24 +MAINTAINER Omar Padron + +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"] diff --git a/share/spack/docker/build/opensuse.dockerfile b/share/spack/docker/build/opensuse.dockerfile new file mode 100644 index 0000000000..46189a41c9 --- /dev/null +++ b/share/spack/docker/build/opensuse.dockerfile @@ -0,0 +1,65 @@ +FROM opensuse +MAINTAINER Omar Padron + +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"] diff --git a/share/spack/docker/build/scilinux.dockerfile b/share/spack/docker/build/scilinux.dockerfile new file mode 100644 index 0000000000..3827f5f60e --- /dev/null +++ b/share/spack/docker/build/scilinux.dockerfile @@ -0,0 +1,62 @@ +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"] diff --git a/share/spack/docker/build/ubuntu.dockerfile b/share/spack/docker/build/ubuntu.dockerfile new file mode 100644 index 0000000000..ac608ddd12 --- /dev/null +++ b/share/spack/docker/build/ubuntu.dockerfile @@ -0,0 +1,51 @@ +FROM ubuntu +MAINTAINER Omar Padron + +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"] diff --git a/share/spack/docker/docker-compose.yml b/share/spack/docker/docker-compose.yml index 380ebfc425..4f37127e3f 100644 --- a/share/spack/docker/docker-compose.yml +++ b/share/spack/docker/docker-compose.yml @@ -1,25 +1,41 @@ version: '3' services: arch: - build: ./spack_arch + build: + context: build + dockerfile: arch.dockerfile volumes: - '../../..:/spack' environment: PROMPT: "${PROMPT:-0}" centos: - build: ./spack_centos + build: + context: build + dockerfile: centos.dockerfile volumes: - '../../..:/spack' environment: PROMPT: "${PROMPT:-0}" fedora: - build: ./spack_fedora + build: + context: build + dockerfile: fedora.dockerfile volumes: - '../../..:/spack' environment: PROMPT: "${PROMPT:-0}" opensuse: - build: ./spack_opensuse + build: + context: build + dockerfile: opensuse.dockerfile + volumes: + - '../../..:/spack' + environment: + PROMPT: "${PROMPT:-0}" + scilinux: + build: + context: build + dockerfile: scilinux.dockerfile volumes: - '../../..:/spack' environment: @@ -31,7 +47,9 @@ services: environment: PROMPT: "${PROMPT:-0}" ubuntu: - build: ./spack_ubuntu + build: + context: build + dockerfile: ubuntu.dockerfile volumes: - '../../..:/spack' environment: diff --git a/share/spack/docker/spack_arch/Dockerfile b/share/spack/docker/spack_arch/Dockerfile deleted file mode 100644 index 973b16f125..0000000000 --- a/share/spack/docker/spack_arch/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM base/archlinux -MAINTAINER Omar Padron - -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 handle-ssh.sh /etc/profile.d/handle-ssh.sh -COPY 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 modules.yaml /root/.spack/modules.yaml - -RUN rm -rf /root/*.* - -WORKDIR /root -ENTRYPOINT ["bash"] -CMD ["-l"] diff --git a/share/spack/docker/spack_arch/handle-prompt.sh b/share/spack/docker/spack_arch/handle-prompt.sh deleted file mode 100644 index bf62224a60..0000000000 --- a/share/spack/docker/spack_arch/handle-prompt.sh +++ /dev/null @@ -1,143 +0,0 @@ -__tmp="`mktemp -d`" - -__trylock() { - local dir - dir="$__tmp/$1.lock" - mkdir "$dir" &>/dev/null - return $? -} - -__queue_init() { - local r - local w - - mkdir "$__tmp/$1.read.lock" ; r=$? - mkdir "$__tmp/$1.write.lock" ; w=$? - - if [ "$r" '=' '0' -a "$w" '=' '0' ] ; then - return 0 - else - return 1 - fi -} - -__queue_try_read() { - __trylock "$1.read" - return $? -} - -__queue_try_write() { - __trylock "$1.write" - return $? -} - -__queue_make_readable() { - rm -r "$__tmp/$1.read.lock" &>/dev/null - return $? -} - -__queue_make_writable() { - rm -r "$__tmp/$1.write.lock" &>/dev/null - return $? -} - -__read() { - cat "$__tmp/$1" 2> /dev/null - return $? -} - -__write() { - cat > "$__tmp/$1" 2> /dev/null - return $? -} - -__update_prompt() { - local prompt - prompt='' - linux_distro="$DISTRO" - if [ -n "$linux_distro" ] ; then - linux_distro='\[\e[1;34m\][\[\e[0;34m\]'"$linux_distro"'\[\e[1;34m\]]' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$linux_distro" - fi - - git_head="`git -C /spack rev-parse --abbrev-ref HEAD 2>/dev/null`" - if [ "$?" '=' '0' ] ; then - if [ "$git_head" '=' 'HEAD' ] ; then - git_head="`git -C /spack rev-parse HEAD 2>/dev/null | cut -c1-8`..." - fi - else - git_head='' - fi - - if [ -n "$git_head" ] ; then - git_head='\[\e[1;32m\](\[\e[0;32m\]'"$git_head"'\[\e[1;32m\])' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$git_head" - fi - - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt"'\[\e[0;m\]\W: ' - echo "$prompt" | __write prompt -} - -set -m -( - __queue_init query - __queue_init prompt - - __update_prompt - __queue_make_readable prompt - - __queue_make_writable query - - while sleep 0.010 ; do - last_q_time='' - - while sleep 0.010 ; do - q_time="`date +%s%N`" - if __queue_try_read query ; then - last_q_time="$q_time" - __queue_make_writable query - fi - - if [ -n "$last_q_time" -a \ - "$(( (q_time - last_q_time)/10000000 > 100 ))" '=' '1' ] ; then - break - fi - done - - __update_prompt - __queue_make_readable prompt - done -) &>/dev/null & -set +m - -__update_prompt_main_first_call=1 -__update_prompt_main() { - if [ "$__update_prompt_main_first_call" '=' '1' ] ; then - while sleep 0.001 ; do - if __queue_try_read prompt ; then - PS1="`__read prompt`" - break - fi - done - __update_prompt_main_first_call=0 - else - if __queue_try_read prompt ; then - PS1="`__read prompt`" - fi - fi - - if __queue_try_write query ; then - __queue_make_readable query - fi -} - -PROMPT_COMMAND=__update_prompt_main diff --git a/share/spack/docker/spack_arch/handle-ssh.sh b/share/spack/docker/spack_arch/handle-ssh.sh deleted file mode 100644 index f13c10e212..0000000000 --- a/share/spack/docker/spack_arch/handle-ssh.sh +++ /dev/null @@ -1,36 +0,0 @@ -uid="`id -u`" -if [ "$uid" '=' '0' ] ; then - for key_type in dsa ecdsa ed25519 rsa ; do - private_key_file="/etc/ssh/ssh_host_${key_type}_key" - public_key_file="$private_key_file.pub" - - if [ '!' -f "$private_key_file" ] ; then - ssh-keygen \ - -q -t "$key_type" -N "" -f "$private_key_file" - chmod 600 "$private_key_file" - chmod 644 "$public_key_file" - fi - done - - mkdir -p /var/run/sshd - - pgrep -u 0 -U 0 sshd &> /dev/null - if [ '!' "$?" '=' '0' ] ; then - nohup /usr/sbin/sshd -f /etc/ssh/sshd_config < /dev/null &> /dev/null - fi -fi - -if [ '!' -f "$HOME/.ssh/id_rsa" ] ; then - ssh-keygen \ - -t rsa -C "spack.developer@docker.host" -N "" -f "$HOME/.ssh/id_rsa" - cat "$HOME/.ssh/id_rsa.pub" >> "$HOME/.ssh/authorized_keys" - chmod 600 "$HOME/.ssh/authorized_keys" - - docker_ip="`ip address show dev eth0 | - grep inet | - cut -d' ' -f 6 | - cut -d/ -f 1`" - - ssh-keyscan -t rsa 127.0.0.1 localhost "$docker_ip" "`hostname`" \ - > "$HOME/.ssh/known_hosts" 2> /dev/null -fi diff --git a/share/spack/docker/spack_arch/modules.yaml b/share/spack/docker/spack_arch/modules.yaml deleted file mode 100644 index 02907ecc40..0000000000 --- a/share/spack/docker/spack_arch/modules.yaml +++ /dev/null @@ -1,6 +0,0 @@ -modules: - enable: - - lmod - lmod: - core_compilers: - - gcc diff --git a/share/spack/docker/spack_centos/Dockerfile b/share/spack/docker/spack_centos/Dockerfile deleted file mode 100644 index a1069128f5..0000000000 --- a/share/spack/docker/spack_centos/Dockerfile +++ /dev/null @@ -1,57 +0,0 @@ -FROM centos -MAINTAINER Omar Padron - -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 handle-ssh.sh /etc/profile.d/handle-ssh.sh -COPY 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 modules.yaml /root/.spack/modules.yaml - -RUN rm -f /run/nologin - -RUN rm -rf /root/*.* - -WORKDIR /root -ENTRYPOINT ["bash"] -CMD ["-l"] diff --git a/share/spack/docker/spack_centos/handle-prompt.sh b/share/spack/docker/spack_centos/handle-prompt.sh deleted file mode 100644 index 15ef53e316..0000000000 --- a/share/spack/docker/spack_centos/handle-prompt.sh +++ /dev/null @@ -1,143 +0,0 @@ -__tmp="`mktemp -d`" - -__trylock() { - local dir - dir="$__tmp/$1.lock" - mkdir "$dir" &>/dev/null - return $? -} - -__queue_init() { - local r - local w - - mkdir "$__tmp/$1.read.lock" ; r=$? - mkdir "$__tmp/$1.write.lock" ; w=$? - - if [ "$r" '=' '0' -a "$w" '=' '0' ] ; then - return 0 - else - return 1 - fi -} - -__queue_try_read() { - __trylock "$1.read" - return $? -} - -__queue_try_write() { - __trylock "$1.write" - return $? -} - -__queue_make_readable() { - rm -r "$__tmp/$1.read.lock" &>/dev/null - return $? -} - -__queue_make_writable() { - rm -r "$__tmp/$1.write.lock" &>/dev/null - return $? -} - -__read() { - cat "$__tmp/$1" 2> /dev/null - return $? -} - -__write() { - cat > "$__tmp/$1" 2> /dev/null - return $? -} - -__update_prompt() { - local prompt - prompt='' - linux_distro="$DISTRO" - if [ -n "$linux_distro" ] ; then - linux_distro='\[\e[1;34m\][\[\e[0;34m\]'"$linux_distro"'\[\e[1;34m\]]' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$linux_distro" - fi - - git_head="`git --git-dir=/spack/.git --work-tree=/spack rev-parse --abbrev-ref HEAD 2>/dev/null`" - if [ "$?" '=' '0' ] ; then - if [ "$git_head" '=' 'HEAD' ] ; then - git_head="`git --git-dir=/spack/.git --work-tree=/spack rev-parse HEAD 2>/dev/null | cut -c1-8`..." - fi - else - git_head='' - fi - - if [ -n "$git_head" ] ; then - git_head='\[\e[1;32m\](\[\e[0;32m\]'"$git_head"'\[\e[1;32m\])' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$git_head" - fi - - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt"'\[\e[0;m\]\W: ' - echo "$prompt" | __write prompt -} - -set -m -( - __queue_init query - __queue_init prompt - - __update_prompt - __queue_make_readable prompt - - __queue_make_writable query - - while sleep 0.010 ; do - last_q_time='' - - while sleep 0.010 ; do - q_time="`date +%s%N`" - if __queue_try_read query ; then - last_q_time="$q_time" - __queue_make_writable query - fi - - if [ -n "$last_q_time" -a \ - "$(( (q_time - last_q_time)/10000000 > 100 ))" '=' '1' ] ; then - break - fi - done - - __update_prompt - __queue_make_readable prompt - done -) &>/dev/null & -set +m - -__update_prompt_main_first_call=1 -__update_prompt_main() { - if [ "$__update_prompt_main_first_call" '=' '1' ] ; then - while sleep 0.001 ; do - if __queue_try_read prompt ; then - PS1="`__read prompt`" - break - fi - done - __update_prompt_main_first_call=0 - else - if __queue_try_read prompt ; then - PS1="`__read prompt`" - fi - fi - - if __queue_try_write query ; then - __queue_make_readable query - fi -} - -PROMPT_COMMAND=__update_prompt_main diff --git a/share/spack/docker/spack_centos/handle-ssh.sh b/share/spack/docker/spack_centos/handle-ssh.sh deleted file mode 100644 index f13c10e212..0000000000 --- a/share/spack/docker/spack_centos/handle-ssh.sh +++ /dev/null @@ -1,36 +0,0 @@ -uid="`id -u`" -if [ "$uid" '=' '0' ] ; then - for key_type in dsa ecdsa ed25519 rsa ; do - private_key_file="/etc/ssh/ssh_host_${key_type}_key" - public_key_file="$private_key_file.pub" - - if [ '!' -f "$private_key_file" ] ; then - ssh-keygen \ - -q -t "$key_type" -N "" -f "$private_key_file" - chmod 600 "$private_key_file" - chmod 644 "$public_key_file" - fi - done - - mkdir -p /var/run/sshd - - pgrep -u 0 -U 0 sshd &> /dev/null - if [ '!' "$?" '=' '0' ] ; then - nohup /usr/sbin/sshd -f /etc/ssh/sshd_config < /dev/null &> /dev/null - fi -fi - -if [ '!' -f "$HOME/.ssh/id_rsa" ] ; then - ssh-keygen \ - -t rsa -C "spack.developer@docker.host" -N "" -f "$HOME/.ssh/id_rsa" - cat "$HOME/.ssh/id_rsa.pub" >> "$HOME/.ssh/authorized_keys" - chmod 600 "$HOME/.ssh/authorized_keys" - - docker_ip="`ip address show dev eth0 | - grep inet | - cut -d' ' -f 6 | - cut -d/ -f 1`" - - ssh-keyscan -t rsa 127.0.0.1 localhost "$docker_ip" "`hostname`" \ - > "$HOME/.ssh/known_hosts" 2> /dev/null -fi diff --git a/share/spack/docker/spack_centos/modules.yaml b/share/spack/docker/spack_centos/modules.yaml deleted file mode 100644 index 02907ecc40..0000000000 --- a/share/spack/docker/spack_centos/modules.yaml +++ /dev/null @@ -1,6 +0,0 @@ -modules: - enable: - - lmod - lmod: - core_compilers: - - gcc diff --git a/share/spack/docker/spack_fedora/Dockerfile b/share/spack/docker/spack_fedora/Dockerfile deleted file mode 100644 index 5e0d984a04..0000000000 --- a/share/spack/docker/spack_fedora/Dockerfile +++ /dev/null @@ -1,56 +0,0 @@ -FROM fedora:24 -MAINTAINER Omar Padron - -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 handle-ssh.sh /etc/profile.d/handle-ssh.sh -COPY 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 modules.yaml /root/.spack/modules.yaml - -RUN rm -f /run/nologin - -RUN rm -rf /root/*.* - -WORKDIR /root -ENTRYPOINT ["bash"] -CMD ["-l"] diff --git a/share/spack/docker/spack_fedora/handle-prompt.sh b/share/spack/docker/spack_fedora/handle-prompt.sh deleted file mode 100644 index bf62224a60..0000000000 --- a/share/spack/docker/spack_fedora/handle-prompt.sh +++ /dev/null @@ -1,143 +0,0 @@ -__tmp="`mktemp -d`" - -__trylock() { - local dir - dir="$__tmp/$1.lock" - mkdir "$dir" &>/dev/null - return $? -} - -__queue_init() { - local r - local w - - mkdir "$__tmp/$1.read.lock" ; r=$? - mkdir "$__tmp/$1.write.lock" ; w=$? - - if [ "$r" '=' '0' -a "$w" '=' '0' ] ; then - return 0 - else - return 1 - fi -} - -__queue_try_read() { - __trylock "$1.read" - return $? -} - -__queue_try_write() { - __trylock "$1.write" - return $? -} - -__queue_make_readable() { - rm -r "$__tmp/$1.read.lock" &>/dev/null - return $? -} - -__queue_make_writable() { - rm -r "$__tmp/$1.write.lock" &>/dev/null - return $? -} - -__read() { - cat "$__tmp/$1" 2> /dev/null - return $? -} - -__write() { - cat > "$__tmp/$1" 2> /dev/null - return $? -} - -__update_prompt() { - local prompt - prompt='' - linux_distro="$DISTRO" - if [ -n "$linux_distro" ] ; then - linux_distro='\[\e[1;34m\][\[\e[0;34m\]'"$linux_distro"'\[\e[1;34m\]]' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$linux_distro" - fi - - git_head="`git -C /spack rev-parse --abbrev-ref HEAD 2>/dev/null`" - if [ "$?" '=' '0' ] ; then - if [ "$git_head" '=' 'HEAD' ] ; then - git_head="`git -C /spack rev-parse HEAD 2>/dev/null | cut -c1-8`..." - fi - else - git_head='' - fi - - if [ -n "$git_head" ] ; then - git_head='\[\e[1;32m\](\[\e[0;32m\]'"$git_head"'\[\e[1;32m\])' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$git_head" - fi - - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt"'\[\e[0;m\]\W: ' - echo "$prompt" | __write prompt -} - -set -m -( - __queue_init query - __queue_init prompt - - __update_prompt - __queue_make_readable prompt - - __queue_make_writable query - - while sleep 0.010 ; do - last_q_time='' - - while sleep 0.010 ; do - q_time="`date +%s%N`" - if __queue_try_read query ; then - last_q_time="$q_time" - __queue_make_writable query - fi - - if [ -n "$last_q_time" -a \ - "$(( (q_time - last_q_time)/10000000 > 100 ))" '=' '1' ] ; then - break - fi - done - - __update_prompt - __queue_make_readable prompt - done -) &>/dev/null & -set +m - -__update_prompt_main_first_call=1 -__update_prompt_main() { - if [ "$__update_prompt_main_first_call" '=' '1' ] ; then - while sleep 0.001 ; do - if __queue_try_read prompt ; then - PS1="`__read prompt`" - break - fi - done - __update_prompt_main_first_call=0 - else - if __queue_try_read prompt ; then - PS1="`__read prompt`" - fi - fi - - if __queue_try_write query ; then - __queue_make_readable query - fi -} - -PROMPT_COMMAND=__update_prompt_main diff --git a/share/spack/docker/spack_fedora/handle-ssh.sh b/share/spack/docker/spack_fedora/handle-ssh.sh deleted file mode 100644 index f13c10e212..0000000000 --- a/share/spack/docker/spack_fedora/handle-ssh.sh +++ /dev/null @@ -1,36 +0,0 @@ -uid="`id -u`" -if [ "$uid" '=' '0' ] ; then - for key_type in dsa ecdsa ed25519 rsa ; do - private_key_file="/etc/ssh/ssh_host_${key_type}_key" - public_key_file="$private_key_file.pub" - - if [ '!' -f "$private_key_file" ] ; then - ssh-keygen \ - -q -t "$key_type" -N "" -f "$private_key_file" - chmod 600 "$private_key_file" - chmod 644 "$public_key_file" - fi - done - - mkdir -p /var/run/sshd - - pgrep -u 0 -U 0 sshd &> /dev/null - if [ '!' "$?" '=' '0' ] ; then - nohup /usr/sbin/sshd -f /etc/ssh/sshd_config < /dev/null &> /dev/null - fi -fi - -if [ '!' -f "$HOME/.ssh/id_rsa" ] ; then - ssh-keygen \ - -t rsa -C "spack.developer@docker.host" -N "" -f "$HOME/.ssh/id_rsa" - cat "$HOME/.ssh/id_rsa.pub" >> "$HOME/.ssh/authorized_keys" - chmod 600 "$HOME/.ssh/authorized_keys" - - docker_ip="`ip address show dev eth0 | - grep inet | - cut -d' ' -f 6 | - cut -d/ -f 1`" - - ssh-keyscan -t rsa 127.0.0.1 localhost "$docker_ip" "`hostname`" \ - > "$HOME/.ssh/known_hosts" 2> /dev/null -fi diff --git a/share/spack/docker/spack_fedora/modules.yaml b/share/spack/docker/spack_fedora/modules.yaml deleted file mode 100644 index 02907ecc40..0000000000 --- a/share/spack/docker/spack_fedora/modules.yaml +++ /dev/null @@ -1,6 +0,0 @@ -modules: - enable: - - lmod - lmod: - core_compilers: - - gcc diff --git a/share/spack/docker/spack_opensuse/Dockerfile b/share/spack/docker/spack_opensuse/Dockerfile deleted file mode 100644 index 9bc31dcf0c..0000000000 --- a/share/spack/docker/spack_opensuse/Dockerfile +++ /dev/null @@ -1,65 +0,0 @@ -FROM opensuse -MAINTAINER Omar Padron - -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 handle-ssh.sh /etc/profile.d/handle-ssh.sh -COPY 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 modules.yaml /root/.spack/modules.yaml - -RUN rm -f /run/nologin - -RUN rm -rf /root/*.* - -WORKDIR /root -ENTRYPOINT ["bash"] -CMD ["-l"] diff --git a/share/spack/docker/spack_opensuse/handle-prompt.sh b/share/spack/docker/spack_opensuse/handle-prompt.sh deleted file mode 100644 index 15ef53e316..0000000000 --- a/share/spack/docker/spack_opensuse/handle-prompt.sh +++ /dev/null @@ -1,143 +0,0 @@ -__tmp="`mktemp -d`" - -__trylock() { - local dir - dir="$__tmp/$1.lock" - mkdir "$dir" &>/dev/null - return $? -} - -__queue_init() { - local r - local w - - mkdir "$__tmp/$1.read.lock" ; r=$? - mkdir "$__tmp/$1.write.lock" ; w=$? - - if [ "$r" '=' '0' -a "$w" '=' '0' ] ; then - return 0 - else - return 1 - fi -} - -__queue_try_read() { - __trylock "$1.read" - return $? -} - -__queue_try_write() { - __trylock "$1.write" - return $? -} - -__queue_make_readable() { - rm -r "$__tmp/$1.read.lock" &>/dev/null - return $? -} - -__queue_make_writable() { - rm -r "$__tmp/$1.write.lock" &>/dev/null - return $? -} - -__read() { - cat "$__tmp/$1" 2> /dev/null - return $? -} - -__write() { - cat > "$__tmp/$1" 2> /dev/null - return $? -} - -__update_prompt() { - local prompt - prompt='' - linux_distro="$DISTRO" - if [ -n "$linux_distro" ] ; then - linux_distro='\[\e[1;34m\][\[\e[0;34m\]'"$linux_distro"'\[\e[1;34m\]]' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$linux_distro" - fi - - git_head="`git --git-dir=/spack/.git --work-tree=/spack rev-parse --abbrev-ref HEAD 2>/dev/null`" - if [ "$?" '=' '0' ] ; then - if [ "$git_head" '=' 'HEAD' ] ; then - git_head="`git --git-dir=/spack/.git --work-tree=/spack rev-parse HEAD 2>/dev/null | cut -c1-8`..." - fi - else - git_head='' - fi - - if [ -n "$git_head" ] ; then - git_head='\[\e[1;32m\](\[\e[0;32m\]'"$git_head"'\[\e[1;32m\])' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$git_head" - fi - - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt"'\[\e[0;m\]\W: ' - echo "$prompt" | __write prompt -} - -set -m -( - __queue_init query - __queue_init prompt - - __update_prompt - __queue_make_readable prompt - - __queue_make_writable query - - while sleep 0.010 ; do - last_q_time='' - - while sleep 0.010 ; do - q_time="`date +%s%N`" - if __queue_try_read query ; then - last_q_time="$q_time" - __queue_make_writable query - fi - - if [ -n "$last_q_time" -a \ - "$(( (q_time - last_q_time)/10000000 > 100 ))" '=' '1' ] ; then - break - fi - done - - __update_prompt - __queue_make_readable prompt - done -) &>/dev/null & -set +m - -__update_prompt_main_first_call=1 -__update_prompt_main() { - if [ "$__update_prompt_main_first_call" '=' '1' ] ; then - while sleep 0.001 ; do - if __queue_try_read prompt ; then - PS1="`__read prompt`" - break - fi - done - __update_prompt_main_first_call=0 - else - if __queue_try_read prompt ; then - PS1="`__read prompt`" - fi - fi - - if __queue_try_write query ; then - __queue_make_readable query - fi -} - -PROMPT_COMMAND=__update_prompt_main diff --git a/share/spack/docker/spack_opensuse/handle-ssh.sh b/share/spack/docker/spack_opensuse/handle-ssh.sh deleted file mode 100644 index f13c10e212..0000000000 --- a/share/spack/docker/spack_opensuse/handle-ssh.sh +++ /dev/null @@ -1,36 +0,0 @@ -uid="`id -u`" -if [ "$uid" '=' '0' ] ; then - for key_type in dsa ecdsa ed25519 rsa ; do - private_key_file="/etc/ssh/ssh_host_${key_type}_key" - public_key_file="$private_key_file.pub" - - if [ '!' -f "$private_key_file" ] ; then - ssh-keygen \ - -q -t "$key_type" -N "" -f "$private_key_file" - chmod 600 "$private_key_file" - chmod 644 "$public_key_file" - fi - done - - mkdir -p /var/run/sshd - - pgrep -u 0 -U 0 sshd &> /dev/null - if [ '!' "$?" '=' '0' ] ; then - nohup /usr/sbin/sshd -f /etc/ssh/sshd_config < /dev/null &> /dev/null - fi -fi - -if [ '!' -f "$HOME/.ssh/id_rsa" ] ; then - ssh-keygen \ - -t rsa -C "spack.developer@docker.host" -N "" -f "$HOME/.ssh/id_rsa" - cat "$HOME/.ssh/id_rsa.pub" >> "$HOME/.ssh/authorized_keys" - chmod 600 "$HOME/.ssh/authorized_keys" - - docker_ip="`ip address show dev eth0 | - grep inet | - cut -d' ' -f 6 | - cut -d/ -f 1`" - - ssh-keyscan -t rsa 127.0.0.1 localhost "$docker_ip" "`hostname`" \ - > "$HOME/.ssh/known_hosts" 2> /dev/null -fi diff --git a/share/spack/docker/spack_opensuse/modules.yaml b/share/spack/docker/spack_opensuse/modules.yaml deleted file mode 100644 index 02907ecc40..0000000000 --- a/share/spack/docker/spack_opensuse/modules.yaml +++ /dev/null @@ -1,6 +0,0 @@ -modules: - enable: - - lmod - lmod: - core_compilers: - - gcc diff --git a/share/spack/docker/spack_ubuntu/Dockerfile b/share/spack/docker/spack_ubuntu/Dockerfile deleted file mode 100644 index 8c1caac61b..0000000000 --- a/share/spack/docker/spack_ubuntu/Dockerfile +++ /dev/null @@ -1,51 +0,0 @@ -FROM ubuntu -MAINTAINER Omar Padron - -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 handle-ssh.sh /etc/profile.d/handle-ssh.sh -COPY 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 modules.yaml /root/.spack/modules.yaml - -RUN rm -rf /root/*.* - -WORKDIR /root -ENTRYPOINT ["bash"] -CMD ["-l"] diff --git a/share/spack/docker/spack_ubuntu/handle-prompt.sh b/share/spack/docker/spack_ubuntu/handle-prompt.sh deleted file mode 100644 index bf62224a60..0000000000 --- a/share/spack/docker/spack_ubuntu/handle-prompt.sh +++ /dev/null @@ -1,143 +0,0 @@ -__tmp="`mktemp -d`" - -__trylock() { - local dir - dir="$__tmp/$1.lock" - mkdir "$dir" &>/dev/null - return $? -} - -__queue_init() { - local r - local w - - mkdir "$__tmp/$1.read.lock" ; r=$? - mkdir "$__tmp/$1.write.lock" ; w=$? - - if [ "$r" '=' '0' -a "$w" '=' '0' ] ; then - return 0 - else - return 1 - fi -} - -__queue_try_read() { - __trylock "$1.read" - return $? -} - -__queue_try_write() { - __trylock "$1.write" - return $? -} - -__queue_make_readable() { - rm -r "$__tmp/$1.read.lock" &>/dev/null - return $? -} - -__queue_make_writable() { - rm -r "$__tmp/$1.write.lock" &>/dev/null - return $? -} - -__read() { - cat "$__tmp/$1" 2> /dev/null - return $? -} - -__write() { - cat > "$__tmp/$1" 2> /dev/null - return $? -} - -__update_prompt() { - local prompt - prompt='' - linux_distro="$DISTRO" - if [ -n "$linux_distro" ] ; then - linux_distro='\[\e[1;34m\][\[\e[0;34m\]'"$linux_distro"'\[\e[1;34m\]]' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$linux_distro" - fi - - git_head="`git -C /spack rev-parse --abbrev-ref HEAD 2>/dev/null`" - if [ "$?" '=' '0' ] ; then - if [ "$git_head" '=' 'HEAD' ] ; then - git_head="`git -C /spack rev-parse HEAD 2>/dev/null | cut -c1-8`..." - fi - else - git_head='' - fi - - if [ -n "$git_head" ] ; then - git_head='\[\e[1;32m\](\[\e[0;32m\]'"$git_head"'\[\e[1;32m\])' - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt$git_head" - fi - - if [ -n "$prompt" ] ; then - prompt="$prompt " - fi - prompt="$prompt"'\[\e[0;m\]\W: ' - echo "$prompt" | __write prompt -} - -set -m -( - __queue_init query - __queue_init prompt - - __update_prompt - __queue_make_readable prompt - - __queue_make_writable query - - while sleep 0.010 ; do - last_q_time='' - - while sleep 0.010 ; do - q_time="`date +%s%N`" - if __queue_try_read query ; then - last_q_time="$q_time" - __queue_make_writable query - fi - - if [ -n "$last_q_time" -a \ - "$(( (q_time - last_q_time)/10000000 > 100 ))" '=' '1' ] ; then - break - fi - done - - __update_prompt - __queue_make_readable prompt - done -) &>/dev/null & -set +m - -__update_prompt_main_first_call=1 -__update_prompt_main() { - if [ "$__update_prompt_main_first_call" '=' '1' ] ; then - while sleep 0.001 ; do - if __queue_try_read prompt ; then - PS1="`__read prompt`" - break - fi - done - __update_prompt_main_first_call=0 - else - if __queue_try_read prompt ; then - PS1="`__read prompt`" - fi - fi - - if __queue_try_write query ; then - __queue_make_readable query - fi -} - -PROMPT_COMMAND=__update_prompt_main diff --git a/share/spack/docker/spack_ubuntu/handle-ssh.sh b/share/spack/docker/spack_ubuntu/handle-ssh.sh deleted file mode 100644 index f13c10e212..0000000000 --- a/share/spack/docker/spack_ubuntu/handle-ssh.sh +++ /dev/null @@ -1,36 +0,0 @@ -uid="`id -u`" -if [ "$uid" '=' '0' ] ; then - for key_type in dsa ecdsa ed25519 rsa ; do - private_key_file="/etc/ssh/ssh_host_${key_type}_key" - public_key_file="$private_key_file.pub" - - if [ '!' -f "$private_key_file" ] ; then - ssh-keygen \ - -q -t "$key_type" -N "" -f "$private_key_file" - chmod 600 "$private_key_file" - chmod 644 "$public_key_file" - fi - done - - mkdir -p /var/run/sshd - - pgrep -u 0 -U 0 sshd &> /dev/null - if [ '!' "$?" '=' '0' ] ; then - nohup /usr/sbin/sshd -f /etc/ssh/sshd_config < /dev/null &> /dev/null - fi -fi - -if [ '!' -f "$HOME/.ssh/id_rsa" ] ; then - ssh-keygen \ - -t rsa -C "spack.developer@docker.host" -N "" -f "$HOME/.ssh/id_rsa" - cat "$HOME/.ssh/id_rsa.pub" >> "$HOME/.ssh/authorized_keys" - chmod 600 "$HOME/.ssh/authorized_keys" - - docker_ip="`ip address show dev eth0 | - grep inet | - cut -d' ' -f 6 | - cut -d/ -f 1`" - - ssh-keyscan -t rsa 127.0.0.1 localhost "$docker_ip" "`hostname`" \ - > "$HOME/.ssh/known_hosts" 2> /dev/null -fi diff --git a/share/spack/docker/spack_ubuntu/modules.yaml b/share/spack/docker/spack_ubuntu/modules.yaml deleted file mode 100644 index 02907ecc40..0000000000 --- a/share/spack/docker/spack_ubuntu/modules.yaml +++ /dev/null @@ -1,6 +0,0 @@ -modules: - enable: - - lmod - lmod: - core_compilers: - - gcc -- cgit v1.2.3-60-g2f50