From fe23ebfec16ac709df0c112489c0ef39b10185a9 Mon Sep 17 00:00:00 2001 From: Mikhail Koliada <88318005+mikhailkoliada@users.noreply.github.com> Date: Sat, 4 Mar 2023 18:12:02 +0100 Subject: [PATCH] [Ubuntu] rework erlang installation (workaround hashes) (#7234) --- .../SoftwareReport.Generator.ps1 | 2 +- images/linux/scripts/installers/erlang.sh | 20 ++++++++++++++++++- images/linux/scripts/tests/Tools.Tests.ps1 | 2 +- images/linux/ubuntu1804.json | 1 + 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 index 7d44e685c..ac7c8daa6 100644 --- a/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 +++ b/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 @@ -40,7 +40,7 @@ $languageAndRuntime.AddToolVersionsListInline("Clang", $(Get-ClangToolVersions - $languageAndRuntime.AddToolVersionsListInline("Clang-format", $(Get-ClangToolVersions -ToolName "clang-format"), "^\d+") $languageAndRuntime.AddToolVersionsListInline("Clang-tidy", $(Get-ClangTidyVersions), "^\d+") $languageAndRuntime.AddToolVersion("Dash", $(Get-DashVersion)) -if (Test-IsUbuntu20) { +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { $languageAndRuntime.AddToolVersion("Erlang", $(Get-ErlangVersion)) $languageAndRuntime.AddToolVersion("Erlang rebar3", $(Get-ErlangRebar3Version)) } diff --git a/images/linux/scripts/installers/erlang.sh b/images/linux/scripts/installers/erlang.sh index 6aaa4a86b..debf64e9b 100644 --- a/images/linux/scripts/installers/erlang.sh +++ b/images/linux/scripts/installers/erlang.sh @@ -6,6 +6,7 @@ # Source the helpers for use with the script source $HELPER_SCRIPTS/install.sh +source $HELPER_SCRIPTS/os.sh source_list=/etc/apt/sources.list.d/eslerlang.list source_key=/usr/share/keyrings/eslerlang.gpg @@ -14,7 +15,24 @@ source_key=/usr/share/keyrings/eslerlang.gpg wget -q -O - https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | gpg --dearmor > $source_key echo "deb [signed-by=$source_key] https://packages.erlang-solutions.com/ubuntu $(lsb_release -cs) contrib" > $source_list apt-get update -apt-get install -y --no-install-recommends esl-erlang + + +apt-get install --no-install-recommends esl-erlang || true + +# Downoloading and installing a deb file manually, ignore deptree errors +if isUbuntu18; then + esl_url="https://packages.erlang-solutions.com/ubuntu/pool/esl-erlang_25.2.3-1~ubuntu~bionic_amd64.deb" + download_with_retries $esl_url "/tmp" + dpkg -i /tmp/esl-erlang_25.2.3-1~ubuntu~bionic_amd64.deb || true +else + esl_url="https://packages.erlang-solutions.com/ubuntu/pool/esl-erlang_25.2.3-2~ubuntu~focal_amd64.deb" + download_with_retries $esl_url "/tmp" + dpkg -i /tmp/esl-erlang_25.2.3-2~ubuntu~focal_amd64.deb || true +fi + +# Restore a proper deptree which brings esl-erlang back in the loop +# but eleminate unwanted X.org dependencies +apt --no-install-recommends --fix-broken install # Install rebar3 rebar3_url="https://github.com/erlang/rebar3/releases/latest/download/rebar3" diff --git a/images/linux/scripts/tests/Tools.Tests.ps1 b/images/linux/scripts/tests/Tools.Tests.ps1 index c5eaf4795..b5102b5e0 100644 --- a/images/linux/scripts/tests/Tools.Tests.ps1 +++ b/images/linux/scripts/tests/Tools.Tests.ps1 @@ -132,7 +132,7 @@ Describe "Cmake" { } } -Describe "erlang" -Skip:((Test-IsUbuntu22) -or (Test-IsUbuntu18)) { +Describe "erlang" -Skip:(Test-IsUbuntu22) { $testCases = @("erl -version", "erlc -v", "rebar3 -v") | ForEach-Object { @{ErlangCommand = $_} } It "erlang " -TestCases $testCases { diff --git a/images/linux/ubuntu1804.json b/images/linux/ubuntu1804.json index 74c4c47dc..a1001f08c 100644 --- a/images/linux/ubuntu1804.json +++ b/images/linux/ubuntu1804.json @@ -206,6 +206,7 @@ "{{template_dir}}/scripts/installers/codeql-bundle.sh", "{{template_dir}}/scripts/installers/containers.sh", "{{template_dir}}/scripts/installers/dotnetcore-sdk.sh", + "{{template_dir}}/scripts/installers/erlang.sh", "{{template_dir}}/scripts/installers/firefox.sh", "{{template_dir}}/scripts/installers/microsoft-edge.sh", "{{template_dir}}/scripts/installers/gcc.sh",