From 56df32de349a91166f842bf38efc02eb2db9b60c Mon Sep 17 00:00:00 2001 From: Wouter Deconinck <wdconinc@gmail.com> Date: Thu, 24 Nov 2022 03:33:53 +0000 Subject: [PATCH] fix: rm unused base image infrastructure (now in single base) --- containers/cuda/Dockerfile | 72 ----- containers/cuda/bashrc | 452 ---------------------------- containers/oneapi/base.Dockerfile | 70 ----- containers/oneapi/bashrc | 452 ---------------------------- containers/oneapi/onedev.Dockerfile | 340 --------------------- 5 files changed, 1386 deletions(-) delete mode 100644 containers/cuda/Dockerfile delete mode 100644 containers/cuda/bashrc delete mode 100644 containers/oneapi/base.Dockerfile delete mode 100644 containers/oneapi/bashrc delete mode 100644 containers/oneapi/onedev.Dockerfile diff --git a/containers/cuda/Dockerfile b/containers/cuda/Dockerfile deleted file mode 100644 index 947cd8aaf..000000000 --- a/containers/cuda/Dockerfile +++ /dev/null @@ -1,72 +0,0 @@ -#syntax=docker/dockerfile:1.2 - -# Minimal container based on Intel oneAPI for up-to-date packages. -# Very lightweight container with a minimal build environment (LOL) - -FROM nvidia/cuda:11.6.0-devel-ubuntu18.04 -LABEL maintainer="Wouter Deconinck <wouter.deconinck@umanitoba.ca" \ - name="cuda_base" \ - march="amd64" - -COPY bashrc /root/.bashrc - -ENV CLICOLOR_FORCE=1 \ - LANGUAGE=en_US.UTF-8 \ - LANG=en_US.UTF-8 \ - LC_ALL=en_US.UTF-8 - -## Install additional packages. Remove the auto-cleanup functionality -## for docker, as we're using the new buildkit cache instead. -## We also install gitlab-runner, from the buster package (as bullseye is not available atm) -## TODO: libyaml-cpp-dev is a dependency for afterburner. We can probably remove -## this once afterburner is added to spack -RUN --mount=type=cache,target=/var/cache/apt \ - rm -f /etc/apt/apt.conf.d/docker-clean \ - && ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime \ - && echo "US/Eastern" > /etc/timezone \ - && apt-get -yqq update \ - && apt-get -yqq upgrade \ - && apt-get -yqq install --no-install-recommends \ - bc \ - ca-certificates \ - clang-format \ - clang-tidy \ - curl \ - file \ - build-essential \ - gdb \ - ghostscript \ - git \ - gnupg2 \ - gv \ - iproute2 \ - iputils-ping \ - iputils-tracepath \ - less \ - libcbor-xs-perl \ - libjson-xs-perl \ - libyaml-cpp-dev \ - locales \ - lua-posix \ - make \ - nano \ - openssh-client \ - parallel \ - poppler-utils \ - time \ - unzip \ - valgrind \ - vim-nox \ - wget \ - && localedef -i en_US -f UTF-8 en_US.UTF-8 \ - && gcc --version \ - && curl -L \ - "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" \ - | bash \ - && sed -i "s/bookworm/buster/" \ - /etc/apt/sources.list.d/runner_gitlab-runner.list \ - && apt-get -yqq update \ - && apt-get -yqq install --no-install-recommends \ - gitlab-runner \ - && apt-get -yqq autoremove \ - && rm -rf /var/lib/apt/lists/* diff --git a/containers/cuda/bashrc b/containers/cuda/bashrc deleted file mode 100644 index 4d1c1f348..000000000 --- a/containers/cuda/bashrc +++ /dev/null @@ -1,452 +0,0 @@ -#!/bin/bash -iatest=$(expr index "$-" i) - -####################################################### -# SOURCED ALIAS'S AND SCRIPTS BY zachbrowne.me -####################################################### - -# Source global definitions -if [ -f /etc/bashrc ]; then - . /etc/bashrc -fi - -# Enable bash programmable completion features in interactive shells -if [ -f /usr/share/bash-completion/bash_completion ]; then - . /usr/share/bash-completion/bash_completion -elif [ -f /etc/bash_completion ]; then - . /etc/bash_completion -fi - -####################################################### -# EXPORTS -####################################################### - -# Disable the bell -if [[ $iatest > 0 ]]; then bind "set bell-style visible"; fi - -# Expand the history size -export HISTFILESIZE=10000 -export HISTSIZE=500 - -# Don't put duplicate lines in the history and do not add lines that start with a space -export HISTCONTROL=erasedups:ignoredups:ignorespace - -# Check the window size after each command and, if necessary, update the values of LINES and COLUMNS -shopt -s checkwinsize - -# Causes bash to append to history instead of overwriting it so if you start a new terminal, you have old session history -shopt -s histappend -PROMPT_COMMAND='history -a' - -# Allow ctrl-S for history navigation (with ctrl-R) -stty -ixon - -# Ignore case on auto-completion -# Note: bind used instead of sticking these in .inputrc -if [[ $iatest > 0 ]]; then bind "set completion-ignore-case on"; fi - -# Show auto-completion list automatically, without double tab -if [[ $iatest > 0 ]]; then bind "set show-all-if-ambiguous On"; fi - -# Set the default editor -export EDITOR=vim -export VISUAL=vim -alias pico='edit' -alias spico='sedit' -alias nano='edit' -alias snano='sedit' - -# To have colors for ls and all grep commands such as grep, egrep and zgrep -export CLICOLOR=1 -export LS_COLORS='no=00:fi=00:di=00;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:*.xml=00;31:' -#export GREP_OPTIONS='--color=auto' #deprecated -#alias grep="/usr/bin/grep $GREP_OPTIONS" -#unset GREP_OPTIONS - -# Color for manpages in less makes manpages a little easier to read -export LESS_TERMCAP_mb=$'\E[01;31m' -export LESS_TERMCAP_md=$'\E[01;31m' -export LESS_TERMCAP_me=$'\E[0m' -export LESS_TERMCAP_se=$'\E[0m' -export LESS_TERMCAP_so=$'\E[01;44;33m' -export LESS_TERMCAP_ue=$'\E[0m' -export LESS_TERMCAP_us=$'\E[01;32m' - -####################################################### -# GENERAL ALIAS'S -####################################################### - -# Alias's to modified commands -alias cp='cp -i' -alias mv='mv -i' -alias rm='rm -iv' -alias mkdir='mkdir -p' -alias ps='ps auxf' -alias ping='ping -c 10' -alias less='less -R' -alias cls='clear' -alias apt-get='apt-get' -alias multitail='multitail --no-repeat -c' -alias freshclam='freshclam' -alias vi='vim' -alias vis='vim "+set si"' - -# Change directory aliases -alias home='cd ~' -alias cd..='cd ..' -alias ..='cd ..' -alias ...='cd ../..' -alias ....='cd ../../..' -alias .....='cd ../../../..' - -# cd into the old directory -alias bd='cd "$OLDPWD"' - -# Remove a directory and all files -alias rmd='/bin/rm --recursive --force --verbose ' - -# Alias's for multiple directory listing commands -alias la='ls -Alh' # show hidden files -alias ls='ls -aFh --color=always' # add colors and file type extensions -alias lx='ls -lXBh' # sort by extension -alias lk='ls -lSrh' # sort by size -alias lc='ls -lcrh' # sort by change time -alias lu='ls -lurh' # sort by access time -alias lr='ls -lRh' # recursive ls -alias lt='ls -ltrh' # sort by date -alias lm='ls -alh |more' # pipe through 'more' -alias lw='ls -xAh' # wide listing format -alias ll='ls -Fls' # long listing format -alias labc='ls -lap' #alphabetical sort -alias lf="ls -l | egrep -v '^d'" # files only -alias ldir="ls -l | egrep '^d'" # directories only - -# alias chmod commands -alias mx='chmod a+x' -alias 000='chmod -R 000' -alias 644='chmod -R 644' -alias 666='chmod -R 666' -alias 755='chmod -R 755' -alias 777='chmod -R 777' - -# Search command line history -alias h="history | grep " - -# Search running processes -alias p="ps aux | grep " -alias topcpu="/bin/ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10" - -# Search files in the current folder -alias f="find . | grep " - -# Count all files (recursively) in the current folder -alias countfiles="for t in files links directories; do echo \`find . -type \${t:0:1} | wc -l\` \$t; done 2> /dev/null" - -# To see if a command is aliased, a file, or a built-in command -alias checkcommand="type -t" - -# Show all logs in /var/log -alias logs="sudo find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f" - -# SHA1 -alias sha1='openssl sha1' - -####################################################### -# SPECIAL FUNCTIONS -####################################################### - -# Extracts any archive(s) (if unp isn't installed) -extract () { - for archive in $*; do - if [ -f $archive ] ; then - case $archive in - *.tar.bz2) tar xvjf $archive ;; - *.tar.gz) tar xvzf $archive ;; - *.bz2) bunzip2 $archive ;; - *.rar) rar x $archive ;; - *.gz) gunzip $archive ;; - *.tar) tar xvf $archive ;; - *.tbz2) tar xvjf $archive ;; - *.tgz) tar xvzf $archive ;; - *.zip) unzip $archive ;; - *.Z) uncompress $archive ;; - *.7z) 7z x $archive ;; - *) echo "don't know how to extract '$archive'..." ;; - esac - else - echo "'$archive' is not a valid file!" - fi - done -} - -# Searches for text in all files in the current folder -ftext () -{ - # -i case-insensitive - # -I ignore binary files - # -H causes filename to be printed - # -r recursive search - # -n causes line number to be printed - # optional: -F treat search term as a literal, not a regular expression - # optional: -l only print filenames and not the matching lines ex. grep -irl "$1" * - grep -iIHrn --color=always "$1" . | less -r -} - -# Copy file with a progress bar -cpp() -{ - set -e - strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \ - | awk '{ - count += $NF - if (count % 10 == 0) { - percent = count / total_size * 100 - printf "%3d%% [", percent - for (i=0;i<=percent;i++) - printf "=" - printf ">" - for (i=percent;i<100;i++) - printf " " - printf "]\r" - } - } - END { print "" }' total_size=$(stat -c '%s' "${1}") count=0 -} - -# Copy and go to the directory -cpg () -{ - if [ -d "$2" ];then - cp $1 $2 && cd $2 - else - cp $1 $2 - fi -} - -# Move and go to the directory -mvg () -{ - if [ -d "$2" ];then - mv $1 $2 && cd $2 - else - mv $1 $2 - fi -} - -# Create and go to the directory -mkdirg () -{ - mkdir -p $1 - cd $1 -} - -# Goes up a specified number of directories (i.e. up 4) -up () -{ - local d="" - limit=$1 - for ((i=1 ; i <= limit ; i++)) - do - d=$d/.. - done - d=$(echo $d | sed 's/^\///') - if [ -z "$d" ]; then - d=.. - fi - cd $d -} - -#Automatically do an ls after each cd -# cd () -# { -# if [ -n "$1" ]; then -# builtin cd "$@" && ls -# else -# builtin cd ~ && ls -# fi -# } - -# Returns the last 2 fields of the working directory -pwdtail () -{ - pwd|awk -F/ '{nlast = NF -1;print $nlast"/"$NF}' -} - -# Show the current version of the operating system -ver () -{ - local dtype - dtype=$(distribution) - - if [ $dtype == "redhat" ]; then - if [ -s /etc/redhat-release ]; then - cat /etc/redhat-release && uname -a - else - cat /etc/issue && uname -a - fi - elif [ $dtype == "suse" ]; then - cat /etc/SuSE-release - elif [ $dtype == "debian" ]; then - lsb_release -a - # sudo cat /etc/issue && sudo cat /etc/issue.net && sudo cat /etc/lsb_release && sudo cat /etc/os-release # Linux Mint option 2 - elif [ $dtype == "gentoo" ]; then - cat /etc/gentoo-release - elif [ $dtype == "mandriva" ]; then - cat /etc/mandriva-release - elif [ $dtype == "slackware" ]; then - cat /etc/slackware-version - else - if [ -s /etc/issue ]; then - cat /etc/issue - else - echo "Error: Unknown distribution" - exit 1 - fi - fi -} - -# For some reason, rot13 pops up everywhere -rot13 () { - if [ $# -eq 0 ]; then - tr '[a-m][n-z][A-M][N-Z]' '[n-z][a-m][N-Z][A-M]' - else - echo $* | tr '[a-m][n-z][A-M][N-Z]' '[n-z][a-m][N-Z][A-M]' - fi -} - -# Trim leading and trailing spaces (for scripts) -trim() -{ - local var=$@ - var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters - var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters - echo -n "$var" -} - -####################################################### -# Set the ultimate amazing command prompt -####################################################### - -alias cpu="grep 'cpu ' /proc/stat | awk '{usage=(\$2+\$4)*100/(\$2+\$4+\$5)} END {print usage}' | awk '{printf(\"%.1f\n\", \$1)}'" -function __setprompt -{ - local LAST_COMMAND=$? # Must come first! - - # Define colors - local LIGHTGRAY="\033[0;37m" - local WHITE="\033[1;37m" - local BLACK="\033[0;30m" - local DARKGRAY="\033[1;30m" - local RED="\033[0;31m" - local LIGHTRED="\033[1;31m" - local GREEN="\033[0;32m" - local LIGHTGREEN="\033[1;32m" - local BROWN="\033[0;33m" - local YELLOW="\033[1;33m" - local BLUE="\033[0;34m" - local LIGHTBLUE="\033[1;34m" - local MAGENTA="\033[0;35m" - local LIGHTMAGENTA="\033[1;35m" - local CYAN="\033[0;36m" - local LIGHTCYAN="\033[1;36m" - local NOCOLOR="\033[0m" - - # Show error exit code if there is one - if [[ $LAST_COMMAND != 0 ]]; then - # PS1="\[${RED}\](\[${LIGHTRED}\]ERROR\[${RED}\])-(\[${LIGHTRED}\]Exit Code \[${WHITE}\]${LAST_COMMAND}\[${RED}\])-(\[${LIGHTRED}\]" - PS1="\[${DARKGRAY}\](\[${LIGHTRED}\]ERROR\[${DARKGRAY}\])-(\[${RED}\]Exit Code \[${LIGHTRED}\]${LAST_COMMAND}\[${DARKGRAY}\])-(\[${RED}\]" - if [[ $LAST_COMMAND == 1 ]]; then - PS1+="General error" - elif [ $LAST_COMMAND == 2 ]; then - PS1+="Missing keyword, command, or permission problem" - elif [ $LAST_COMMAND == 126 ]; then - PS1+="Permission problem or command is not an executable" - elif [ $LAST_COMMAND == 127 ]; then - PS1+="Command not found" - elif [ $LAST_COMMAND == 128 ]; then - PS1+="Invalid argument to exit" - elif [ $LAST_COMMAND == 129 ]; then - PS1+="Fatal error signal 1" - elif [ $LAST_COMMAND == 130 ]; then - PS1+="Script terminated by Control-C" - elif [ $LAST_COMMAND == 131 ]; then - PS1+="Fatal error signal 3" - elif [ $LAST_COMMAND == 132 ]; then - PS1+="Fatal error signal 4" - elif [ $LAST_COMMAND == 133 ]; then - PS1+="Fatal error signal 5" - elif [ $LAST_COMMAND == 134 ]; then - PS1+="Fatal error signal 6" - elif [ $LAST_COMMAND == 135 ]; then - PS1+="Fatal error signal 7" - elif [ $LAST_COMMAND == 136 ]; then - PS1+="Fatal error signal 8" - elif [ $LAST_COMMAND == 137 ]; then - PS1+="Fatal error signal 9" - elif [ $LAST_COMMAND -gt 255 ]; then - PS1+="Exit status out of range" - else - PS1+="Unknown error code" - fi - PS1+="\[${DARKGRAY}\])\[${NOCOLOR}\]\n" - else - PS1="" - fi - - # Date - PS1+="\[${DARKGRAY}\](\[${CYAN}\]\$(date +%a) $(date +%b-'%-m')" # Date - PS1+="${BLUE} $(date +'%-I':%M:%S%P)\[${DARKGRAY}\])-" # Time - - # CPU - PS1+="(\[${MAGENTA}\]CPU $(cpu)%" - - # Jobs - PS1+="\[${DARKGRAY}\]:\[${MAGENTA}\]\j" - - # Network Connections (for a server - comment out for non-server) - PS1+="\[${DARKGRAY}\]:\[${MAGENTA}\]Net $(awk 'END {print NR}' /proc/net/tcp)" - - PS1+="\[${DARKGRAY}\])-" - - # User and server - local SSH_IP=`echo $SSH_CLIENT | awk '{ print $1 }'` - local SSH2_IP=`echo $SSH2_CLIENT | awk '{ print $1 }'` - if [ $SSH2_IP ] || [ $SSH_IP ] ; then - PS1+="(\[${RED}\]\u@\h" - else - PS1+="(\[${RED}\]\u" - fi - - # Current directory - PS1+="\[${DARKGRAY}\]:\[${BROWN}\]\w\[${DARKGRAY}\])-" - - # Total size of files in current directory - PS1+="(\[${GREEN}\]$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')\[${DARKGRAY}\]:" - - # Number of files - PS1+="\[${GREEN}\]\$(/bin/ls -A -1 | /usr/bin/wc -l)\[${DARKGRAY}\])" - - # Skip to the next line - PS1+="\n" - - # singularity? - if [ -e /environment ] ; then - PS1+="singularity" - fi - - if [[ $EUID -ne 0 ]]; then - PS1+="\[${GREEN}\]>\[${NOCOLOR}\] " # Normal user - else - PS1+="\[${RED}\]>\[${NOCOLOR}\] " # Root user - fi - - # PS2 is used to continue a command using the \ character - PS2="\[${DARKGRAY}\]>\[${NOCOLOR}\] " - - # PS3 is used to enter a number choice in a script - PS3='Please enter a number from above list: ' - - # PS4 is used for tracing a script in debug mode - PS4='\[${DARKGRAY}\]+\[${NOCOLOR}\] ' -} -PROMPT_COMMAND='__setprompt' diff --git a/containers/oneapi/base.Dockerfile b/containers/oneapi/base.Dockerfile deleted file mode 100644 index b7a5d0122..000000000 --- a/containers/oneapi/base.Dockerfile +++ /dev/null @@ -1,70 +0,0 @@ -#syntax=docker/dockerfile:1.2 -ARG BASEIMAGE="intel/oneapi-hpckit:2022.2-devel-ubuntu20.04" - -# Minimal container based on Intel oneAPI for up-to-date packages. -# Very lightweight container with a minimal build environment (LOL) - -FROM ${BASEIMAGE} -LABEL maintainer="Wouter Deconinck <wouter.deconinck@umanitoba.ca" \ - name="oneapi_base" \ - march="amd64" - -COPY bashrc /root/.bashrc - -ENV CLICOLOR_FORCE=1 \ - LANGUAGE=en_US.UTF-8 \ - LANG=en_US.UTF-8 \ - LC_ALL=en_US.UTF-8 - -## Install additional packages. Remove the auto-cleanup functionality -## for docker, as we're using the new buildkit cache instead. -## We also install gitlab-runner, from the buster package (as bullseye is not available atm) -RUN --mount=type=cache,target=/var/cache/apt \ - rm -f /etc/apt/apt.conf.d/docker-clean \ - && ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime \ - && echo "US/Eastern" > /etc/timezone \ - && apt-get -yqq update \ - && apt-get -yqq upgrade \ - && apt-get -yqq install --no-install-recommends \ - bc \ - ca-certificates \ - clang-format \ - clang-tidy \ - curl \ - file \ - build-essential \ - gdb \ - ghostscript \ - git \ - gnupg2 \ - gv \ - iproute2 \ - iputils-ping \ - iputils-tracepath \ - less \ - libcbor-xs-perl \ - libjson-xs-perl \ - locales \ - lua-posix \ - make \ - nano \ - openssh-client \ - parallel \ - poppler-utils \ - time \ - unzip \ - valgrind \ - vim-nox \ - wget \ - && localedef -i en_US -f UTF-8 en_US.UTF-8 \ - && gcc --version \ - && curl -L \ - "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" \ - | bash \ - && sed -i "s/bookworm/buster/" \ - /etc/apt/sources.list.d/runner_gitlab-runner.list \ - && apt-get -yqq update \ - && apt-get -yqq install --no-install-recommends \ - gitlab-runner \ - && apt-get -yqq autoremove \ - && rm -rf /var/lib/apt/lists/* diff --git a/containers/oneapi/bashrc b/containers/oneapi/bashrc deleted file mode 100644 index 4d1c1f348..000000000 --- a/containers/oneapi/bashrc +++ /dev/null @@ -1,452 +0,0 @@ -#!/bin/bash -iatest=$(expr index "$-" i) - -####################################################### -# SOURCED ALIAS'S AND SCRIPTS BY zachbrowne.me -####################################################### - -# Source global definitions -if [ -f /etc/bashrc ]; then - . /etc/bashrc -fi - -# Enable bash programmable completion features in interactive shells -if [ -f /usr/share/bash-completion/bash_completion ]; then - . /usr/share/bash-completion/bash_completion -elif [ -f /etc/bash_completion ]; then - . /etc/bash_completion -fi - -####################################################### -# EXPORTS -####################################################### - -# Disable the bell -if [[ $iatest > 0 ]]; then bind "set bell-style visible"; fi - -# Expand the history size -export HISTFILESIZE=10000 -export HISTSIZE=500 - -# Don't put duplicate lines in the history and do not add lines that start with a space -export HISTCONTROL=erasedups:ignoredups:ignorespace - -# Check the window size after each command and, if necessary, update the values of LINES and COLUMNS -shopt -s checkwinsize - -# Causes bash to append to history instead of overwriting it so if you start a new terminal, you have old session history -shopt -s histappend -PROMPT_COMMAND='history -a' - -# Allow ctrl-S for history navigation (with ctrl-R) -stty -ixon - -# Ignore case on auto-completion -# Note: bind used instead of sticking these in .inputrc -if [[ $iatest > 0 ]]; then bind "set completion-ignore-case on"; fi - -# Show auto-completion list automatically, without double tab -if [[ $iatest > 0 ]]; then bind "set show-all-if-ambiguous On"; fi - -# Set the default editor -export EDITOR=vim -export VISUAL=vim -alias pico='edit' -alias spico='sedit' -alias nano='edit' -alias snano='sedit' - -# To have colors for ls and all grep commands such as grep, egrep and zgrep -export CLICOLOR=1 -export LS_COLORS='no=00:fi=00:di=00;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:*.xml=00;31:' -#export GREP_OPTIONS='--color=auto' #deprecated -#alias grep="/usr/bin/grep $GREP_OPTIONS" -#unset GREP_OPTIONS - -# Color for manpages in less makes manpages a little easier to read -export LESS_TERMCAP_mb=$'\E[01;31m' -export LESS_TERMCAP_md=$'\E[01;31m' -export LESS_TERMCAP_me=$'\E[0m' -export LESS_TERMCAP_se=$'\E[0m' -export LESS_TERMCAP_so=$'\E[01;44;33m' -export LESS_TERMCAP_ue=$'\E[0m' -export LESS_TERMCAP_us=$'\E[01;32m' - -####################################################### -# GENERAL ALIAS'S -####################################################### - -# Alias's to modified commands -alias cp='cp -i' -alias mv='mv -i' -alias rm='rm -iv' -alias mkdir='mkdir -p' -alias ps='ps auxf' -alias ping='ping -c 10' -alias less='less -R' -alias cls='clear' -alias apt-get='apt-get' -alias multitail='multitail --no-repeat -c' -alias freshclam='freshclam' -alias vi='vim' -alias vis='vim "+set si"' - -# Change directory aliases -alias home='cd ~' -alias cd..='cd ..' -alias ..='cd ..' -alias ...='cd ../..' -alias ....='cd ../../..' -alias .....='cd ../../../..' - -# cd into the old directory -alias bd='cd "$OLDPWD"' - -# Remove a directory and all files -alias rmd='/bin/rm --recursive --force --verbose ' - -# Alias's for multiple directory listing commands -alias la='ls -Alh' # show hidden files -alias ls='ls -aFh --color=always' # add colors and file type extensions -alias lx='ls -lXBh' # sort by extension -alias lk='ls -lSrh' # sort by size -alias lc='ls -lcrh' # sort by change time -alias lu='ls -lurh' # sort by access time -alias lr='ls -lRh' # recursive ls -alias lt='ls -ltrh' # sort by date -alias lm='ls -alh |more' # pipe through 'more' -alias lw='ls -xAh' # wide listing format -alias ll='ls -Fls' # long listing format -alias labc='ls -lap' #alphabetical sort -alias lf="ls -l | egrep -v '^d'" # files only -alias ldir="ls -l | egrep '^d'" # directories only - -# alias chmod commands -alias mx='chmod a+x' -alias 000='chmod -R 000' -alias 644='chmod -R 644' -alias 666='chmod -R 666' -alias 755='chmod -R 755' -alias 777='chmod -R 777' - -# Search command line history -alias h="history | grep " - -# Search running processes -alias p="ps aux | grep " -alias topcpu="/bin/ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10" - -# Search files in the current folder -alias f="find . | grep " - -# Count all files (recursively) in the current folder -alias countfiles="for t in files links directories; do echo \`find . -type \${t:0:1} | wc -l\` \$t; done 2> /dev/null" - -# To see if a command is aliased, a file, or a built-in command -alias checkcommand="type -t" - -# Show all logs in /var/log -alias logs="sudo find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f" - -# SHA1 -alias sha1='openssl sha1' - -####################################################### -# SPECIAL FUNCTIONS -####################################################### - -# Extracts any archive(s) (if unp isn't installed) -extract () { - for archive in $*; do - if [ -f $archive ] ; then - case $archive in - *.tar.bz2) tar xvjf $archive ;; - *.tar.gz) tar xvzf $archive ;; - *.bz2) bunzip2 $archive ;; - *.rar) rar x $archive ;; - *.gz) gunzip $archive ;; - *.tar) tar xvf $archive ;; - *.tbz2) tar xvjf $archive ;; - *.tgz) tar xvzf $archive ;; - *.zip) unzip $archive ;; - *.Z) uncompress $archive ;; - *.7z) 7z x $archive ;; - *) echo "don't know how to extract '$archive'..." ;; - esac - else - echo "'$archive' is not a valid file!" - fi - done -} - -# Searches for text in all files in the current folder -ftext () -{ - # -i case-insensitive - # -I ignore binary files - # -H causes filename to be printed - # -r recursive search - # -n causes line number to be printed - # optional: -F treat search term as a literal, not a regular expression - # optional: -l only print filenames and not the matching lines ex. grep -irl "$1" * - grep -iIHrn --color=always "$1" . | less -r -} - -# Copy file with a progress bar -cpp() -{ - set -e - strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \ - | awk '{ - count += $NF - if (count % 10 == 0) { - percent = count / total_size * 100 - printf "%3d%% [", percent - for (i=0;i<=percent;i++) - printf "=" - printf ">" - for (i=percent;i<100;i++) - printf " " - printf "]\r" - } - } - END { print "" }' total_size=$(stat -c '%s' "${1}") count=0 -} - -# Copy and go to the directory -cpg () -{ - if [ -d "$2" ];then - cp $1 $2 && cd $2 - else - cp $1 $2 - fi -} - -# Move and go to the directory -mvg () -{ - if [ -d "$2" ];then - mv $1 $2 && cd $2 - else - mv $1 $2 - fi -} - -# Create and go to the directory -mkdirg () -{ - mkdir -p $1 - cd $1 -} - -# Goes up a specified number of directories (i.e. up 4) -up () -{ - local d="" - limit=$1 - for ((i=1 ; i <= limit ; i++)) - do - d=$d/.. - done - d=$(echo $d | sed 's/^\///') - if [ -z "$d" ]; then - d=.. - fi - cd $d -} - -#Automatically do an ls after each cd -# cd () -# { -# if [ -n "$1" ]; then -# builtin cd "$@" && ls -# else -# builtin cd ~ && ls -# fi -# } - -# Returns the last 2 fields of the working directory -pwdtail () -{ - pwd|awk -F/ '{nlast = NF -1;print $nlast"/"$NF}' -} - -# Show the current version of the operating system -ver () -{ - local dtype - dtype=$(distribution) - - if [ $dtype == "redhat" ]; then - if [ -s /etc/redhat-release ]; then - cat /etc/redhat-release && uname -a - else - cat /etc/issue && uname -a - fi - elif [ $dtype == "suse" ]; then - cat /etc/SuSE-release - elif [ $dtype == "debian" ]; then - lsb_release -a - # sudo cat /etc/issue && sudo cat /etc/issue.net && sudo cat /etc/lsb_release && sudo cat /etc/os-release # Linux Mint option 2 - elif [ $dtype == "gentoo" ]; then - cat /etc/gentoo-release - elif [ $dtype == "mandriva" ]; then - cat /etc/mandriva-release - elif [ $dtype == "slackware" ]; then - cat /etc/slackware-version - else - if [ -s /etc/issue ]; then - cat /etc/issue - else - echo "Error: Unknown distribution" - exit 1 - fi - fi -} - -# For some reason, rot13 pops up everywhere -rot13 () { - if [ $# -eq 0 ]; then - tr '[a-m][n-z][A-M][N-Z]' '[n-z][a-m][N-Z][A-M]' - else - echo $* | tr '[a-m][n-z][A-M][N-Z]' '[n-z][a-m][N-Z][A-M]' - fi -} - -# Trim leading and trailing spaces (for scripts) -trim() -{ - local var=$@ - var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters - var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters - echo -n "$var" -} - -####################################################### -# Set the ultimate amazing command prompt -####################################################### - -alias cpu="grep 'cpu ' /proc/stat | awk '{usage=(\$2+\$4)*100/(\$2+\$4+\$5)} END {print usage}' | awk '{printf(\"%.1f\n\", \$1)}'" -function __setprompt -{ - local LAST_COMMAND=$? # Must come first! - - # Define colors - local LIGHTGRAY="\033[0;37m" - local WHITE="\033[1;37m" - local BLACK="\033[0;30m" - local DARKGRAY="\033[1;30m" - local RED="\033[0;31m" - local LIGHTRED="\033[1;31m" - local GREEN="\033[0;32m" - local LIGHTGREEN="\033[1;32m" - local BROWN="\033[0;33m" - local YELLOW="\033[1;33m" - local BLUE="\033[0;34m" - local LIGHTBLUE="\033[1;34m" - local MAGENTA="\033[0;35m" - local LIGHTMAGENTA="\033[1;35m" - local CYAN="\033[0;36m" - local LIGHTCYAN="\033[1;36m" - local NOCOLOR="\033[0m" - - # Show error exit code if there is one - if [[ $LAST_COMMAND != 0 ]]; then - # PS1="\[${RED}\](\[${LIGHTRED}\]ERROR\[${RED}\])-(\[${LIGHTRED}\]Exit Code \[${WHITE}\]${LAST_COMMAND}\[${RED}\])-(\[${LIGHTRED}\]" - PS1="\[${DARKGRAY}\](\[${LIGHTRED}\]ERROR\[${DARKGRAY}\])-(\[${RED}\]Exit Code \[${LIGHTRED}\]${LAST_COMMAND}\[${DARKGRAY}\])-(\[${RED}\]" - if [[ $LAST_COMMAND == 1 ]]; then - PS1+="General error" - elif [ $LAST_COMMAND == 2 ]; then - PS1+="Missing keyword, command, or permission problem" - elif [ $LAST_COMMAND == 126 ]; then - PS1+="Permission problem or command is not an executable" - elif [ $LAST_COMMAND == 127 ]; then - PS1+="Command not found" - elif [ $LAST_COMMAND == 128 ]; then - PS1+="Invalid argument to exit" - elif [ $LAST_COMMAND == 129 ]; then - PS1+="Fatal error signal 1" - elif [ $LAST_COMMAND == 130 ]; then - PS1+="Script terminated by Control-C" - elif [ $LAST_COMMAND == 131 ]; then - PS1+="Fatal error signal 3" - elif [ $LAST_COMMAND == 132 ]; then - PS1+="Fatal error signal 4" - elif [ $LAST_COMMAND == 133 ]; then - PS1+="Fatal error signal 5" - elif [ $LAST_COMMAND == 134 ]; then - PS1+="Fatal error signal 6" - elif [ $LAST_COMMAND == 135 ]; then - PS1+="Fatal error signal 7" - elif [ $LAST_COMMAND == 136 ]; then - PS1+="Fatal error signal 8" - elif [ $LAST_COMMAND == 137 ]; then - PS1+="Fatal error signal 9" - elif [ $LAST_COMMAND -gt 255 ]; then - PS1+="Exit status out of range" - else - PS1+="Unknown error code" - fi - PS1+="\[${DARKGRAY}\])\[${NOCOLOR}\]\n" - else - PS1="" - fi - - # Date - PS1+="\[${DARKGRAY}\](\[${CYAN}\]\$(date +%a) $(date +%b-'%-m')" # Date - PS1+="${BLUE} $(date +'%-I':%M:%S%P)\[${DARKGRAY}\])-" # Time - - # CPU - PS1+="(\[${MAGENTA}\]CPU $(cpu)%" - - # Jobs - PS1+="\[${DARKGRAY}\]:\[${MAGENTA}\]\j" - - # Network Connections (for a server - comment out for non-server) - PS1+="\[${DARKGRAY}\]:\[${MAGENTA}\]Net $(awk 'END {print NR}' /proc/net/tcp)" - - PS1+="\[${DARKGRAY}\])-" - - # User and server - local SSH_IP=`echo $SSH_CLIENT | awk '{ print $1 }'` - local SSH2_IP=`echo $SSH2_CLIENT | awk '{ print $1 }'` - if [ $SSH2_IP ] || [ $SSH_IP ] ; then - PS1+="(\[${RED}\]\u@\h" - else - PS1+="(\[${RED}\]\u" - fi - - # Current directory - PS1+="\[${DARKGRAY}\]:\[${BROWN}\]\w\[${DARKGRAY}\])-" - - # Total size of files in current directory - PS1+="(\[${GREEN}\]$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')\[${DARKGRAY}\]:" - - # Number of files - PS1+="\[${GREEN}\]\$(/bin/ls -A -1 | /usr/bin/wc -l)\[${DARKGRAY}\])" - - # Skip to the next line - PS1+="\n" - - # singularity? - if [ -e /environment ] ; then - PS1+="singularity" - fi - - if [[ $EUID -ne 0 ]]; then - PS1+="\[${GREEN}\]>\[${NOCOLOR}\] " # Normal user - else - PS1+="\[${RED}\]>\[${NOCOLOR}\] " # Root user - fi - - # PS2 is used to continue a command using the \ character - PS2="\[${DARKGRAY}\]>\[${NOCOLOR}\] " - - # PS3 is used to enter a number choice in a script - PS3='Please enter a number from above list: ' - - # PS4 is used for tracing a script in debug mode - PS4='\[${DARKGRAY}\]+\[${NOCOLOR}\] ' -} -PROMPT_COMMAND='__setprompt' diff --git a/containers/oneapi/onedev.Dockerfile b/containers/oneapi/onedev.Dockerfile deleted file mode 100644 index 03dfc288a..000000000 --- a/containers/oneapi/onedev.Dockerfile +++ /dev/null @@ -1,340 +0,0 @@ -# syntax=docker/dockerfile:1.2 - -# Container based on Jug_dev with Intel oneAPI support. - -# Start with Debian-stable and layer oneAPI on top, prevents spack compiler errors. - -## ======================================================================================== -## STAGE 1: spack builder image -## EIC builder image with spack -## ======================================================================================== - -ARG DOCKER_REGISTRY="eicweb.phy.anl.gov:4567/containers/eic_container/" -ARG BASEIMAGE="debian_base" -# Internal Tag will be set by GitLab CI -ARG INTERNAL_TAG="testing" - -FROM ${DOCKER_REGISTRY}${BASEIMAGE}:${INTERNAL_TAG} as builder - -## Install some extra spack dependencies -## Do not use Cache mount as it conflicts with oneapi stage -RUN \ - rm -f /etc/apt/apt.conf.d/docker-clean \ - && apt-get -yqq update \ - && apt-get -yqq install --no-install-recommends \ - python3 \ - python3-dev \ - python3-distutils \ - python-is-python3 \ - && rm -rf /var/lib/apt/lists/* - - -## Setup spack -## parts: -ARG SPACK_ROOT=/opt/spack -ARG SPACK_VERSION="develop" -ARG SPACK_CHERRYPICKS="" -RUN echo "Part 1: regular spack install (as in containerize)" \ - && git clone https://github.com/spack/spack.git /tmp/spack-staging \ - && cd /tmp/spack-staging \ - && git checkout $SPACK_VERSION \ - && if [ -n "$SPACK_CHERRYPICKS" ] ; then \ - git cherry-pick -n $SPACK_CHERRYPICKS ; \ - fi \ - && cd - \ - && mkdir -p $SPACK_ROOT/opt/spack \ - && cp -r /tmp/spack-staging/bin $SPACK_ROOT/bin \ - && cp -r /tmp/spack-staging/etc $SPACK_ROOT/etc \ - && cp -r /tmp/spack-staging/lib $SPACK_ROOT/lib \ - && cp -r /tmp/spack-staging/share $SPACK_ROOT/share \ - && cp -r /tmp/spack-staging/var $SPACK_ROOT/var \ - && cp -r /tmp/spack-staging/.git $SPACK_ROOT/.git \ - && rm -rf /tmp/spack-staging \ - && echo 'export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH'\ - >> $SPACK_ROOT/share/setup-env.sh \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/sbin/docker-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/sbin/interactive-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/sbin/spack-env \ - && echo "Part 2: Set target to generic x86_64" \ - && echo "packages:" > $SPACK_ROOT/etc/spack/packages.yaml \ - && echo " all:" >> $SPACK_ROOT/etc/spack/packages.yaml \ - && echo " target: [x86_64]" >> $SPACK_ROOT/etc/spack/packages.yaml \ - && cat $SPACK_ROOT/etc/spack/packages.yaml \ - && echo "Part 3: Set config to allow use of more cores for builds" \ - && echo "(and some other settings)" \ - && echo "config:" > $SPACK_ROOT/etc/spack/config.yaml \ - && echo " suppress_gpg_warnings: true" \ - >> $SPACK_ROOT/etc/spack/config.yaml \ - && echo " build_jobs: 64" >> $SPACK_ROOT/etc/spack/config.yaml \ - && echo " install_tree:" >> $SPACK_ROOT/etc/spack/config.yaml \ - && echo " root: /opt/software" >> $SPACK_ROOT/etc/spack/config.yaml \ - && cat $SPACK_ROOT/etc/spack/config.yaml - -SHELL ["docker-shell"] - -## Setup spack buildcache mirrors, including an internal -## spack mirror using the docker build cache, and -## a backup mirror on the internal B010 network -RUN --mount=type=cache,target=/var/cache/spack-mirror \ - export OLD_PATH=$PATH \ - && export PATH=$PATH:$SPACK_ROOT/bin \ - && spack mirror add docker /var/cache/spack-mirror \ - && spack mirror list - -## This variable will change whenevery either spack.yaml or our spack package -## overrides change, triggering a rebuild -ARG CACHE_BUST="hash" -ARG CACHE_NUKE="" - -## Setup our custom package overrides -ENV EICSPACK_ROOT=$SPACK_ROOT/var/spack/repos/eic-spack -ARG EICSPACK_VERSION="$SPACK_VERSION" -RUN git clone https://github.com/eic/eic-spack.git ${EICSPACK_ROOT} \ - && git -C ${EICSPACK_ROOT} checkout ${EICSPACK_VERSION} \ - && if [ -n "${EICSPACK_CHERRYPICKS}" ] ; then \ - git -C ${EICSPACK_ROOT} cherry-pick -n ${EICSPACK_CHERRYPICKS} ; \ - fi \ - && spack repo add --scope site "${EICSPACK_ROOT}" - -## Setup our custom environment -COPY spack.yaml /opt/spack-environment/ -RUN rm -r /usr/local \ - && spack env activate /opt/spack-environment/ \ - && spack concretize - - -## Now execute the main build (or fetch from cache if possible) -## note, no-check-signature is needed to allow the quicker signature-less -## packages from the internal (docker) buildcache -## -## Optional, nuke the buildcache after install, before (re)caching -## This is useful when going to completely different containers, -## or intermittently to keep the buildcache step from taking too much time -## -## Update the local build cache if needed. Consists of 3 steps: -## 1. Remove the B010 network buildcache (silicon) -## 2. Get a list of all packages, and compare with what is already on -## the buildcache (using package hash) -## 3. Add packages that need to be added to buildcache if any -RUN --mount=type=cache,target=/var/cache/spack-mirror \ - cd /opt/spack-environment \ - && ls /var/cache/spack-mirror \ - && spack env activate . \ - && status=0 \ - && spack install -j64 --no-check-signature \ - || spack install -j64 --no-check-signature \ - || spack install -j64 --no-check-signature \ - || status=$? \ - && [ -z "${CACHE_NUKE}" ] \ - || rm -rf /var/cache/spack-mirror/build_cache/* \ - && mkdir -p /var/cache/spack-mirror/build_cache \ - && spack buildcache update-index -d /var/cache/spack-mirror \ - && spack buildcache list --allarch --very-long \ - | sed '/^$/d;/^--/d;s/@.\+//;s/\([a-z0-9]*\) \(.*\)/\2\/\1/' \ - | sort > tmp.buildcache.txt \ - && spack find --format {name}/{hash} | sort \ - | comm -23 - tmp.buildcache.txt \ - | xargs --no-run-if-empty \ - spack buildcache create --allow-root --only package --unsigned \ - --directory /var/cache/spack-mirror \ - --rebuild-index \ - && spack clean -a \ - && exit $status - -## Extra post-spack steps: -## - Python packages -COPY requirements.txt /usr/local/etc/requirements.txt -RUN --mount=type=cache,target=/var/cache/pip \ - echo "Installing additional python packages" \ - && cd /opt/spack-environment && spack env activate . \ - && python -m pip install \ - --trusted-host pypi.org \ - --trusted-host files.pythonhosted.org \ - --cache-dir /var/cache/pip \ - --requirement /usr/local/etc/requirements.txt \ - --no-warn-script-location - # ^ Supress not on PATH Warnings - -## Including some small fixes: -## - Somehow PODIO env isn't automatically set, -## - and Gaudi likes BINARY_TAG to be set -RUN cd /opt/spack-environment \ - && echo -n "" \ - && echo "Grabbing environment info" \ - && spack env activate --sh -d . \ - | sed "s?LD_LIBRARY_PATH=?&/lib/x86_64-linux-gnu:?" \ - | sed '/MANPATH/ s/;$/:;/' \ - > /etc/profile.d/z10_spack_environment.sh \ - && cd /opt/spack-environment && spack env activate . \ - && echo -n "" \ - && echo "Add extra environment variables for Jug, Podio and Gaudi" \ - && echo "export PODIO=$(spack location -i podio);" \ - >> /etc/profile.d/z10_spack_environment.sh \ - && echo -n "" \ - && echo "Executing cmake patch for dd4hep 16.1" \ - && sed -i "s/FIND_PACKAGE(Python/#&/" /usr/local/cmake/DD4hepBuild.cmake - -## make sure we have the entrypoints setup correctly -ENTRYPOINT [] -CMD ["bash", "--rcfile", "/etc/profile", "-l"] -USER 0 -WORKDIR / - -## ======================================================================================== -## STAGE 2: staging image with unnecessariy packages removed and stripped binaries -## ======================================================================================== -FROM builder AS staging - -RUN cd /opt/spack-environment && spack env activate . && spack gc -y -# Strip all the binaries -# This reduces the image by factor of x2, so worth the effort -# note that we do not strip python libraries as can cause issues in some cases -RUN find -L /usr/local/* \ - -type d -name site-packages -prune -false -o \ - -type f -not -name "zdll.lib" -not -name libtensorflow-lite.a \ - -exec realpath '{}' \; \ - | xargs file -i \ - | grep 'charset=binary' \ - | grep 'x-executable\|x-archive\|x-sharedlib' \ - | awk -F: '{print $1}' | xargs strip -s - -## Bugfix to address issues loading the Qt5 libraries on Linux kernels prior to 3.15 -## See -#https://askubuntu.com/questions/1034313/ubuntu-18-4-libqt5core-so-5-cannot-open-shared-object-file-no-such-file-or-dir -## and links therin for more info -RUN strip --remove-section=.note.ABI-tag /usr/local/lib/libQt5Core.so - -RUN spack debug report \ - | sed "s/^/ - /" | sed "s/\* \*\*//" | sed "s/\*\*//" \ - >> /etc/jug_info \ - && spack find --no-groups --long --variants | sed "s/^/ - /" >> /etc/jug_info - -COPY eic-shell /usr/local/bin/eic-shell -COPY eic-info /usr/local/bin/eic-info -COPY entrypoint.sh /usr/local/sbin/entrypoint.sh -COPY eic-env.sh /etc/eic-env.sh -COPY profile.d/a00_cleanup.sh /etc/profile.d -COPY profile.d/z11_jug_env.sh /etc/profile.d -COPY singularity.d /.singularity.d - -## Add minio client into /usr/local/bin -ADD https://dl.min.io/client/mc/release/linux-amd64/mc /usr/local/bin -RUN chmod a+x /usr/local/bin/mc - -## ======================================================================================== -## STAGE 3: Set up Intel OneAPI Toolkit -## Use Intel's HPC-kit and Create Lean image from staging -## ======================================================================================== - -FROM intel/oneapi-hpckit:2022.2-devel-ubuntu20.04 AS oneapi - - -COPY bashrc /root/.bashrc - -ENV CLICOLOR_FORCE=1 \ - LANGUAGE=en_US.UTF-8 \ - LANG=en_US.UTF-8 \ - LC_ALL=en_US.UTF-8 - -## Install additional packages. Remove the auto-cleanup functionality -## for docker, as we're using the new buildkit cache instead. -## We install gcc-10 and g++-10 as they are not installed by default in -## Ubuntu 20.04. -## TODO: libyaml-cpp-dev is a dependency for afterburner. We can probably remove -## this once afterburner is added to spack -RUN --mount=type=cache,target=/var/cache/apt \ - rm -f /etc/apt/apt.conf.d/docker-clean \ - && ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime \ - && echo "US/Eastern" > /etc/timezone \ - && apt-get -yqq update \ - && apt-get -yqq upgrade \ - && apt-get -yqq install --no-install-recommends \ - bc \ - ca-certificates \ - clang-format \ - clang-tidy \ - curl \ - file \ - build-essential \ - g++-10 \ - gcc-10 \ - gdb \ - ghostscript \ - gfortran-10 \ - git \ - gnupg2 \ - gv \ - iproute2 \ - iputils-ping \ - iputils-tracepath \ - less \ - libcbor-xs-perl \ - libjson-xs-perl \ - libyaml-cpp-dev \ - locales \ - lua-posix \ - make \ - nano \ - openssh-client \ - parallel \ - poppler-utils \ - python3 \ - python3-dev \ - python3-distutils \ - time \ - unzip \ - valgrind \ - vim-nox \ - wget \ - && localedef -i en_US -f UTF-8 en_US.UTF-8 \ - && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 \ - && update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100 \ - && update-alternatives --install /usr/bin/gfortran gfortran \ - /usr/bin/gfortran-10 100 \ - && gcc --version \ - && curl -L \ - "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" \ - | bash \ - && apt-get -yqq update \ - && apt-get -yqq install --no-install-recommends \ - gitlab-runner \ - && apt-get -yqq autoremove \ - && rm -rf /var/lib/apt/lists/* - -## copy over everything we need from staging in a single layer -RUN --mount=from=staging,target=/staging \ - rm -rf /usr/local \ - && cp -r /staging/opt/spack-environment /opt/spack-environment \ - && cp -r /staging/opt/software /opt/software \ - && cp -r /staging/usr/._local /usr/._local \ - && cd /usr/._local \ - && PREFIX_PATH=$(realpath $(ls | tail -n1)) \ - && echo "Found spack true prefix path to be $PREFIX_PATH" \ - && cd - \ - && ln -s ${PREFIX_PATH} /usr/local \ - && cp /staging/etc/profile.d/*.sh /etc/profile.d/ \ - && cp /staging/etc/eic-env.sh /etc/eic-env.sh \ - && cp /staging/etc/jug_info /etc/jug_info \ - && cp -r /staging/.singularity.d /.singularity.d - -## set the jug_dev version and add the afterburner -## TODO: move afterburner to spack when possible -ARG JUG_VERSION=1 -ARG AFTERBURNER_VERSION=main -RUN echo "" >> /etc/jug_info \ - && echo " - jug_dev: ${JUG_VERSION}" >> /etc/jug_info - -## make entrypoint executable and set up oneAPI environment -RUN chmod +x /usr/local/sbin/entrypoint.sh \ - && echo "source /opt/intel/oneapi/setvars.sh --force 2> /dev/null" \ - >> /etc/profile - -## make sure we have the entrypoints setup correctly -ENTRYPOINT ["/usr/local/sbin/entrypoint.sh"] -CMD ["bash", "--rcfile", "/etc/profile", "-l"] -USER 0 -WORKDIR / -SHELL ["/usr/local/bin/eic-shell"] -- GitLab