| 
									
										
										
										
											2019-07-20 17:46:06 -04:00
										 |  |  | FROM ubuntu:18.04 | 
					
						
							|  |  |  | MAINTAINER Spack Maintainers <maintainers@spack.io> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ENV DOCKERFILE_BASE=ubuntu            \ | 
					
						
							|  |  |  |     DOCKERFILE_DISTRO=ubuntu          \ | 
					
						
							|  |  |  |     DOCKERFILE_DISTRO_VERSION=18.04   \ | 
					
						
							|  |  |  |     SPACK_ROOT=/opt/spack             \ | 
					
						
							|  |  |  |     FORCE_UNSAFE_CONFIGURE=1          \ | 
					
						
							|  |  |  |     DEBIAN_FRONTEND=noninteractive    \ | 
					
						
							|  |  |  |     CURRENTLY_BUILDING_DOCKER_IMAGE=1 \ | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-13 11:22:21 -07:00
										 |  |  | RUN apt-get -yqq update                           \ | 
					
						
							|  |  |  |  && apt-get -yqq install --no-install-recommends  \ | 
					
						
							|  |  |  |         build-essential                           \ | 
					
						
							|  |  |  |         ca-certificates                           \ | 
					
						
							|  |  |  |         curl                                      \ | 
					
						
							|  |  |  |         file                                      \ | 
					
						
							|  |  |  |         g++                                       \ | 
					
						
							|  |  |  |         gcc                                       \ | 
					
						
							|  |  |  |         gfortran                                  \ | 
					
						
							|  |  |  |         git                                       \ | 
					
						
							|  |  |  |         gnupg2                                    \ | 
					
						
							|  |  |  |         iproute2                                  \ | 
					
						
							|  |  |  |         lmod                                      \ | 
					
						
							|  |  |  |         locales                                   \ | 
					
						
							|  |  |  |         lua-posix                                 \ | 
					
						
							|  |  |  |         make                                      \ | 
					
						
							|  |  |  |         openssh-server                            \ | 
					
						
							|  |  |  |         python3                                   \ | 
					
						
							|  |  |  |         python3-pip                               \ | 
					
						
							|  |  |  |         tcl                                       \ | 
					
						
							|  |  |  |         unzip                                     \ | 
					
						
							|  |  |  |  && locale-gen en_US.UTF-8                        \ | 
					
						
							|  |  |  |  && pip3 install boto3                            \ | 
					
						
							| 
									
										
										
										
											2019-07-20 17:46:06 -04:00
										 |  |  |  && rm -rf /var/lib/apt/lists/* | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-13 11:22:21 -07:00
										 |  |  | # Add LANG default to en_US.UTF-8 | 
					
						
							|  |  |  | ENV LANGUAGE en_US.UTF-8 | 
					
						
							|  |  |  | ENV LANG en_US.UTF-8 | 
					
						
							|  |  |  | ENV LC_ALL en_US.UTF-8 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-20 17:46:06 -04:00
										 |  |  | RUN ( echo ". /usr/share/lmod/lmod/init/bash"                       \ | 
					
						
							|  |  |  |  &&   echo ". \$SPACK_ROOT/share/spack/setup-env.sh"                \ | 
					
						
							|  |  |  |  &&   echo "if [ \"\$CURRENTLY_BUILDING_DOCKER_IMAGE\" '!=' '1' ]"  \ | 
					
						
							|  |  |  |  &&   echo "then"                                                   \ | 
					
						
							|  |  |  |  &&   echo "  . \$SPACK_ROOT/share/spack/spack-completion.bash"     \ | 
					
						
							|  |  |  |  &&   echo "fi"                                                   ) \ | 
					
						
							|  |  |  |        >> /etc/profile.d/spack.sh                                   \ | 
					
						
							|  |  |  |  && ( echo "f=\"\$SPACK_ROOT/share/spack/docker/handle-ssh.sh\""    \ | 
					
						
							|  |  |  |  &&   echo "if [ -f \"\$f\" ]"                                      \ | 
					
						
							|  |  |  |  &&   echo "then"                                                   \ | 
					
						
							|  |  |  |  &&   echo "  .  \"\$f\""                                           \ | 
					
						
							|  |  |  |  &&   echo "else"                                                   \ | 
					
						
							|  |  |  |  &&   cat  $SPACK_ROOT/share/spack/docker/handle-ssh.sh             \ | 
					
						
							|  |  |  |  &&   echo "fi"                                                   ) \ | 
					
						
							|  |  |  |        >> /etc/profile.d/handle-ssh.sh                              \ | 
					
						
							|  |  |  |  && ( echo "f=\"\$SPACK_ROOT/share/spack/docker/handle-prompt.sh\"" \ | 
					
						
							|  |  |  |  &&   echo "if [ -f \"\$f\" ]"                                      \ | 
					
						
							|  |  |  |  &&   echo "then"                                                   \ | 
					
						
							|  |  |  |  &&   echo "  .  \"\$f\""                                           \ | 
					
						
							|  |  |  |  &&   echo "else"                                                   \ | 
					
						
							|  |  |  |  &&   cat  $SPACK_ROOT/share/spack/docker/handle-prompt.sh          \ | 
					
						
							|  |  |  |  &&   echo "fi"                                                   ) \ | 
					
						
							|  |  |  |        >> /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/*.* $SPACK_ROOT/.git | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # [WORKAROUND] | 
					
						
							|  |  |  | # https://superuser.com/questions/1241548/ | 
					
						
							|  |  |  | #     xubuntu-16-04-ttyname-failed-inappropriate-ioctl-for-device#1253889 | 
					
						
							|  |  |  | RUN [ -f ~/.profile ]                                               \ | 
					
						
							|  |  |  |  && sed -i 's/mesg n/( tty -s \&\& mesg n || true )/g' ~/.profile \ | 
					
						
							|  |  |  |  || true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # [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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | WORKDIR /root | 
					
						
							|  |  |  | SHELL ["/bin/bash", "-l", "-c"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # TODO: add a command to Spack that (re)creates the package cache | 
					
						
							|  |  |  | RUN spack spec hdf5+mpi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ENTRYPOINT ["/bin/bash", "/opt/spack/share/spack/docker/entrypoint.bash"] | 
					
						
							|  |  |  | CMD ["docker-shell"] |