Update Julia to 1.6.2 and switched to Alpine base image

This commit is contained in:
MillironX 2021-08-09 11:30:40 -05:00
parent a0377be27a
commit 6763d3254e
Signed by: millironx
GPG key ID: 139C07724802BC5D

View file

@ -1,77 +1,64 @@
Bootstrap: library Bootstrap: library
From: default/debian:10 From: default/alpine:3.14.0
%post %post
# Copied from https://github.com/docker-library/julia/blob/master/1.6/buster/Dockerfile # Install dependencies
apt-get -y update apk add --no-cache bash
apt-get install -y --no-install-recommends \ apd add --no-cache --virtual .build-deps gpg curl
ca-certificates \
curl \
procps
rm -rf /var/lib/apt/lists/*
# Make our lives easier by declaring some constants
export JULIA_GPG="3673DF529D9049477F76B37566E3C7DC03D6E495" export JULIA_GPG="3673DF529D9049477F76B37566E3C7DC03D6E495"
export JULIA_VERSION="1.6.1" export JULIA_VERSION="1.6.2"
export JULIA_PATH=/usr/local/julia export JULIA_PATH=/usr/local/julia
export PATH=$JULIA_PATH/bin:$PATH export PATH=$JULIA_PATH/bin:$PATH
savedAptMark="$(apt-mark showmanual)"
if ! command -v gpg > /dev/null; then
apt-get update
apt-get install -y --no-install-recommends \
gnupg \
dirmngr
rm -rf /var/lib/apt/lists/*
fi
export tarArch='x86_64' export tarArch='x86_64'
export dirArch='x64' export dirArch='x64'
export sha256='7c888adec3ea42afbfed2ce756ce1164a570d50fa7506c3f2e1e2cbc49d52506' export sha256='5ff279bc733a99a9582fd9b39eb3d18a3fa77b9d3d2733039279a250c8c5d49c'
# Download Julia
export folder="$(echo "$JULIA_VERSION" | cut -d. -f1-2)" export folder="$(echo "$JULIA_VERSION" | cut -d. -f1-2)"
curl -fL -o julia.tar.gz.asc "https://julialang-s3.julialang.org/bin/linux/${dirArch}/${folder}/julia-${JULIA_VERSION}-linux-${tarArch}.tar.gz.asc" curl -fL -o julia.tar.gz.asc "https://julialang-s3.julialang.org/bin/musl/${dirArch}/${folder}/julia-${JULIA_VERSION}-linux-${tarArch}.tar.gz.asc"
curl -fL -o julia.tar.gz "https://julialang-s3.julialang.org/bin/linux/${dirArch}/${folder}/julia-${JULIA_VERSION}-linux-${tarArch}.tar.gz" curl -fL -o julia.tar.gz "https://julialang-s3.julialang.org/bin/musl/${dirArch}/${folder}/julia-${JULIA_VERSION}-linux-${tarArch}.tar.gz"
# Security check step 1: verify via sha256
echo "${sha256} *julia.tar.gz" | sha256sum -c - echo "${sha256} *julia.tar.gz" | sha256sum -c -
# Security check step 2: verify via GPG
export GNUPGHOME="$(mktemp -d)" export GNUPGHOME="$(mktemp -d)"
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$JULIA_GPG" gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$JULIA_GPG"
gpg --batch --verify julia.tar.gz.asc julia.tar.gz gpg --batch --verify julia.tar.gz.asc julia.tar.gz
command -v gpgconf > /dev/null && gpgconf --kill all command -v gpgconf > /dev/null && gpgconf --kill all
rm -rf "$GNUPGHOME" julia.tar.gz.asc rm -rf "$GNUPGHOME" julia.tar.gz.asc
# Extract Julia
mkdir "$JULIA_PATH" mkdir "$JULIA_PATH"
tar -xzf julia.tar.gz -C "$JULIA_PATH" --strip-components 1 tar -xzf julia.tar.gz -C "$JULIA_PATH" --strip-components 1
rm julia.tar.gz rm julia.tar.gz
apt-mark auto '.*' > /dev/null # Cleanup build dependencies
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark apk del --no-cache .build-deps
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
%environment %environment
export JULIA_PATH=/usr/local/julia export JULIA_PATH=/usr/local/julia
export PATH=$JULIA_PATH/bin:$PATH export PATH=$JULIA_PATH/bin:$PATH
%test %test
if [ ! "$(command -v julia)" ]; then cat << "EOF" > /tmp/singularity-test.sh
echo "command julia not found!" #!/bin/bash
FAILED_TESTS="TRUE" CMDS=('bash' 'ps' 'julia')
for CMD in "${CMDS[@]}"; do
if ! command -v "$CMD"; then
echo "command $CMD not found!"
FAILED_TESTS=1
fi fi
done
if [ ! "$(command -v bash)" ]; then # Abort if a test failed
echo "command bash not found!"
FAILED_TESTS="TRUE"
fi
if [ ! "$(command -v ps)" ]; then
echo "command ps not found!"
FAILED_TESTS="TRUE"
fi
if [ -n "$FAILED_TESTS" ]; then if [ -n "$FAILED_TESTS" ]; then
exit 1 exit 1
fi fi
EOF
chmod +x /tmp/singularity-test.sh
bash /tmp/singularity-test.sh
%runscript %runscript
@ -79,4 +66,20 @@ From: default/debian:10
%labels %labels
Author 25492070+MillironX@users.noreply.github.com Author 25492070+MillironX@users.noreply.github.com
Version v2.3.1 SoftwareVersion v1.6.2
SingularityDefinitionVersion 1
%help
Julia
=====
Julia is a high-level dynamic programming language designed to address the
needs of high-performance numerical analysis and computational science. It
provides a sophisticated compiler, distributed parallel execution, numerical
accuracy, and an extensive mathematical function library.
Source: GitHub (<https://github.com/topics/julia>)
For more help, see
- <https://julialang.org>
- <https://github.com/JuliaLang/julia>
- <https://github.com/MillironX/singularity-builds>