Build and release #5
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
name: Build and release | |
on: | |
push: | |
tags: | |
- '*' | |
schedule: | |
- cron: '0 2 * * *' | |
env: | |
CABAL_CACHE_DISABLE: ${{ vars.CABAL_CACHE_DISABLE }} | |
CABAL_CACHE_NONFATAL: ${{ vars.CABAL_CACHE_NONFATAL }} | |
jobs: | |
build-linux: | |
name: Build linux binaries | |
## We need the environment here, to have access to the `vars` context. | |
## Allows us to specify: `CABAL_CACHE_DISABLE=yes`. | |
## The environments can be seen in https://github.com/haskell/haskell-language-server/settings/environments | |
## assuming you have the proper permissions. | |
environment: CI | |
runs-on: ubuntu-latest | |
env: | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
S3_HOST: ${{ secrets.S3_HOST }} | |
TARBALL_EXT: tar.xz | |
ARCH: 64 | |
DEBIAN_FRONTEND: noninteractive | |
TZ: Asia/Singapore | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: ["9.8.1", "9.6.4", "9.4.8", "9.2.8"] | |
platform: [ { image: "debian:9" | |
, installCmd: "sed -i s/deb.debian.org/archive.debian.org/g /etc/apt/sources.list && sed -i 's|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list && sed -i /-updates/d /etc/apt/sources.list && apt-get update && apt-get install -y" | |
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf" | |
, DISTRO: "Debian" | |
, ARTIFACT: "x86_64-linux-deb9" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "debian:10" | |
, installCmd: "apt-get update && apt-get install -y" | |
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf" | |
, DISTRO: "Debian" | |
, ARTIFACT: "x86_64-linux-deb10" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "debian:11" | |
, installCmd: "apt-get update && apt-get install -y" | |
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf" | |
, DISTRO: "Debian" | |
, ARTIFACT: "x86_64-linux-deb11" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "ubuntu:18.04" | |
, installCmd: "apt-get update && apt-get install -y" | |
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf" | |
, DISTRO: "Ubuntu" | |
, ARTIFACT: "x86_64-linux-ubuntu18.04" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "ubuntu:20.04" | |
, installCmd: "apt-get update && apt-get install -y" | |
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf" | |
, DISTRO: "Ubuntu" | |
, ARTIFACT: "x86_64-linux-ubuntu20.04" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "ubuntu:22.04" | |
, installCmd: "apt-get update && apt-get install -y" | |
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf" | |
, DISTRO: "Ubuntu" | |
, ARTIFACT: "x86_64-linux-ubuntu22.04" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "linuxmintd/mint19.3-amd64" | |
, installCmd: "apt-get update && apt-get install -y" | |
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf" | |
, DISTRO: "Mint" | |
, ARTIFACT: "x86_64-linux-mint19.3" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "linuxmintd/mint20.2-amd64" | |
, installCmd: "apt-get update && apt-get install -y" | |
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf" | |
, DISTRO: "Mint" | |
, ARTIFACT: "x86_64-linux-mint20.2" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "fedora:27" | |
, installCmd: "dnf install -y" | |
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf" | |
, DISTRO: "Fedora" | |
, ARTIFACT: "x86_64-linux-fedora27" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "fedora:33" | |
, installCmd: "dnf install -y" | |
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf" | |
, DISTRO: "Fedora" | |
, ARTIFACT: "x86_64-linux-fedora33" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
}, | |
{ image: "centos:7" | |
, installCmd: "yum -y install epel-release && yum install -y" | |
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf" | |
, DISTRO: "CentOS" | |
, ARTIFACT: "x86_64-linux-centos7" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
} | |
] | |
# TODO: rm | |
# Instead of manually adding the Unknown Linux Bindist jobs here, | |
# it should be part of the matrix above. | |
# However, due to GHC 9.4 shenanigans, we need some special logic. | |
# https://gitlab.haskell.org/ghc/ghc/-/issues/22268 | |
# | |
# Perhaps we can migrate *all* unknown linux builds to a uniform | |
# image. | |
include: | |
- ghc: 9.2.8 | |
platform: | |
{ image: "rockylinux:8" | |
, installCmd: "yum -y install epel-release && yum install -y --allowerasing" | |
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf" | |
, DISTRO: "Unknown" | |
, ARTIFACT: "x86_64-linux-unknown" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
} | |
- ghc: 9.4.8 | |
platform: | |
{ image: "fedora:27" | |
, installCmd: "dnf install -y" | |
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf" | |
, DISTRO: "Unknown" | |
, ARTIFACT: "x86_64-linux-unknown" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
} | |
- ghc: 9.6.4 | |
platform: | |
{ image: "rockylinux:8" | |
, installCmd: "yum -y install epel-release && yum install -y --allowerasing" | |
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf" | |
, DISTRO: "Unknown" | |
, ARTIFACT: "x86_64-linux-unknown" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
} | |
- ghc: 9.8.1 | |
platform: | |
{ image: "rockylinux:8" | |
, installCmd: "yum -y install epel-release && yum install -y --allowerasing" | |
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf" | |
, DISTRO: "Unknown" | |
, ARTIFACT: "x86_64-linux-unknown" | |
, ADD_CABAL_ARGS: "--enable-split-sections" | |
} | |
container: | |
image: ${{ matrix.platform.image }} | |
steps: | |
- name: Install requirements | |
shell: sh | |
run: | | |
${{ matrix.platform.installCmd }} curl bash git ${{ matrix.platform.toolRequirements }} | |
- if: matrix.platform.DISTRO == 'Unknown' | |
run: | | |
echo "NAME=Linux" > /etc/os-release | |
echo "ID=linux" >> /etc/os-release | |
echo "PRETTY_NAME=Linux" >> /etc/os-release | |
- uses: actions/checkout@v3 | |
- name: Run build | |
run: | | |
bash .github/scripts/build.sh | |
tar cf out-${ARTIFACT}-${GHC_VERSION}.tar out/ store/ | |
env: | |
ARTIFACT: ${{ matrix.platform.ARTIFACT }} | |
DISTRO: ${{ matrix.platform.DISTRO }} | |
ADD_CABAL_ARGS: ${{ matrix.platform.ADD_CABAL_ARGS }} | |
GHC_VERSION: ${{ matrix.ghc }} | |
- if: always() | |
name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
retention-days: 2 | |
name: artifacts-${{ matrix.platform.ARTIFACT }} | |
path: | | |
./out-${{ matrix.platform.ARTIFACT }}-${{ matrix.ghc }}.tar | |
build-arm: | |
name: Build ARM binary | |
## We need the environment here, to have access to the `vars` context. | |
## Allows us to specify: `CABAL_CACHE_DISABLE=yes`. | |
## The environments can be seen in https://github.com/haskell/haskell-language-server/settings/environments | |
## assuming you have the proper permissions. | |
environment: CI | |
runs-on: [self-hosted, Linux, ARM64] | |
env: | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
S3_HOST: ${{ secrets.S3_HOST }} | |
TARBALL_EXT: tar.xz | |
ADD_CABAL_ARGS: "" | |
DEBIAN_FRONTEND: noninteractive | |
TZ: Asia/Singapore | |
ARTIFACT: "aarch64-linux-ubuntu20" | |
ARCH: ARM64 | |
DISTRO: Ubuntu | |
strategy: | |
fail-fast: true | |
matrix: | |
ghc: ["9.8.1", "9.6.4", "9.4.8", "9.2.8" ] | |
steps: | |
- uses: docker://arm64v8/ubuntu:focal | |
name: Cleanup (aarch64 linux) | |
with: | |
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +" | |
- name: git config | |
run: | | |
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*" | |
shell: bash | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: docker://hasufell/arm64v8-ubuntu-haskell:focal | |
name: Run build (aarch64 linux) | |
with: | |
args: bash .github/scripts/build.sh | |
env: | |
GHC_VERSION: ${{ matrix.ghc }} | |
- uses: docker://hasufell/arm64v8-ubuntu-haskell:focal | |
name: Run build (aarch64 linux) | |
with: | |
args: bash .github/scripts/tar.sh | |
env: | |
GHC_VERSION: ${{ matrix.ghc }} | |
- if: always() | |
name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
retention-days: 2 | |
name: artifacts-arm | |
path: | | |
./out-${{ env.ARTIFACT }}-${{ matrix.ghc }}.tar | |
build-mac-x86_64: | |
name: Build binary (Mac x86_64) | |
## We need the environment here, to have access to the `vars` context. | |
## Allows us to specify: `CABAL_CACHE_DISABLE=yes`. | |
## The environments can be seen in https://github.com/haskell/haskell-language-server/settings/environments | |
## assuming you have the proper permissions. | |
environment: CI | |
runs-on: macOS-11 | |
env: | |
MACOSX_DEPLOYMENT_TARGET: 10.13 | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
S3_HOST: ${{ secrets.S3_HOST }} | |
ADD_CABAL_ARGS: "" | |
ARTIFACT: "x86_64-apple-darwin" | |
ARCH: 64 | |
TARBALL_EXT: tar.xz | |
DISTRO: na | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: ["9.8.1", "9.6.4", "9.4.8", "9.2.8"] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Run build | |
run: | | |
brew install coreutils tree | |
bash .github/scripts/build.sh | |
tar cf out-${ARTIFACT}-${GHC_VERSION}.tar out/ store/ | |
env: | |
GHC_VERSION: ${{ matrix.ghc }} | |
- if: always() | |
name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
retention-days: 2 | |
name: artifacts-mac-x86_64 | |
path: | | |
./out-${{ env.ARTIFACT }}-${{ matrix.ghc }}.tar | |
build-mac-aarch64: | |
name: Build binary (Mac aarch64) | |
## We need the environment here, to have access to the `vars` context. | |
## Allows us to specify: `CABAL_CACHE_DISABLE=yes`. | |
## The environments can be seen in https://github.com/haskell/haskell-language-server/settings/environments | |
## assuming you have the proper permissions. | |
environment: CI | |
runs-on: [self-hosted, macOS, ARM64] | |
env: | |
MACOSX_DEPLOYMENT_TARGET: 10.13 | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
S3_HOST: ${{ secrets.S3_HOST }} | |
ADD_CABAL_ARGS: "" | |
ARTIFACT: "aarch64-apple-darwin" | |
ARCH: ARM64 | |
TARBALL_EXT: tar.xz | |
DISTRO: na | |
HOMEBREW_CHANGE_ARCH_TO_ARM: 1 | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: ["9.8.1", "9.6.4", "9.4.8", "9.2.8"] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Run build | |
run: | | |
bash .github/scripts/brew.sh git coreutils autoconf automake tree | |
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH" | |
export LD=ld | |
bash .github/scripts/build.sh | |
tar cf out-${ARTIFACT}-${GHC_VERSION}.tar out/ store/ | |
env: | |
GHC_VERSION: ${{ matrix.ghc }} | |
- if: always() | |
name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
retention-days: 2 | |
name: artifacts-mac-aarch64 | |
path: | | |
./out-${{ env.ARTIFACT }}-${{ matrix.ghc }}.tar | |
build-win: | |
name: Build binary (Win) | |
## We need the environment here, to have access to the `vars` context. | |
## Allows us to specify: `CABAL_CACHE_DISABLE=yes`. | |
## The environments can be seen in https://github.com/haskell/haskell-language-server/settings/environments | |
## assuming you have the proper permissions. | |
environment: CI | |
runs-on: windows-latest | |
env: | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
S3_HOST: ${{ secrets.S3_HOST }} | |
ADD_CABAL_ARGS: "" | |
ARTIFACT: "x86_64-mingw64" | |
ARCH: 64 | |
TARBALL_EXT: "zip" | |
DISTRO: na | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: ["9.8.1", "9.6.4", "9.4.8", "9.2.8"] | |
steps: | |
- name: install windows deps | |
shell: pwsh | |
run: | | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -Syuu" | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -Syuu" | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -S make mingw-w64-x86_64-clang curl autoconf mingw-w64-x86_64-pkgconf ca-certificates base-devel gettext autoconf make libtool automake python p7zip patch unzip zip git" | |
taskkill /F /FI "MODULES eq msys-2.0.dll" | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Run build (windows) | |
run: | | |
$env:CHERE_INVOKING = 1 | |
$env:MSYS2_PATH_TYPE = "inherit" | |
$ErrorActionPreference = "Stop" | |
C:\msys64\usr\bin\bash -lc "bash .github/scripts/build.sh" | |
shell: pwsh | |
env: | |
GHC_VERSION: ${{ matrix.ghc }} | |
- if: always() | |
name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
retention-days: 2 | |
name: artifacts-win | |
path: | | |
./out/* | |
bindist-linux: | |
name: Tar linux bindists (linux) | |
runs-on: [self-hosted, linux-space] | |
needs: ["build-linux"] | |
env: | |
TARBALL_EXT: tar.xz | |
ARCH: 64 | |
DEBIAN_FRONTEND: noninteractive | |
TZ: Asia/Singapore | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: debian:9 | |
installCmd: sed -i s/deb.debian.org/archive.debian.org/g /etc/apt/sources.list && sed -i 's|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list && sed -i /-updates/d /etc/apt/sources.list && apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Debian | |
ARTIFACT: "x86_64-linux-deb9" | |
- image: debian:10 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Debian | |
ARTIFACT: "x86_64-linux-deb10" | |
- image: debian:11 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Debian | |
ARTIFACT: "x86_64-linux-deb11" | |
- image: ubuntu:18.04 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Ubuntu | |
ARTIFACT: "x86_64-linux-ubuntu18.04" | |
- image: ubuntu:20.04 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Ubuntu | |
ARTIFACT: "x86_64-linux-ubuntu20.04" | |
- image: ubuntu:22.04 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Ubuntu | |
ARTIFACT: "x86_64-linux-ubuntu22.04" | |
- image: fedora:27 | |
installCmd: dnf install -y | |
toolRequirements: autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf tree | |
DISTRO: Fedora | |
ARTIFACT: "x86_64-linux-fedora27" | |
- image: fedora:33 | |
installCmd: dnf install -y | |
toolRequirements: autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf tree | |
DISTRO: Fedora | |
ARTIFACT: "x86_64-linux-fedora33" | |
- image: centos:7 | |
installCmd: yum -y install epel-release && yum install -y | |
toolRequirements: autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf tree | |
DISTRO: CentOS | |
ARTIFACT: "x86_64-linux-centos7" | |
- image: linuxmintd/mint19.3-amd64 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Mint | |
ARTIFACT: "x86_64-linux-mint19.3" | |
- image: "fedora:33" | |
installCmd: "dnf install -y" | |
toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf tree" | |
DISTRO: "Unknown" | |
ARTIFACT: "x86_64-linux-unknown" | |
- image: linuxmintd/mint20.2-amd64 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Mint | |
ARTIFACT: "x86_64-linux-mint20.2" | |
container: | |
image: ${{ matrix.image }} | |
steps: | |
- name: Install requirements | |
shell: sh | |
run: | | |
${{ matrix.installCmd }} curl bash git ${{ matrix.toolRequirements }} | |
- if: matrix.DISTRO == 'Unknown' | |
run: | | |
echo "NAME=Linux" > /etc/os-release | |
echo "ID=linux" >> /etc/os-release | |
echo "PRETTY_NAME=Linux" >> /etc/os-release | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifacts-${{ matrix.ARTIFACT }} | |
path: ./ | |
- name: Create bindist | |
run: | | |
set -eux | |
for bindist in out-*.tar ; do | |
tar -xf "${bindist}" | |
done | |
unset bindist | |
bash .github/scripts/bindist.sh | |
env: | |
ARTIFACT: ${{ matrix.ARTIFACT }} | |
- name: Upload bindist | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
name: bindists-${{ matrix.ARTIFACT }} | |
path: | | |
./out/*.tar.xz | |
./out/plan.json/* | |
- uses: geekyeggo/delete-artifact@v2 | |
with: | |
name: artifacts-${{ matrix.ARTIFACT }} | |
bindist-arm: | |
name: Tar linux bindists (arm) | |
runs-on: [self-hosted, Linux, ARM64] | |
needs: ["build-arm"] | |
env: | |
TARBALL_EXT: tar.xz | |
ARCH: ARM64 | |
DEBIAN_FRONTEND: noninteractive | |
ARTIFACT: "aarch64-linux-ubuntu20" | |
TZ: Asia/Singapore | |
steps: | |
- uses: docker://arm64v8/ubuntu:focal | |
name: Cleanup (aarch64 linux) | |
with: | |
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +" | |
- name: git config | |
run: | | |
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*" | |
shell: bash | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifacts-arm | |
path: ./ | |
- uses: docker://hasufell/arm64v8-ubuntu-haskell:focal | |
name: Unpack | |
with: | |
args: bash .github/scripts/untar.sh | |
- uses: docker://hasufell/arm64v8-ubuntu-haskell:focal | |
name: Create bindist (aarch64 linux) | |
with: | |
args: bash .github/scripts/bindist.sh | |
- name: Upload bindist | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
name: bindists-arm | |
path: | | |
./out/*.tar.xz | |
./out/plan.json/* | |
- uses: geekyeggo/delete-artifact@v2 | |
with: | |
name: artifacts-arm | |
bindist-mac-x86_64: | |
name: Tar bindists (Mac x86_64) | |
runs-on: macOS-11 | |
needs: ["build-mac-x86_64"] | |
env: | |
TARBALL_EXT: tar.xz | |
ARCH: 64 | |
ARTIFACT: "x86_64-apple-darwin" | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifacts-mac-x86_64 | |
path: ./ | |
- name: Create bindist | |
run: | | |
brew install coreutils tree | |
for bindist in out-*.tar ; do | |
tar xf "${bindist}" | |
done | |
unset bindist | |
bash .github/scripts/bindist.sh | |
- name: Upload bindist | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
name: bindists-mac-x86_64 | |
path: | | |
./out/*.tar.xz | |
./out/plan.json/* | |
- uses: geekyeggo/delete-artifact@v2 | |
with: | |
name: artifacts-mac-x86_64 | |
bindist-mac-aarch64: | |
name: Tar bindists (Mac aarch64) | |
runs-on: [self-hosted, macOS, ARM64] | |
needs: ["build-mac-aarch64"] | |
env: | |
TARBALL_EXT: tar.xz | |
ARCH: ARM64 | |
ARTIFACT: "aarch64-apple-darwin" | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifacts-mac-aarch64 | |
path: ./ | |
- name: Create bindist | |
run: | | |
bash .github/scripts/brew.sh git coreutils llvm@13 autoconf automake tree | |
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@13/bin:$PATH" | |
export CC="$HOME/.brew/opt/llvm@13/bin/clang" | |
export CXX="$HOME/.brew/opt/llvm@13/bin/clang++" | |
export LD=ld | |
export AR="$HOME/.brew/opt/llvm@13/bin/llvm-ar" | |
export RANLIB="$HOME/.brew/opt/llvm@13/bin/llvm-ranlib" | |
for bindist in out-*.tar ; do | |
tar xf "${bindist}" | |
done | |
unset bindist | |
bash .github/scripts/bindist.sh | |
- name: Upload bindist | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
name: bindists-mac-aarch64 | |
path: | | |
./out/*.tar.xz | |
./out/plan.json/* | |
- uses: geekyeggo/delete-artifact@v2 | |
with: | |
name: artifacts-mac-aarch64 | |
bindist-win: | |
name: Tar bindists (Windows) | |
runs-on: windows-latest | |
needs: ["build-win"] | |
env: | |
TARBALL_EXT: zip | |
ARTIFACT: "x86_64-mingw64" | |
ARCH: 64 | |
steps: | |
- name: install windows deps | |
shell: pwsh | |
run: | | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -Syuu" | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -Syuu" | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -S unzip zip git" | |
taskkill /F /FI "MODULES eq msys-2.0.dll" | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: artifacts-win | |
path: ./out | |
- name: Create bindist | |
run: | | |
$env:CHERE_INVOKING = 1 | |
$env:MSYS2_PATH_TYPE = "inherit" | |
C:\msys64\usr\bin\bash -lc "bash .github/scripts/bindist.sh" | |
shell: pwsh | |
- name: Upload bindist | |
uses: actions/upload-artifact@v3 | |
with: | |
if-no-files-found: error | |
name: bindists-win | |
path: | | |
./out/*.zip | |
./out/plan.json/* | |
- uses: geekyeggo/delete-artifact@v2 | |
with: | |
name: artifacts-win | |
test-linux: | |
name: Test linux binaries | |
runs-on: ubuntu-latest | |
needs: ["bindist-linux"] | |
env: | |
TARBALL_EXT: tar.xz | |
ARCH: 64 | |
DEBIAN_FRONTEND: noninteractive | |
TZ: Asia/Singapore | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: debian:9 | |
installCmd: sed -i s/deb.debian.org/archive.debian.org/g /etc/apt/sources.list && sed -i 's|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list && sed -i /-updates/d /etc/apt/sources.list && apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Debian | |
ARTIFACT: "x86_64-linux-deb9" | |
- image: debian:10 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Debian | |
ARTIFACT: "x86_64-linux-deb10" | |
- image: debian:11 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Debian | |
ARTIFACT: "x86_64-linux-deb11" | |
- image: ubuntu:18.04 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Ubuntu | |
ARTIFACT: "x86_64-linux-ubuntu18.04" | |
- image: ubuntu:20.04 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Ubuntu | |
ARTIFACT: "x86_64-linux-ubuntu20.04" | |
- image: ubuntu:22.04 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Ubuntu | |
ARTIFACT: "x86_64-linux-ubuntu22.04" | |
- image: fedora:27 | |
installCmd: dnf install -y | |
toolRequirements: autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf tree | |
DISTRO: Fedora | |
ARTIFACT: "x86_64-linux-fedora27" | |
- image: fedora:33 | |
installCmd: dnf install -y | |
toolRequirements: autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf tree | |
DISTRO: Fedora | |
ARTIFACT: "x86_64-linux-fedora33" | |
- image: centos:7 | |
installCmd: yum -y install epel-release && yum install -y | |
toolRequirements: autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf tree | |
DISTRO: CentOS | |
ARTIFACT: "x86_64-linux-centos7" | |
- image: linuxmintd/mint19.3-amd64 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Mint | |
ARTIFACT: "x86_64-linux-mint19.3" | |
- image: "fedora:33" | |
installCmd: dnf install -y | |
toolRequirements: autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf tree | |
DISTRO: "Unknown" | |
ARTIFACT: "x86_64-linux-unknown" | |
- image: linuxmintd/mint20.2-amd64 | |
installCmd: apt-get update && apt-get install -y | |
toolRequirements: libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf tree | |
DISTRO: Mint | |
ARTIFACT: "x86_64-linux-mint20.2" | |
container: | |
image: ${{ matrix.image }} | |
steps: | |
- name: Install requirements | |
shell: sh | |
run: | | |
${{ matrix.installCmd }} curl bash git ${{ matrix.toolRequirements }} | |
- if: matrix.DISTRO == 'Unknown' | |
run: | | |
echo "NAME=Linux" > /etc/os-release | |
echo "ID=linux" >> /etc/os-release | |
echo "PRETTY_NAME=Linux" >> /etc/os-release | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-${{ matrix.ARTIFACT }} | |
path: ./out | |
- name: Run test | |
run: bash .github/scripts/test.sh | |
env: | |
ARTIFACT: ${{ matrix.ARTIFACT }} | |
DISTRO: ${{ matrix.DISTRO }} | |
test-arm: | |
name: Test ARM binary | |
runs-on: [self-hosted, Linux, ARM64] | |
needs: ["bindist-arm"] | |
env: | |
TARBALL_EXT: tar.xz | |
DEBIAN_FRONTEND: noninteractive | |
TZ: Asia/Singapore | |
ARTIFACT: "aarch64-linux-ubuntu20" | |
ARCH: ARM64 | |
DISTRO: Ubuntu | |
steps: | |
- uses: docker://arm64v8/ubuntu:focal | |
name: Cleanup (aarch64 linux) | |
with: | |
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +" | |
- name: git config | |
run: | | |
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*" | |
shell: bash | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-arm | |
path: ./out | |
- uses: docker://hasufell/arm64v8-ubuntu-haskell:focal | |
name: Run test (aarch64 linux) | |
with: | |
args: bash .github/scripts/test.sh | |
test-mac-x86_64: | |
name: Test binary (Mac x86_64) | |
runs-on: macOS-11 | |
needs: ["bindist-mac-x86_64"] | |
env: | |
MACOSX_DEPLOYMENT_TARGET: 10.13 | |
ARTIFACT: "x86_64-apple-darwin" | |
ARCH: 64 | |
TARBALL_EXT: tar.xz | |
DISTRO: na | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-mac-x86_64 | |
path: ./out | |
- name: Run test (mac) | |
run: | | |
brew install coreutils tree | |
bash .github/scripts/test.sh | |
test-mac-aarch64: | |
name: Test binary (Mac aarch64) | |
runs-on: [self-hosted, macOS, ARM64] | |
needs: ["bindist-mac-aarch64"] | |
env: | |
MACOSX_DEPLOYMENT_TARGET: 10.13 | |
ARTIFACT: "aarch64-apple-darwin" | |
ARCH: ARM64 | |
TARBALL_EXT: tar.xz | |
DISTRO: n | |
HOMEBREW_CHANGE_ARCH_TO_ARM: 1 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-mac-aarch64 | |
path: ./out | |
- name: Run test (mac) | |
run: | | |
bash .github/scripts/brew.sh git coreutils llvm@13 autoconf automake tree | |
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@13/bin:$PATH" | |
export CC="$HOME/.brew/opt/llvm@13/bin/clang" | |
export CXX="$HOME/.brew/opt/llvm@13/bin/clang++" | |
export LD=ld | |
export AR="$HOME/.brew/opt/llvm@13/bin/llvm-ar" | |
export RANLIB="$HOME/.brew/opt/llvm@13/bin/llvm-ranlib" | |
bash .github/scripts/test.sh | |
test-win: | |
name: Test binary (Win) | |
runs-on: windows-latest | |
needs: ["bindist-win"] | |
env: | |
ARTIFACT: "x86_64-mingw64" | |
ARCH: 64 | |
TARBALL_EXT: zip | |
DISTRO: na | |
strategy: | |
fail-fast: false | |
steps: | |
- name: install windows deps | |
shell: pwsh | |
run: | | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -Syuu" | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -Syuu" | |
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -S make mingw-w64-x86_64-clang curl autoconf mingw-w64-x86_64-pkgconf ca-certificates base-devel gettext autoconf make libtool automake python p7zip patch unzip zip git" | |
taskkill /F /FI "MODULES eq msys-2.0.dll" | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-win | |
path: ./out | |
- name: Run test (windows) | |
run: | | |
$env:CHERE_INVOKING = 1 | |
$env:MSYS2_PATH_TYPE = "inherit" | |
C:\msys64\usr\bin\bash -lc "bash .github/scripts/test.sh" | |
shell: pwsh | |
release: | |
name: release | |
needs: ["test-linux", "test-mac-x86_64", "test-mac-aarch64", "test-win", "test-arm"] | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-deb9 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-deb10 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-deb11 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-ubuntu18.04 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-ubuntu20.04 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-ubuntu22.04 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-fedora27 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-fedora33 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-centos7 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-unknown | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-mint19.3 | |
- uses: actions/download-artifact@v3 | |
with: | |
path: ./out | |
name: bindists-x86_64-linux-mint20.2 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-arm | |
path: ./out | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-mac-x86_64 | |
path: ./out | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-mac-aarch64 | |
path: ./out | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bindists-win | |
path: ./out | |
- name: Install requirements | |
run: | | |
sudo apt-get update && sudo apt-get install -y tar xz-utils | |
shell: bash | |
- name: tar plan.json | |
run: | | |
cd out/plan.json | |
tar cf plan_json.tar * | |
mv plan_json.tar ../ | |
shell: bash | |
- name: build source tarball | |
run: | | |
export RELEASE=$GITHUB_REF_NAME | |
git archive --format=tar.gz -o "out/haskell-language-server-${RELEASE}-src.tar.gz" --prefix="haskell-language-server-${RELEASE}/" HEAD | |
shell: bash | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
draft: true | |
files: | | |
./out/*.zip | |
./out/*.tar.xz | |
./out/*.tar.gz | |
./out/*.tar |