From ee0fa0b6724aec2545a766b501b10afaae3ebebb Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Mon, 12 Sep 2022 16:35:29 +0200 Subject: [PATCH] Update for latest Gleam (#138) * Update for latest Gleam - Gleam releases now use LLVM triplets for platforms so the download URLs have been updated accordingly. - Gleam's rebar3 support has been removed. This change means that future versions of this action cannot download older versions of Gleam. I can make it backwards compatible, but I will need help from someone who can convert the shell script into PowerShell for Windows. * Support older Gleam versions * Remove rebar from Gleam --- .github/workflows/ubuntu.yml | 21 ++++++++-------- .github/workflows/windows.yml | 9 ++----- README.md | 4 ++-- dist/install-gleam.ps1 | 2 +- dist/install-gleam.sh | 19 +++++++++++++-- src/install-gleam.ps1 | 2 +- src/install-gleam.sh | 19 +++++++++++++-- .../gleam_gleam/.github/workflows/test.yml | 2 +- test-projects/gleam_gleam/manifest.toml | 4 ++-- .../gleam_rebar3/.github/workflows/test.yml | 23 ------------------ test-projects/gleam_rebar3/.gitignore | 21 ---------------- test-projects/gleam_rebar3/README.md | 24 ------------------- test-projects/gleam_rebar3/gleam.toml | 3 --- test-projects/gleam_rebar3/rebar.config | 12 ---------- .../gleam_rebar3/src/gleam_rebar3.app.src | 15 ------------ .../gleam_rebar3/src/gleam_rebar3.gleam | 3 --- .../gleam_rebar3/test/gleam_rebar3_test.gleam | 7 ------ 17 files changed, 53 insertions(+), 137 deletions(-) delete mode 100644 test-projects/gleam_rebar3/.github/workflows/test.yml delete mode 100644 test-projects/gleam_rebar3/.gitignore delete mode 100644 test-projects/gleam_rebar3/README.md delete mode 100644 test-projects/gleam_rebar3/gleam.toml delete mode 100644 test-projects/gleam_rebar3/rebar.config delete mode 100644 test-projects/gleam_rebar3/src/gleam_rebar3.app.src delete mode 100644 test-projects/gleam_rebar3/src/gleam_rebar3.gleam delete mode 100644 test-projects/gleam_rebar3/test/gleam_rebar3_test.gleam diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 477d155..0bb3eea 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -116,16 +116,20 @@ jobs: - elixir-version: 'master' otp-version: '25' os: 'ubuntu-20.04' - - gleam-version: '0.16' + - gleam-version: 'nightly' otp-version: '24' - rebar3-version: '3.16' - os: 'ubuntu-latest' - - gleam-version: '0.19.0-rc3' + - gleam-version: '0.23' otp-version: '24' os: 'ubuntu-latest' - - gleam-version: '0.19.0-rc3' + - gleam-version: '0.23.0-rc1' + otp-version: '24' + os: 'ubuntu-latest' + - gleam-version: '0.23.0-rc1' otp-version: false os: 'ubuntu-latest' + - gleam-version: '0.22.0' # Version with Gleam's old archive naming convention + otp-version: '24' + os: 'ubuntu-latest' steps: - uses: actions/checkout@v2 - name: Use erlef/setup-beam @@ -166,11 +170,6 @@ jobs: cd test-projects/erlang_rebar3 rebar3 ct if: ${{matrix.combo.rebar3-version}} - - name: Run Gleam/rebar3 project tests - run: | - cd test-projects/gleam_rebar3 - rebar3 eunit - if: ${{matrix.combo.gleam-version}} - name: Type check Gleam project (without installing Erlang/OTP) run: | cd test-projects/gleam_gleam @@ -190,7 +189,7 @@ jobs: combo: - otp-version: '24' elixir-version: 'v1.12' - gleam-version: '0.19' + gleam-version: '0.23.0-rc1' rebar3-version: 'nightly' os: 'ubuntu-latest' steps: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 13290c6..4923bc7 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -41,7 +41,7 @@ jobs: otp-version: '24' rebar3-version: '3.15' os: 'windows-latest' - - gleam-version: '0.16' + - gleam-version: '0.23.0-rc1' otp-version: '24' rebar3-version: '3.16' os: 'windows-latest' @@ -82,11 +82,6 @@ jobs: cd test-projects/erlang_rebar3 rebar3 ct if: ${{matrix.combo.rebar3-version}} - - name: Run Gleam/rebar3 project tests - run: | - cd test-projects/gleam_rebar3 - rebar3 eunit - if: ${{matrix.combo.gleam-version}} environment_variables: name: Environment variables runs-on: ${{matrix.combo.os}} @@ -96,7 +91,7 @@ jobs: combo: - otp-version: '24' elixir-version: 'v1.12' - gleam-version: '0.19' + gleam-version: '0.23.0-rc1' rebar3-version: 'nightly' os: 'windows-latest' steps: diff --git a/README.md b/README.md index 2b98a16..b60c0ee 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ jobs: - uses: erlef/setup-beam@v1 with: otp-version: '24' - gleam-version: '0.19.0-rc3' + gleam-version: '0.23.0-rc1' - run: gleam test ``` @@ -183,7 +183,7 @@ jobs: - uses: erlef/setup-beam@v1 with: otp-version: false - gleam-version: '0.19.0-rc3' + gleam-version: '0.23.0-rc1' - run: gleam check ``` diff --git a/dist/install-gleam.ps1 b/dist/install-gleam.ps1 index 286f25f..8aa49e8 100644 --- a/dist/install-gleam.ps1 +++ b/dist/install-gleam.ps1 @@ -4,7 +4,7 @@ $ErrorActionPreference="Stop" Set-Location ${Env:RUNNER_TEMP} -$FILE_INPUT="gleam-${VSN}-windows-64bit.zip" +$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip" $FILE_OUTPUT="gleam.zip" $DIR_FOR_BIN=".setup-beam/gleam" diff --git a/dist/install-gleam.sh b/dist/install-gleam.sh index badd6f8..d569426 100755 --- a/dist/install-gleam.sh +++ b/dist/install-gleam.sh @@ -4,11 +4,26 @@ set -eo pipefail cd "${RUNNER_TEMP}" -VSN=${1} -FILE_INPUT=gleam-${VSN}-linux-amd64.tar.gz +VSN="$1" FILE_OUTPUT=gleam.tar.gz DIR_FOR_BIN=.setup-beam/gleam +version_gt() { + test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" +} + +uses_llvm_triplets() { + local version="$1" + test "$version" = "nightly" || version_gt "$version" "v0.22.1" +} + +if uses_llvm_triplets "$VSN" +then + FILE_INPUT="gleam-${VSN}-x86_64-unknown-linux-musl.tar.gz" +else + FILE_INPUT="gleam-${VSN}-linux-amd64.tar.gz" +fi + wget -q -O "${FILE_OUTPUT}" "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" mkdir -p "${DIR_FOR_BIN}/bin" tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}/bin" diff --git a/src/install-gleam.ps1 b/src/install-gleam.ps1 index 286f25f..8aa49e8 100644 --- a/src/install-gleam.ps1 +++ b/src/install-gleam.ps1 @@ -4,7 +4,7 @@ $ErrorActionPreference="Stop" Set-Location ${Env:RUNNER_TEMP} -$FILE_INPUT="gleam-${VSN}-windows-64bit.zip" +$FILE_INPUT="gleam-${VSN}-x86_64-pc-windows-msvc.zip" $FILE_OUTPUT="gleam.zip" $DIR_FOR_BIN=".setup-beam/gleam" diff --git a/src/install-gleam.sh b/src/install-gleam.sh index badd6f8..d569426 100755 --- a/src/install-gleam.sh +++ b/src/install-gleam.sh @@ -4,11 +4,26 @@ set -eo pipefail cd "${RUNNER_TEMP}" -VSN=${1} -FILE_INPUT=gleam-${VSN}-linux-amd64.tar.gz +VSN="$1" FILE_OUTPUT=gleam.tar.gz DIR_FOR_BIN=.setup-beam/gleam +version_gt() { + test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" +} + +uses_llvm_triplets() { + local version="$1" + test "$version" = "nightly" || version_gt "$version" "v0.22.1" +} + +if uses_llvm_triplets "$VSN" +then + FILE_INPUT="gleam-${VSN}-x86_64-unknown-linux-musl.tar.gz" +else + FILE_INPUT="gleam-${VSN}-linux-amd64.tar.gz" +fi + wget -q -O "${FILE_OUTPUT}" "https://github.com/gleam-lang/gleam/releases/download/${VSN}/${FILE_INPUT}" mkdir -p "${DIR_FOR_BIN}/bin" tar zxf "${FILE_OUTPUT}" -C "${DIR_FOR_BIN}/bin" diff --git a/test-projects/gleam_gleam/.github/workflows/test.yml b/test-projects/gleam_gleam/.github/workflows/test.yml index c6cd33b..c27bc16 100644 --- a/test-projects/gleam_gleam/.github/workflows/test.yml +++ b/test-projects/gleam_gleam/.github/workflows/test.yml @@ -15,7 +15,7 @@ jobs: - uses: erlef/setup-beam@v1.9.0 with: otp-version: "23.2" - gleam-version: "0.19.0-rc3" + gleam-version: "0.23.0-rc1" - run: gleam format --check src test - run: gleam deps download - run: gleam test diff --git a/test-projects/gleam_gleam/manifest.toml b/test-projects/gleam_gleam/manifest.toml index 3a8af1d..f64f41e 100644 --- a/test-projects/gleam_gleam/manifest.toml +++ b/test-projects/gleam_gleam/manifest.toml @@ -2,8 +2,8 @@ # You typically do not need to edit this file packages = [ - { name = "gleam_stdlib", version = "0.19.2", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "FFA79EA12369F122B68885E694E097D6810402A2F86BFF48AAE9E40ACE654F4C" }, - { name = "gleeunit", version = "0.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "77701A5E5A565727E1EEAC9196FB878D544049B6331CD0305B5A69699135EA1C" }, + { name = "gleam_stdlib", version = "0.22.3", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "F2C2D389B06426E1289D5419F89BDE8E0F7F35A40B2BBB3C88188481F0D44A9F" }, + { name = "gleeunit", version = "0.6.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "A006864621DB80C4FBB0746580703502FD81A4D38D23FCB20A8120984D353DF0" }, ] [requirements] diff --git a/test-projects/gleam_rebar3/.github/workflows/test.yml b/test-projects/gleam_rebar3/.github/workflows/test.yml deleted file mode 100644 index 1d08ac6..0000000 --- a/test-projects/gleam_rebar3/.github/workflows/test.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: test - -on: - push: - branches: - - master - - main - pull_request: - -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2.0.0 - - uses: gleam-lang/setup-erlang@v1.1.2 - with: - otp-version: 23.2 - - uses: gleam-lang/setup-gleam@v1.0.2 - with: - gleam-version: 0.16.1 - - run: rebar3 install_deps - - run: rebar3 eunit - - run: gleam format --check src test diff --git a/test-projects/gleam_rebar3/.gitignore b/test-projects/gleam_rebar3/.gitignore deleted file mode 100644 index 3e67663..0000000 --- a/test-projects/gleam_rebar3/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -*.beam -*.iml -*.o -*.plt -*.swo -*.swp -*~ -.erlang.cookie -.eunit -.idea -.rebar -.rebar3 -_* -_build -docs -ebin -erl_crash.dump -gen -log -logs -rebar3.crashdump diff --git a/test-projects/gleam_rebar3/README.md b/test-projects/gleam_rebar3/README.md deleted file mode 100644 index cc4243c..0000000 --- a/test-projects/gleam_rebar3/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# gleam_rebar3 - -A Gleam project - -## Quick start - -```sh -# Run the eunit tests -rebar3 eunit - -# Run the Erlang REPL -rebar3 shell -``` - -## Installation - -If [available in Hex](https://rebar3.org/docs/configuration/dependencies/#declaring-dependencies) -this package can be installed by adding `gleam_rebar3` to your `rebar.config` dependencies: - -```erlang -{deps, [ - gleam_rebar3 -]}. -``` diff --git a/test-projects/gleam_rebar3/gleam.toml b/test-projects/gleam_rebar3/gleam.toml deleted file mode 100644 index 9cf4499..0000000 --- a/test-projects/gleam_rebar3/gleam.toml +++ /dev/null @@ -1,3 +0,0 @@ -name = "gleam_rebar3" - -# repository = { type = "github", user = "my-user", repo = "gleam_rebar3" } diff --git a/test-projects/gleam_rebar3/rebar.config b/test-projects/gleam_rebar3/rebar.config deleted file mode 100644 index e36d020..0000000 --- a/test-projects/gleam_rebar3/rebar.config +++ /dev/null @@ -1,12 +0,0 @@ -{erl_opts, [debug_info]}. -{src_dirs, ["src", "gen/src"]}. - -{profiles, [ - {test, [{src_dirs, ["src", "test", "gen/src", "gen/test"]}]} -]}. - -{project_plugins, [rebar_gleam]}. - -{deps, [ - {gleam_stdlib, "0.16.0"} -]}. diff --git a/test-projects/gleam_rebar3/src/gleam_rebar3.app.src b/test-projects/gleam_rebar3/src/gleam_rebar3.app.src deleted file mode 100644 index d9746bc..0000000 --- a/test-projects/gleam_rebar3/src/gleam_rebar3.app.src +++ /dev/null @@ -1,15 +0,0 @@ -{application, gleam_rebar3, - [{description, "A Gleam project"}, - {vsn, "0.1.0"}, - {registered, []}, - {applications, - [kernel, - stdlib, - gleam_stdlib - ]}, - {env,[]}, - {modules, []}, - - {include_files, ["gleam.toml", "gen"]}, - {links, []} -]}. diff --git a/test-projects/gleam_rebar3/src/gleam_rebar3.gleam b/test-projects/gleam_rebar3/src/gleam_rebar3.gleam deleted file mode 100644 index 5b8cdef..0000000 --- a/test-projects/gleam_rebar3/src/gleam_rebar3.gleam +++ /dev/null @@ -1,3 +0,0 @@ -pub fn hello_world() -> String { - "Hello, from gleam_rebar3!" -} diff --git a/test-projects/gleam_rebar3/test/gleam_rebar3_test.gleam b/test-projects/gleam_rebar3/test/gleam_rebar3_test.gleam deleted file mode 100644 index 7494e5c..0000000 --- a/test-projects/gleam_rebar3/test/gleam_rebar3_test.gleam +++ /dev/null @@ -1,7 +0,0 @@ -import gleam_rebar3 -import gleam/should - -pub fn hello_world_test() { - gleam_rebar3.hello_world() - |> should.equal("Hello, from gleam_rebar3!") -}