Merge pull request #369 from akv-platform/v-ivnosa/add-gcc-gfort-clang

Add `gcc`, `gfortran` and `clang` on Windows and Ubuntu images
This commit is contained in:
Alejandro Pauly
2020-02-10 08:02:44 -05:00
committed by GitHub
5 changed files with 116 additions and 28 deletions

View File

@@ -1,31 +1,61 @@
#!/bin/bash #!/bin/bash
################################################################################ ################################################################################
## File: example.sh ## File: clang.sh
## Desc: This is an example script that can be copied to add a new software ## Desc: Installs Clang compiler (versions: 6, 8 and 9)
## installer to the image
################################################################################ ################################################################################
# Source the helpers for use with the script # Source the helpers for use with the script
source $HELPER_SCRIPTS/document.sh source $HELPER_SCRIPTS/document.sh
source $HELPER_SCRIPTS/apt.sh source $HELPER_SCRIPTS/apt.sh
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - function InstallClang {
apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-6.0 main" version=$1
apt-get update
apt-get install -y clang-6.0 lldb-6.0 lld-6.0
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-6.0 100 echo "Installing clang-$version..."
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 100 # Clang 6.0 is not supported by automatic installation script (`llvm.sh`)
# Thus we have to install it explicitly
if [[ $version == 6* ]]; then
apt-get install -y "clang-$version" "lldb-$version" "lld-$version"
else
./llvm.sh $version
fi
# Run tests to determine that the software installed as expected # Run tests to determine that the software installed as expected
echo "Testing to make sure that script performed as expected, and basic scenarios work" echo "Testing to make sure that script performed as expected, and basic scenarios work"
for cmd in clang clang++ clang-6.0 clang++-6.0; do for cmd in clang-$version clang++-$version; do
if ! command -v $cmd; then if ! command -v $cmd; then
echo "$cmd was not installed" echo "$cmd was not installed"
exit 1 exit 1
fi fi
done
# Document what was added to the image
echo "Documenting clang-$version..."
DocumentInstalledItem "Clang $version ($(clang-$version --version | head -n 1 | cut -d ' ' -f 3 | cut -d '-' -f 1))"
}
# Install Clang compiler
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-6.0 main"
apt-get update -y
# Download script for automatic installation
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
versions=(
"6.0"
"8"
"9"
)
for version in ${versions[*]}
do
InstallClang $version
done done
# Document what was added to the image rm llvm.sh
echo "Lastly, documenting what we added to the metadata file"
DocumentInstalledItem "Clang 6.0 ($(clang-6.0 --version | head -n 1 | sed 's/~/\\~/g'))" # Make Clang 9 default
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-9 100
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 100

View File

@@ -7,19 +7,35 @@
# Source the helpers for use with the script # Source the helpers for use with the script
source $HELPER_SCRIPTS/document.sh source $HELPER_SCRIPTS/document.sh
function InstallGcc {
version=$1
echo "Installing $version..."
apt-get install $version -y
# Run tests to determine that the software installed as expected
echo "Testing to make sure that script performed as expected, and basic scenarios work"
if ! command -v $version; then
echo "$version was not installed"
exit 1
fi
# Document what was added to the image
echo "Documenting $version..."
DocumentInstalledItem "GNU C++ $($version --version | head -n 1 | cut -d ' ' -f 4)"
}
# Install GNU C++ compiler # Install GNU C++ compiler
add-apt-repository ppa:ubuntu-toolchain-r/test -y add-apt-repository ppa:ubuntu-toolchain-r/test -y
apt-get update -y apt-get update -y
apt-get install g++-7 -y
versions=(
"g++-7"
"g++-8"
"g++-9"
)
# Run tests to determine that the software installed as expected for version in ${versions[*]}
echo "Testing to make sure that script performed as expected, and basic scenarios work" do
if ! command -v g++-7; then InstallGcc $version
echo "GNU C++ was not installed" done
exit 1
fi
# Document what was added to the image
echo "Lastly, documenting what we added to the metadata file"
DocumentInstalledItem "GNU C++ $(g++-7 --version | head -n 1 | cut -d ' ' -f 4)"

View File

@@ -0,0 +1,40 @@
#!/bin/bash
################################################################################
## File: gfortran.sh
## Desc: Installs GNU Fortran
################################################################################
# Source the helpers for use with the script
source $HELPER_SCRIPTS/document.sh
function InstallFortran {
version=$1
echo "Installing $version..."
apt-get install $version -y
# Run tests to determine that the software installed as expected
echo "Testing to make sure that script performed as expected, and basic scenarios work"
if ! command -v $version; then
echo "$version was not installed"
exit 1
fi
# Document what was added to the image
echo "Documenting $version..."
DocumentInstalledItem "GNU Fortran $($version --version | head -n 1 | cut -d ' ' -f 5)"
}
# Install GNU Fortran compiler
add-apt-repository ppa:ubuntu-toolchain-r/test -y
apt-get update -y
versions=(
"gfortran-8"
"gfortran-9"
)
for version in ${versions[*]}
do
InstallFortran $version
done

View File

@@ -133,6 +133,7 @@
"{{template_dir}}/scripts/installers/erlang.sh", "{{template_dir}}/scripts/installers/erlang.sh",
"{{template_dir}}/scripts/installers/firefox.sh", "{{template_dir}}/scripts/installers/firefox.sh",
"{{template_dir}}/scripts/installers/gcc.sh", "{{template_dir}}/scripts/installers/gcc.sh",
"{{template_dir}}/scripts/installers/gfortran.sh",
"{{template_dir}}/scripts/installers/git.sh", "{{template_dir}}/scripts/installers/git.sh",
"{{template_dir}}/scripts/installers/1604/go.sh", "{{template_dir}}/scripts/installers/1604/go.sh",
"{{template_dir}}/scripts/installers/google-chrome.sh", "{{template_dir}}/scripts/installers/google-chrome.sh",

View File

@@ -136,6 +136,7 @@
"{{template_dir}}/scripts/installers/erlang.sh", "{{template_dir}}/scripts/installers/erlang.sh",
"{{template_dir}}/scripts/installers/firefox.sh", "{{template_dir}}/scripts/installers/firefox.sh",
"{{template_dir}}/scripts/installers/gcc.sh", "{{template_dir}}/scripts/installers/gcc.sh",
"{{template_dir}}/scripts/installers/gfortran.sh",
"{{template_dir}}/scripts/installers/git.sh", "{{template_dir}}/scripts/installers/git.sh",
"{{template_dir}}/scripts/installers/1804/go.sh", "{{template_dir}}/scripts/installers/1804/go.sh",
"{{template_dir}}/scripts/installers/google-chrome.sh", "{{template_dir}}/scripts/installers/google-chrome.sh",