From c784a5b5f1e50ee5f29ea49a92c7da318d538315 Mon Sep 17 00:00:00 2001 From: vsoch Date: Mon, 30 Aug 2021 18:28:13 -0600 Subject: [PATCH] adding start of new structure we will want to add the automated builds and deploy to GitHub packages next. Since this first round is just very base images (e.g., ubuntu, and maybe others are wanted) there will another kind of automated update that can handle building a matrix of containers based on build args from a config file. This will be developed next, see the README for more notes. Signed-off-by: vsoch --- .github/workflows/build-ubuntu-20-base.yml | 62 --------------------- COPYRIGHT | 16 ++++++ LICENSE | 39 ++++++------- NOTICE | 37 ++++++------ README.md | 53 ++++++++++++++---- img/rse-radiuss.png | Bin 0 -> 30300 bytes nvidia-ubuntu-16/nvcc-10/Dockerfile | 10 ---- nvidia-ubuntu-16/nvcc-10/generic-setup.sh | 29 ---------- nvidia-ubuntu-16/nvcc-9/Dockerfile | 12 ---- nvidia-ubuntu-16/nvcc-9/generic-setup.sh | 29 ---------- rocm-ubuntu-16/rocm-3/Dockerfile | 10 ---- rocm-ubuntu-16/rocm-3/generic-setup.sh | 29 ---------- share/axom/logo/axom_logo.png | Bin 37860 -> 0 bytes ubuntu-16/base/Dockerfile | 10 ---- ubuntu-16/base/generic-setup.sh | 29 ---------- ubuntu-16/clang-4/Dockerfile | 17 ------ ubuntu-16/clang-5/Dockerfile | 17 ------ ubuntu-16/clang-6/Dockerfile | 17 ------ ubuntu-16/gcc-4/Dockerfile | 14 ----- ubuntu-16/gcc-5/Dockerfile | 15 ----- ubuntu-16/gcc-6/Dockerfile | 14 ----- ubuntu-16/gcc-7/Dockerfile | 14 ----- ubuntu-16/gcc-8/Dockerfile | 14 ----- ubuntu-16/oneapi/Dockerfile | 20 ------- ubuntu-16/oneapi/entrypoint.sh | 6 -- ubuntu-16/oneapi/generic-setup.sh | 29 ---------- ubuntu-18/base/Dockerfile | 10 ---- ubuntu-18/base/generic-setup.sh | 18 ------ ubuntu-18/clang-10/Dockerfile | 17 ------ ubuntu-20/base/Dockerfile | 10 ---- ubuntu-20/base/generic-setup.sh | 24 -------- ubuntu-20/clang-10/Dockerfile | 15 ----- ubuntu-20/gcc-8/Dockerfile | 14 ----- ubuntu-20/gcc-9/Dockerfile | 14 ----- ubuntu/16.04/Dockerfile | 28 ++++++++++ ubuntu/18.04/Dockerfile | 28 ++++++++++ ubuntu/20.04/Dockerfile | 36 ++++++++++++ 37 files changed, 185 insertions(+), 571 deletions(-) delete mode 100644 .github/workflows/build-ubuntu-20-base.yml create mode 100644 COPYRIGHT create mode 100644 img/rse-radiuss.png delete mode 100644 nvidia-ubuntu-16/nvcc-10/Dockerfile delete mode 100755 nvidia-ubuntu-16/nvcc-10/generic-setup.sh delete mode 100644 nvidia-ubuntu-16/nvcc-9/Dockerfile delete mode 100755 nvidia-ubuntu-16/nvcc-9/generic-setup.sh delete mode 100644 rocm-ubuntu-16/rocm-3/Dockerfile delete mode 100755 rocm-ubuntu-16/rocm-3/generic-setup.sh delete mode 100644 share/axom/logo/axom_logo.png delete mode 100644 ubuntu-16/base/Dockerfile delete mode 100755 ubuntu-16/base/generic-setup.sh delete mode 100644 ubuntu-16/clang-4/Dockerfile delete mode 100644 ubuntu-16/clang-5/Dockerfile delete mode 100644 ubuntu-16/clang-6/Dockerfile delete mode 100644 ubuntu-16/gcc-4/Dockerfile delete mode 100644 ubuntu-16/gcc-5/Dockerfile delete mode 100644 ubuntu-16/gcc-6/Dockerfile delete mode 100644 ubuntu-16/gcc-7/Dockerfile delete mode 100644 ubuntu-16/gcc-8/Dockerfile delete mode 100644 ubuntu-16/oneapi/Dockerfile delete mode 100755 ubuntu-16/oneapi/entrypoint.sh delete mode 100755 ubuntu-16/oneapi/generic-setup.sh delete mode 100644 ubuntu-18/base/Dockerfile delete mode 100755 ubuntu-18/base/generic-setup.sh delete mode 100644 ubuntu-18/clang-10/Dockerfile delete mode 100644 ubuntu-20/base/Dockerfile delete mode 100755 ubuntu-20/base/generic-setup.sh delete mode 100644 ubuntu-20/clang-10/Dockerfile delete mode 100644 ubuntu-20/gcc-8/Dockerfile delete mode 100644 ubuntu-20/gcc-9/Dockerfile create mode 100644 ubuntu/16.04/Dockerfile create mode 100644 ubuntu/18.04/Dockerfile create mode 100644 ubuntu/20.04/Dockerfile diff --git a/.github/workflows/build-ubuntu-20-base.yml b/.github/workflows/build-ubuntu-20-base.yml deleted file mode 100644 index 313e3dd..0000000 --- a/.github/workflows/build-ubuntu-20-base.yml +++ /dev/null @@ -1,62 +0,0 @@ -# This is a basic workflow that is manually triggered - -name: Build Ubuntu-20 Images - -# Manually triggered -on: - workflow_dispatch: - inputs: - os-version: - description: 'OS version to build' - required: true - default: 'ubuntu-20' - image-name: - description: 'Image to build' - required: true - default: 'base' - -jobs: - build_image: - runs-on: ubuntu-latest - name: Builds selected Docker image - env: - REPO: axom/compilers - steps: - - name: Extract branch name - shell: bash - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" - id: extract_branch - - name: Get dockerfile name - shell: bash - run: echo "##[set-output name=filename;]$(echo ${{ github.event.inputs.os-version }}/${{ github.event.inputs.image-name }}/Dockerfile)" - id: dockerfile_name - - name: Get dockerhub repo name - shell: bash - run: | - echo ${REPO}:${{ github.event.inputs.os-version }}-${{ github.event.inputs.image-name }}_`date "+%m-%d-%y_%Hh-%Mm"` - echo "##[set-output name=repo_plus_tag;]$(echo ${REPO}:${{ github.event.inputs.os-version }}-${{ github.event.inputs.image-name }}_`date "+%m-%d-%y_%Hh-%Mm"`)" - echo "##[set-output name=repo_plus_latest;]$(echo ${REPO}:${{ github.event.inputs.os-version }}-${{ github.event.inputs.image-name }}_latest)" - id: repo_name - - - name: Checkout - uses: actions/checkout@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - id: docker_build - uses: docker/build-push-action@v2 - with: - push: true - tags: ${{ steps.repo_name.outputs.repo_plus_tag }},${{ steps.repo_name.outputs.repo_plus_latest }} - file: ${{ steps.dockerfile_name.outputs.filename }} - context: ${{ github.event.inputs.os-version }}/${{ github.event.inputs.image-name }} - platforms: linux/amd64 - build-args: branch=${{ steps.extract_branch.outputs.branch }} diff --git a/COPYRIGHT b/COPYRIGHT new file mode 100644 index 0000000..36c8f5a --- /dev/null +++ b/COPYRIGHT @@ -0,0 +1,16 @@ +Intellectual Property Notice +---------------------------- + +RADIUSS Docker is licensed under the MIT license (LICENSE). + +Copyrights and patents in the RADIUSS Docker project are retained by +contributors. No copyright assignment is required to contribute to RADIUSS +Docker. + + +SPDX usage +------------ + +Individual files contain SPDX tags instead of the full license text. +This enables machine processing of license information based on the SPDX +License Identifiers that are available here: https://spdx.org/licenses/ diff --git a/LICENSE b/LICENSE index 9e7c988..10252ac 100644 --- a/LICENSE +++ b/LICENSE @@ -1,27 +1,22 @@ -Copyright (c) 2017-2020, Lawrence Livermore National Security, LLC. -All rights reserved. +MIT License -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: +Copyright (c) 2021, Lawrence Livermore National Security, LLC -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/NOTICE b/NOTICE index 8aea31b..aad4325 100644 --- a/NOTICE +++ b/NOTICE @@ -1,21 +1,22 @@ -Additional BSD Notice +This work was produced under the auspices of the U.S. Department of +Energy by Lawrence Livermore National Laboratory under Contract +DE-AC52-07NA27344. -1. This notice is required to be provided under our contract with the U.S. -Department of Energy (DOE). This work was produced at Lawrence Livermore -National Laboratory under Contract No. DE-AC52-07NA27344 with the DOE. +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC, nor any of their employees +makes any warranty, expressed or implied, or assumes any legal liability +or responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents that +its use would not infringe privately owned rights. -2. Neither the United States Government nor Lawrence Livermore National -Security, LLC nor any of their employees, makes any warranty, express or -implied, or assumes any liability or responsibility for the accuracy, -completeness, or usefulness of any information, apparatus, product, or -process disclosed, or represents that its use would not infringe -privately-owned rights. +Reference herein to any specific commercial product, process, or service +by trade name, trademark, manufacturer, or otherwise does not necessarily +constitute or imply its endorsement, recommendation, or favoring by the +United States Government or Lawrence Livermore National Security, LLC. + +The views and opinions of authors expressed herein do not necessarily +state or reflect those of the United States Government or Lawrence +Livermore National Security, LLC, and shall not be used for advertising +or product endorsement purposes. -3. Also, reference herein to any specific commercial products, process, -or services by trade name, trademark, manufacturer or otherwise does not -necessarily constitute or imply its endorsement, recommendation, or favoring -by the United States Government or Lawrence Livermore National Security, LLC. -The views and opinions of authors expressed herein do not necessarily state -or reflect those of the United States Government or Lawrence Livermore -National Security, LLC, and shall not be used for advertising or product -endorsement purposes. diff --git a/README.md b/README.md index ea1f5ce..821d2ba 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,52 @@ -# Axom +# Radiuss Docker -[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/LLNL/axom/blob/develop/LICENSE) +![img/rse-radiuss.png](img/rse-radiuss.png) -This repository contains Dockerfiles for CI builds for the -[Axom](https://github.com/LLNL/Axom) project. +[![License](https://img.shields.io/badge/License-MIT%203--Clause-blue.svg)](https://github.com/rse-radiuss/radius-docker/blob/main/LICENSE) -Axom provides robust, flexible software infrastructure for the development of -multi-physics applications and computational tools. +This project is part of [RADIUSS](https://computing.llnl.gov/projects/radiuss), which +has a focus on helping open source scientific projects use best practices for +automation and development. + +This repository contains Dockerfiles for CI builds for use by the various +[RADIUSS](https://software.llnl.gov/radiuss/) projects, and anyone else that +might be interested. The image builds are automated and self-updating, and process +described more below in detail. + +## Base Images + +A core base image is considered the lowest level - an operating system with +only a handful of additional dependencies that won't vary with the operating system. +For comparison with the [previous axom repository](https://github.com/LLNL/axom-docker), +these are currently only considered the "base" image (e.g., the "base" subfolders present +in nested folders there). A strategy to build other +bases on top of that (e.g., with gcc, clang, etc.) is still in the works. +To maintain these images, we will use the [uptodate](https://github.com/vsoch/uptodate) +GitHub action. + +## Matrix Images + +A matrix image uses a base image, as described above, to add a matrix of different +installs. This is a different approach than a core base image because we likely +want to use a common template with different build arguments, as opposed to +very different `Dockerfile` (as would be expected with base). We will +also be using a GitHub action for this approach (not developed yet, and the +`Dockerfile` and other logic is not added yet to the repository here. + +**under development** License ------- -Copyright (c) 2017-2020, Lawrence Livermore National Security, LLC. +Copyright (c) 2017-2021, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory. -Copyrights and patents in the Axom project are retained by contributors. -No copyright assignment is required to contribute to Axom. +RADIUSS Docker is licensed under the MIT license [LICENSE](./LICENSE). -See [LICENSE](./LICENSE) for details. +Copyrights and patents in the RADIUSS Docker project are retained by +contributors. No copyright assignment is required to contribute to RADIUSS +Docker. -Unlimited Open Source - BSD 3-clause Distribution -`LLNL-CODE-741217` `OCEC-17-187` +This work was produced under the auspices of the U.S. Department of +Energy by Lawrence Livermore National Laboratory under Contract +DE-AC52-07NA27344. diff --git a/img/rse-radiuss.png b/img/rse-radiuss.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3da3639f2ddee537687820ad7396324bd96566 GIT binary patch literal 30300 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 literal 0 HcmV?d00001 diff --git a/nvidia-ubuntu-16/nvcc-10/Dockerfile b/nvidia-ubuntu-16/nvcc-10/Dockerfile deleted file mode 100644 index db6df53..0000000 --- a/nvidia-ubuntu-16/nvcc-10/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM nvidia/cuda:10.1-devel-ubuntu16.04 - -LABEL maintainer="David Beckingsale " - -ADD generic-setup.sh /root/generic-setup.sh - -RUN /root/generic-setup.sh - -USER axom -WORKDIR /home/axom diff --git a/nvidia-ubuntu-16/nvcc-10/generic-setup.sh b/nvidia-ubuntu-16/nvcc-10/generic-setup.sh deleted file mode 100755 index 9816d21..0000000 --- a/nvidia-ubuntu-16/nvcc-10/generic-setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -set -e -set -x - -apt-get -qq update -apt-get -qq install -y --no-install-recommends wget - -wget "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x60C317803A41BA51845E371A1E9377A2BA9EF27F" -O out && apt-key add out && rm out -echo deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list -echo deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list - -apt-get -qq update -apt-get -qq install -y --no-install-recommends python-dev build-essential sudo git vim dh-autoreconf ninja-build ca-certificates - -wget -q --no-check-certificate https://cmake.org/files/v3.10/cmake-3.10.1-Linux-x86_64.tar.gz -tar -xzf cmake-3.10.1-Linux-x86_64.tar.gz -cp -fR cmake-3.10.1-Linux-x86_64/* /usr -rm -rf cmake-3.10.1-Linux-x86_64 -rm cmake-3.10.1-Linux-x86_64.tar.gz - -wget -q --no-check-certificate https://bootstrap.pypa.io/get-pip.py -python get-pip.py -rm get-pip.py -pip install -q -U pip - -useradd -ms /bin/bash axom -printf "axom:axom" | chpasswd -adduser axom sudo -printf "axom ALL= NOPASSWD: ALL\\n" >> /etc/sudoers diff --git a/nvidia-ubuntu-16/nvcc-9/Dockerfile b/nvidia-ubuntu-16/nvcc-9/Dockerfile deleted file mode 100644 index d14d5da..0000000 --- a/nvidia-ubuntu-16/nvcc-9/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM nvidia/cuda:9.1-devel-ubuntu16.04 - -LABEL maintainer="David Beckingsale " - -ENV CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-9.1 - -ADD generic-setup.sh /root/generic-setup.sh - -RUN /root/generic-setup.sh - -USER axom -WORKDIR /home/axom diff --git a/nvidia-ubuntu-16/nvcc-9/generic-setup.sh b/nvidia-ubuntu-16/nvcc-9/generic-setup.sh deleted file mode 100755 index 9816d21..0000000 --- a/nvidia-ubuntu-16/nvcc-9/generic-setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -set -e -set -x - -apt-get -qq update -apt-get -qq install -y --no-install-recommends wget - -wget "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x60C317803A41BA51845E371A1E9377A2BA9EF27F" -O out && apt-key add out && rm out -echo deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list -echo deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list - -apt-get -qq update -apt-get -qq install -y --no-install-recommends python-dev build-essential sudo git vim dh-autoreconf ninja-build ca-certificates - -wget -q --no-check-certificate https://cmake.org/files/v3.10/cmake-3.10.1-Linux-x86_64.tar.gz -tar -xzf cmake-3.10.1-Linux-x86_64.tar.gz -cp -fR cmake-3.10.1-Linux-x86_64/* /usr -rm -rf cmake-3.10.1-Linux-x86_64 -rm cmake-3.10.1-Linux-x86_64.tar.gz - -wget -q --no-check-certificate https://bootstrap.pypa.io/get-pip.py -python get-pip.py -rm get-pip.py -pip install -q -U pip - -useradd -ms /bin/bash axom -printf "axom:axom" | chpasswd -adduser axom sudo -printf "axom ALL= NOPASSWD: ALL\\n" >> /etc/sudoers diff --git a/rocm-ubuntu-16/rocm-3/Dockerfile b/rocm-ubuntu-16/rocm-3/Dockerfile deleted file mode 100644 index c83c479..0000000 --- a/rocm-ubuntu-16/rocm-3/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM rocm/dev-ubuntu-16.04:3.5.1 - -LABEL maintainer="David Beckingsale " - -ADD generic-setup.sh /root/generic-setup.sh - -RUN sudo /root/generic-setup.sh - -USER axom -WORKDIR /home/axom diff --git a/rocm-ubuntu-16/rocm-3/generic-setup.sh b/rocm-ubuntu-16/rocm-3/generic-setup.sh deleted file mode 100755 index 1806dcd..0000000 --- a/rocm-ubuntu-16/rocm-3/generic-setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -set -e -set -x - -apt-get -qq update -apt-get -qq install -y --no-install-recommends wget - -wget "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x60C317803A41BA51845E371A1E9377A2BA9EF27F" -O out && apt-key add out && rm out -echo deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list -echo deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list - -apt-get -qq update -apt-get -qq install -y --no-install-recommends python-dev build-essential sudo git vim dh-autoreconf ninja-build ca-certificates - -wget -q --no-check-certificate https://cmake.org/files/v3.16/cmake-3.16.0-Linux-x86_64.tar.gz -tar -xzf cmake-3.16.0-Linux-x86_64.tar.gz -cp -fR cmake-3.16.0-Linux-x86_64/* /usr -rm -rf cmake-3.16.0-Linux-x86_64 -rm cmake-3.16.0-Linux-x86_64.tar.gz - -wget -q --no-check-certificate https://bootstrap.pypa.io/get-pip.py -python get-pip.py -rm get-pip.py -pip install -q -U pip - -useradd -ms /bin/bash axom -printf "axom:axom" | chpasswd -adduser axom sudo -printf "axom ALL= NOPASSWD: ALL\\n" >> /etc/sudoers diff --git a/share/axom/logo/axom_logo.png b/share/axom/logo/axom_logo.png deleted file mode 100644 index c7dd167e1b63ca927300216c051d424877838ace..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37860 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

