Add Stack setup for GHC 9.2.8 #627
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
env: | ||
cache_generation: 2021-06-22 | ||
# NOTE: Please keep .mergify.yml in sync when adding or removing any jobs. | ||
name: main | ||
on: [pull_request] | ||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
os: | ||
- runner: 'macOS-latest' | ||
archive-command: 'tar --create --bzip2 --file' | ||
file-extension: 'tar.bz2' | ||
executable-extension: '' | ||
- runner: 'ubuntu-latest' | ||
archive-command: 'tar --create --bzip2 --file' | ||
file-extension: 'tar.bz2' | ||
executable-extension: '' | ||
- runner: 'windows-latest' | ||
archive-command: '7z a -tzip' | ||
file-extension: 'zip' | ||
executable-extension: '.exe' | ||
stack-yaml: | ||
- "stack.yaml" | ||
include: | ||
- runner: "ubuntu-latest" | ||
stack-yaml: "stack.ghc-8.10.yaml" | ||
fail-fast: false | ||
name: ${{ matrix.os.runner }} | ||
runs-on: ${{ matrix.os.runner }} | ||
steps: | ||
- name: "Checkout repository" | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: true | ||
- id: setup-haskell-cabal | ||
name: "Setup Haskell environment" | ||
uses: haskell/actions/setup@v2 | ||
with: | ||
enable-stack: true | ||
- name: "Cache" | ||
uses: actions/cache@v3 | ||
with: | ||
key: ${{ matrix.os.runner }}-${{ hashFiles(matrix.stack-yaml) }}-${{ env.cache_generation }} | ||
restore-keys: | | ||
${{ matrix.os.runner }}- | ||
path: | | ||
${{ steps.setup-haskell-cabal.outputs.stack-root }} | ||
- name: Install libsodium | ||
shell: bash | ||
run: | | ||
if [ '${{matrix.os.runner}}' == 'ubuntu-latest' ]; then | ||
sudo apt-get install -y libsodium-dev | ||
fi | ||
- name: "Build" | ||
shell: bash | ||
run: | | ||
packages=( | ||
dhall | ||
dhall-bash | ||
dhall-csv | ||
dhall-docs | ||
dhall-json | ||
dhall-lsp-server | ||
dhall-nix | ||
dhall-openapi | ||
dhall-toml | ||
dhall-yaml | ||
) | ||
for package in "${packages[@]}"; do | ||
if [ '${{matrix.os.runner}}' == 'windows-latest' ] && [ "${package}" == 'dhall-nix' ]; then | ||
continue | ||
fi | ||
# We use --test --no-run-tests to avoid re-building all the local packages in the | ||
# subsequent test step. | ||
# See https://github.com/commercialhaskell/stack/issues/4977. | ||
stack --stack-yaml "${{matrix.stack-yaml}}" build --test --no-run-tests --copy-bins --local-bin-path ./bin "${package}" | ||
done | ||
- name: "Run tests" | ||
shell: bash | ||
run: | | ||
packages=( | ||
dhall | ||
dhall-bash | ||
dhall-csv | ||
dhall-docs | ||
dhall-json | ||
dhall-lsp-server | ||
dhall-nix | ||
dhall-openapi | ||
dhall-toml | ||
dhall-yaml | ||
) | ||
for package in "${packages[@]}"; do | ||
if [ '${{matrix.os.runner}}' == 'windows-latest' ] && [ "${package}" == 'dhall-nix' ]; then | ||
continue | ||
fi | ||
stack --stack-yaml "${{matrix.stack-yaml}}" test "${package}" | ||
done | ||
- name: "Prepare packaging" | ||
shell: bash | ||
run: | | ||
mkdir -p share/man/man1 | ||
cp dhall/man/dhall.1 share/man/man1/ | ||
cp dhall-docs/src/Dhall/data/man/dhall-docs.1 share/man/man1/ | ||
- id: package | ||
name: "Create packages" | ||
if: ${{ matrix.stack-yaml == "stack.yaml" }} | ||
Check failure on line 111 in .github/workflows/main.yml GitHub Actions / mainInvalid workflow file
|
||
shell: bash | ||
run: | | ||
packages=( | ||
dhall | ||
dhall-bash | ||
dhall-csv | ||
dhall-docs | ||
dhall-json | ||
dhall-lsp-server | ||
dhall-nix | ||
dhall-openapi | ||
dhall-toml | ||
dhall-yaml | ||
) | ||
architecture="$(uname -m)" | ||
function package() ( | ||
local package="${1}" | ||
local version="$(stack query locals "${package}" version)" | ||
shift | ||
local assets=("${@}") | ||
local package_file="${package}-${version}-${architecture}-${{runner.os}}.${{ matrix.os.file-extension }}" | ||
${{matrix.os.archive-command}} "${package_file}" "${assets[@]}" | ||
) | ||
exe='${{matrix.os.executable-extension}}' | ||
package 'dhall' "bin/dhall${exe}" 'share/man/man1/dhall.1' | ||
package 'dhall-bash' "bin/dhall-to-bash${exe}" | ||
package 'dhall-csv' "bin/csv-to-dhall${exe}" "bin/dhall-to-csv${exe}" | ||
package 'dhall-docs' "bin/dhall-docs${exe}" 'share/man/man1/dhall-docs.1' | ||
package 'dhall-json' "bin/dhall-to-json${exe}" "bin/dhall-to-yaml${exe}" "bin/json-to-dhall${exe}" | ||
package 'dhall-lsp-server' "bin/dhall-lsp-server${exe}" | ||
if [ '${{matrix.os.runner}}' != 'windows-latest' ]; then | ||
package 'dhall-nix' "bin/dhall-to-nix${exe}" | ||
fi | ||
package 'dhall-openapi' "bin/openapi-to-dhall${exe}" | ||
package 'dhall-toml' "bin/dhall-to-toml${exe}" "bin/toml-to-dhall${exe}" | ||
package 'dhall-yaml' "bin/dhall-to-yaml-ng${exe}" "bin/yaml-to-dhall${exe}" | ||
- name: "Upload package" | ||
if: ${{ matrix.stack-yaml == "stack.yaml" }} | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: 'dhall-${{runner.os}}.${{matrix.os.file-extension}}' | ||
path: 'dhall-*${{runner.os}}.${{matrix.os.file-extension}}' |