>UV=D6cl@%uD-XSO@n8bEY5N9@fXimUCb;j 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 diff --git a/ubuntu-16/base/Dockerfile b/ubuntu-16/base/Dockerfile deleted file mode 100644 index 2f84555..0000000 --- a/ubuntu-16/base/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM ubuntu:16.04 - -LABEL maintainer="David Beckingsale " - -ADD generic-setup.sh /root/generic-setup.sh - -RUN /root/generic-setup.sh - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/base/generic-setup.sh b/ubuntu-16/base/generic-setup.sh deleted file mode 100755 index 1388040..0000000 --- a/ubuntu-16/base/generic-setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -set -e -set -x - -apt-get -qq update -apt-get -qq install -y --no-install-recommends wget - -wget "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x60C317803A41BA51845E371A1E9377A2BA9EF27F" -O out && apt-key add out && rm out -echo deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list -echo deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list - -apt-get -qq update -apt-get -qq install -y --no-install-recommends python-dev build-essential sudo git vim dh-autoreconf ninja-build ca-certificates valgrind - -wget -q --no-check-certificate https://cmake.org/files/v3.10/cmake-3.10.1-Linux-x86_64.tar.gz -tar -xzf cmake-3.10.1-Linux-x86_64.tar.gz -cp -fR cmake-3.10.1-Linux-x86_64/* /usr -rm -rf cmake-3.10.1-Linux-x86_64 -rm cmake-3.10.1-Linux-x86_64.tar.gz - -wget -q --no-check-certificate https://bootstrap.pypa.io/get-pip.py -python get-pip.py -rm get-pip.py -pip install -q -U pip - -useradd -ms /bin/bash axom -printf "axom:axom" | chpasswd -adduser axom sudo -printf "axom ALL= NOPASSWD: ALL\\n" >> /etc/sudoers diff --git a/ubuntu-16/clang-4/Dockerfile b/ubuntu-16/clang-4/Dockerfile deleted file mode 100644 index 51cc882..0000000 --- a/ubuntu-16/clang-4/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM axom/compilers:ubuntu-base - -LABEL maintainer="David Beckingsale " - -ENV llvmver=4.0.0 -ENV llvmtar=clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.04 -ENV tarext=.tar.xz - -RUN \ - wget -q --no-check-certificate http://releases.llvm.org/${llvmver}/${llvmtar}${tarext} \ - && tar xf ${llvmtar}${tarext} \ - && sudo cp -fR ${llvmtar}/* /usr \ - && rm -rf ${llvmtar} \ - && rm ${llvmtar}${tarext} - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/clang-5/Dockerfile b/ubuntu-16/clang-5/Dockerfile deleted file mode 100644 index 9d79c2a..0000000 --- a/ubuntu-16/clang-5/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM axom/compilers:ubuntu-base - -LABEL maintainer="David Beckingsale " - -ENV llvmver=5.0.1 -ENV llvmtar=clang+llvm-5.0.1-x86_64-linux-gnu-ubuntu-16.04 -ENV tarext=.tar.xz - -RUN \ - wget -q --no-check-certificate http://releases.llvm.org/${llvmver}/${llvmtar}${tarext} \ - && tar xf ${llvmtar}${tarext} \ - && sudo cp -fR ${llvmtar}/* /usr \ - && rm -rf ${llvmtar} \ - && rm ${llvmtar}${tarext} - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/clang-6/Dockerfile b/ubuntu-16/clang-6/Dockerfile deleted file mode 100644 index 535e5e6..0000000 --- a/ubuntu-16/clang-6/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM axom/compilers:ubuntu-base - -LABEL maintainer="David Beckingsale " - -ENV llvmver=6.0.0 -ENV llvmtar=clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04 -ENV tarext=.tar.xz - -RUN \ - wget -q --no-check-certificate http://releases.llvm.org/${llvmver}/${llvmtar}${tarext} \ - && tar xf ${llvmtar}${tarext} \ - && sudo cp -fR ${llvmtar}/* /usr \ - && rm -rf ${llvmtar} \ - && rm ${llvmtar}${tarext} - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/gcc-4/Dockerfile b/ubuntu-16/gcc-4/Dockerfile deleted file mode 100644 index d656968..0000000 --- a/ubuntu-16/gcc-4/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM axom/compilers:ubuntu-base - -LABEL maintainer="David Beckingsale " - -RUN \ - sudo apt-get -qq install -y --no-install-recommends \ - g++-4.9 \ - && sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 100 \ - && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 100 \ - && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-4.9 100 \ - && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-4.9 100 - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/gcc-5/Dockerfile b/ubuntu-16/gcc-5/Dockerfile deleted file mode 100644 index bff801d..0000000 --- a/ubuntu-16/gcc-5/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM axom/compilers:ubuntu-base - -LABEL maintainer="David Beckingsale " - -RUN \ - sudo apt-get -qq install -y --no-install-recommends \ - g++-5 gfortran-5 \ - && sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100 \ - && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100 \ - && sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-5 100 \ - && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-5 100 \ - && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-5 100 - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/gcc-6/Dockerfile b/ubuntu-16/gcc-6/Dockerfile deleted file mode 100644 index 82218a4..0000000 --- a/ubuntu-16/gcc-6/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM axom/compilers:ubuntu-base - -LABEL maintainer="David Beckingsale " - -RUN \ - sudo apt-get -qq install -y --no-install-recommends \ - g++-6 \ - && sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 100 \ - && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 100 \ - && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-6 100 \ - && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-6 100 - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/gcc-7/Dockerfile b/ubuntu-16/gcc-7/Dockerfile deleted file mode 100644 index 3992504..0000000 --- a/ubuntu-16/gcc-7/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM axom/compilers:ubuntu-base - -LABEL maintainer="David Beckingsale " - -RUN \ - sudo apt-get -qq install -y --no-install-recommends \ - g++-7 \ - && sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100 \ - && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100 \ - && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-7 100 \ - && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-7 100 - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/gcc-8/Dockerfile b/ubuntu-16/gcc-8/Dockerfile deleted file mode 100644 index e11b983..0000000 --- a/ubuntu-16/gcc-8/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM axom/compilers:ubuntu-base - -LABEL maintainer="David Beckingsale " - -RUN \ - sudo apt-get -qq install -y --no-install-recommends \ - g++-8 \ - && sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 \ - && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 \ - && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-8 100 \ - && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-8 100 - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-16/oneapi/Dockerfile b/ubuntu-16/oneapi/Dockerfile deleted file mode 100644 index c5e3d8b..0000000 --- a/ubuntu-16/oneapi/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM axom/compilers:gcc-8 - -LABEL maintainer="David Beckingsale " - -RUN sudo apt-get -qq update \ - && sudo apt-get -qq install -y apt-transport-https ca-certificates \ - && sudo wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB \ - && sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB \ - && echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list \ - && sudo apt-get -qqq update \ - && sudo apt-get install -y intel-oneapi-compiler-fortran intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic - -RUN sudo apt-get -qq install -y lsb-release && sudo apt-get clean all - -COPY entrypoint.sh /usr/local/bin/ - -USER axom -WORKDIR /home/axom - -ENTRYPOINT ["entrypoint.sh"] diff --git a/ubuntu-16/oneapi/entrypoint.sh b/ubuntu-16/oneapi/entrypoint.sh deleted file mode 100755 index 1af7da5..0000000 --- a/ubuntu-16/oneapi/entrypoint.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -e - -source /opt/intel/oneapi/setvars.sh -exec "$@" - diff --git a/ubuntu-16/oneapi/generic-setup.sh b/ubuntu-16/oneapi/generic-setup.sh deleted file mode 100755 index 40cf286..0000000 --- a/ubuntu-16/oneapi/generic-setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -set -e -set -x - -apt-get -qq update -apt-get -qq install -y --no-install-recommends wget - -wget "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x60C317803A41BA51845E371A1E9377A2BA9EF27F" -O out && apt-key add out && rm out -echo deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list -echo deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main >> /etc/apt/sources.list - -apt-get -qq update -apt-get -qq install -y --no-install-recommends python-dev build-essential sudo git vim dh-autoreconf ninja-build ca-certificates valgrind && apt-get -qq autoremove -y && apt-get -qq clean -y && rm -rf /var/lib/apt/lists/* - -wget -q --no-check-certificate https://cmake.org/files/v3.10/cmake-3.10.1-Linux-x86_64.tar.gz -tar -xzf cmake-3.10.1-Linux-x86_64.tar.gz -cp -fR cmake-3.10.1-Linux-x86_64/* /usr -rm -rf cmake-3.10.1-Linux-x86_64 -rm cmake-3.10.1-Linux-x86_64.tar.gz - -wget -q --no-check-certificate https://bootstrap.pypa.io/get-pip.py -python get-pip.py -rm get-pip.py -pip install -q -U pip - -useradd -ms /bin/bash axom -printf "axom:axom" | chpasswd -adduser axom sudo -printf "axom ALL= NOPASSWD: ALL\\n" >> /etc/sudoers diff --git a/ubuntu-18/base/Dockerfile b/ubuntu-18/base/Dockerfile deleted file mode 100644 index ee97e49..0000000 --- a/ubuntu-18/base/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM ubuntu:18.04 - -LABEL maintainer="Josh Essman " - -ADD generic-setup.sh /root/generic-setup.sh - -RUN /root/generic-setup.sh - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-18/base/generic-setup.sh b/ubuntu-18/base/generic-setup.sh deleted file mode 100755 index e39adca..0000000 --- a/ubuntu-18/base/generic-setup.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -set -e -set -x - -apt-get -qq update -apt-get -qq install -y --no-install-recommends wget python3-dev python3-pip build-essential sudo git vim dh-autoreconf ninja-build ca-certificates valgrind - -wget -q --no-check-certificate https://cmake.org/files/v3.18/cmake-3.18.0-Linux-x86_64.tar.gz -tar -xzf cmake-3.18.0-Linux-x86_64.tar.gz -rm -r cmake-3.18.0-Linux-x86_64/share/vim/vimfiles -cp -fR cmake-3.18.0-Linux-x86_64/* /usr -rm -rf cmake-3.18.0-Linux-x86_64 -rm cmake-3.18.0-Linux-x86_64.tar.gz - -useradd -ms /bin/bash axom -printf "axom:axom" | chpasswd -adduser axom sudo -printf "axom ALL= NOPASSWD: ALL\\n" >> /etc/sudoers diff --git a/ubuntu-18/clang-10/Dockerfile b/ubuntu-18/clang-10/Dockerfile deleted file mode 100644 index e64cd95..0000000 --- a/ubuntu-18/clang-10/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM axom/compilers:ubuntu-18-base - -LABEL maintainer="Josh Essman " - -ENV llvmver=10.0.0 -ENV llvmtar=clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04 -ENV tarext=.tar.xz - -RUN \ - wget -q --no-check-certificate https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvmver}/${llvmtar}${tarext} \ - && tar xf ${llvmtar}${tarext} \ - && sudo cp -fR ${llvmtar}/* /usr \ - && rm -rf ${llvmtar} \ - && rm ${llvmtar}${tarext} - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-20/base/Dockerfile b/ubuntu-20/base/Dockerfile deleted file mode 100644 index b2d0a49..0000000 --- a/ubuntu-20/base/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM ubuntu:20.04 - -LABEL maintainer="Chris White " - -ADD generic-setup.sh /root/generic-setup.sh - -RUN /root/generic-setup.sh - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-20/base/generic-setup.sh b/ubuntu-20/base/generic-setup.sh deleted file mode 100755 index d745525..0000000 --- a/ubuntu-20/base/generic-setup.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -set -e -set -x - -apt-get -qq update -# Needs to be noninteractive -DEBIAN_FRONTEND="noninteractive" TZ="America/Los_Angeles" apt-get -qq install -fy tzdata -apt-get -qq install -fy --no-install-recommends build-essential ca-certificates curl dh-autoreconf git lcov ninja-build pkg-config python3-dev python3-pip sudo vim wget xsltproc - -# Install Clingo for Spack -python3 -m pip install --upgrade pip -python3 -m pip install clingo - -wget -q --no-check-certificate https://cmake.org/files/v3.18/cmake-3.18.6-Linux-x86_64.tar.gz -tar -xzf cmake-3.18.6-Linux-x86_64.tar.gz -rm -r cmake-3.18.6-Linux-x86_64/share/vim/vimfiles -cp -fR cmake-3.18.6-Linux-x86_64/* /usr -rm -rf cmake-3.18.6-Linux-x86_64 -rm cmake-3.18.6-Linux-x86_64.tar.gz - -useradd -ms /bin/bash axom -printf "axom:axom" | chpasswd -adduser axom sudo -printf "axom ALL= NOPASSWD: ALL\\n" >> /etc/sudoers diff --git a/ubuntu-20/clang-10/Dockerfile b/ubuntu-20/clang-10/Dockerfile deleted file mode 100644 index 9265410..0000000 --- a/ubuntu-20/clang-10/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM axom/compilers:ubuntu-20-base_latest - -LABEL maintainer="Josh Essman " - -RUN \ - sudo apt-get -qq install -y --no-install-recommends \ - clang-10 clang-format-10 llvm-10 \ - && sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-10 100 \ - && sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 100 \ - && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang-10 100 \ - && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-10 100 \ - && sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-10 100 \ - && sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-10 100 -USER axom -WORKDIR /home/axom diff --git a/ubuntu-20/gcc-8/Dockerfile b/ubuntu-20/gcc-8/Dockerfile deleted file mode 100644 index 91f01c9..0000000 --- a/ubuntu-20/gcc-8/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM axom/compilers:ubuntu-20-base_latest - -LABEL maintainer="Josh Essman " - -RUN \ - sudo apt-get -qq install -y --no-install-recommends \ - g++-8 \ - && sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 \ - && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 \ - && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-8 100 \ - && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-8 100 - -USER axom -WORKDIR /home/axom diff --git a/ubuntu-20/gcc-9/Dockerfile b/ubuntu-20/gcc-9/Dockerfile deleted file mode 100644 index 8e1cd91..0000000 --- a/ubuntu-20/gcc-9/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM axom/compilers:ubuntu-20-base_latest - -LABEL maintainer="Josh Essman " - -RUN \ - sudo apt-get -qq install -y --no-install-recommends \ - g++-9 \ - && sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100 \ - && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100 \ - && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-9 100 \ - && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-9 100 - -USER axom -WORKDIR /home/axom diff --git a/ubuntu/16.04/Dockerfile b/ubuntu/16.04/Dockerfile new file mode 100644 index 0000000..ed3a5ec --- /dev/null +++ b/ubuntu/16.04/Dockerfile @@ -0,0 +1,28 @@ +FROM ubuntu:16.04 + +# docker build -t ghcr.io/llnl/radiuss-docker/ubuntu: . + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=America/Los_Angeles + +LABEL maintainer="David Beckingsale ,@vsoch" + +RUN apt-get -qq update && \ + apt-get -qq install -y --no-install-recommends wget \ + python-dev \ + python3-pip \ + build-essential \ + sudo \ + git \ + vim \ + dh-autoreconf \ + ninja-build \ + ca-certificates \ + valgrind + +# install updated Cmake for this platform +RUN wget -q --no-check-certificate https://cmake.org/files/v3.10/cmake-3.10.1-Linux-x86_64.tar.gz && \ + tar -xzf cmake-3.10.1-Linux-x86_64.tar.gz && \ + cp -fR cmake-3.10.1-Linux-x86_64/* /usr && \ + rm -rf cmake-3.10.1-Linux-x86_64 && \ + rm cmake-3.10.1-Linux-x86_64.tar.gz diff --git a/ubuntu/18.04/Dockerfile b/ubuntu/18.04/Dockerfile new file mode 100644 index 0000000..f79a764 --- /dev/null +++ b/ubuntu/18.04/Dockerfile @@ -0,0 +1,28 @@ +FROM ubuntu:18.04 + +LABEL maintainer="Josh Essman , @vsoch" + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=America/Los_Angeles + +RUN apt-get -qq update && \ + apt-get -qq install -y --no-install-recommends \ + wget \ + python3-dev \ + python3-pip \ + build-essential \ + sudo \ + git \ + vim \ + dh-autoreconf \ + ninja-build \ + ca-certificates \ + valgrind + +# Install cmake 3.18 +RUN wget -q --no-check-certificate https://cmake.org/files/v3.18/cmake-3.18.0-Linux-x86_64.tar.gz && \ + tar -xzf cmake-3.18.0-Linux-x86_64.tar.gz && \ + rm -r cmake-3.18.0-Linux-x86_64/share/vim/vimfiles && \ + cp -fR cmake-3.18.0-Linux-x86_64/* /usr && \ + rm -rf cmake-3.18.0-Linux-x86_64 && \ + rm cmake-3.18.0-Linux-x86_64.tar.gz diff --git a/ubuntu/20.04/Dockerfile b/ubuntu/20.04/Dockerfile new file mode 100644 index 0000000..92dc294 --- /dev/null +++ b/ubuntu/20.04/Dockerfile @@ -0,0 +1,36 @@ +FROM ubuntu:20.04 + +LABEL maintainer="Chris White ,@vsoch" + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=America/Los_Angeles + +RUN apt-get -qq update && \ + apt-get -qq install -fy tzdata && \ + apt-get -qq install -fy --no-install-recommends \ + build-essential \ + ca-certificates \ + curl \ + dh-autoreconf \ + git \ + lcov \ + ninja-build \ + pkg-config \ + python3-dev \ + python3-pip \ + sudo \ + vim \ + wget \ + xsltproc + +# Install Clingo for Spack +RUN python3 -m pip install --upgrade pip && \ + python3 -m pip install clingo + +# Install cmake +RUN wget -q --no-check-certificate https://cmake.org/files/v3.18/cmake-3.18.6-Linux-x86_64.tar.gz && \ + tar -xzf cmake-3.18.6-Linux-x86_64.tar.gz + rm -r cmake-3.18.6-Linux-x86_64/share/vim/vimfiles + cp -fR cmake-3.18.6-Linux-x86_64/* /usr + rm -rf cmake-3.18.6-Linux-x86_64 + rm cmake-3.18.6-Linux-x86_64.tar.gz