44 push :
55 tags :
66 - ' *'
7- schedule :
8- - cron : ' 0 2 * * *'
97env :
108 CABAL_CACHE_DISABLE : ${{ vars.CABAL_CACHE_DISABLE }}
119 CABAL_CACHE_NONFATAL : ${{ vars.CABAL_CACHE_NONFATAL }}
5250 , ARTIFACT: "x86_64-linux-deb11"
5351 , ADD_CABAL_ARGS: "--enable-split-sections"
5452 },
53+ { image: "alpine:3.16"
54+ , installCmd: "apk add"
55+ , toolRequirements: "curl gcc g++ binutils binutils-gold coreutils bsd-compat-headers gmp-dev ncurses-dev libffi-dev make xz tar perl bash diffutils git gzip gnupg autoconf automake patchelf zlib zlib-dev bzip2 bzip2-dev findutils"
56+ , DISTRO: "Alpine"
57+ , ARTIFACT: "x86_64-linux-alpine"
58+ , ADD_CABAL_ARGS: "--enable-split-sections"
59+ },
5560 { image: "ubuntu:18.04"
5661 , installCmd: "apt-get update && apt-get install -y"
5762 , 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"
@@ -107,53 +112,15 @@ jobs:
107112 , DISTRO: "CentOS"
108113 , ARTIFACT: "x86_64-linux-centos7"
109114 , ADD_CABAL_ARGS: "--enable-split-sections"
115+ },
116+ { image: "rockylinux:8"
117+ , installCmd: "yum -y install epel-release && yum install -y --allowerasing"
118+ , 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"
119+ , DISTRO: "Unknown"
120+ , ARTIFACT: "x86_64-linux-unknown"
121+ , ADD_CABAL_ARGS: "--enable-split-sections"
110122 }
111123 ]
112- # TODO: rm
113- # Instead of manually adding the Unknown Linux Bindist jobs here,
114- # it should be part of the matrix above.
115- # However, due to GHC 9.4 shenanigans, we need some special logic.
116- # https://gitlab.haskell.org/ghc/ghc/-/issues/22268
117- #
118- # Perhaps we can migrate *all* unknown linux builds to a uniform
119- # image.
120- include :
121- - ghc : 9.2.8
122- platform :
123- { image: "rockylinux:8"
124- , installCmd: "yum -y install epel-release && yum install -y --allowerasing"
125- , 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"
126- , DISTRO: "Unknown"
127- , ARTIFACT: "x86_64-linux-unknown"
128- , ADD_CABAL_ARGS: "--enable-split-sections"
129- }
130- - ghc : 9.4.8
131- platform :
132- { image: "fedora:27"
133- , installCmd: "dnf install -y"
134- , 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"
135- , DISTRO: "Unknown"
136- , ARTIFACT: "x86_64-linux-unknown"
137- , ADD_CABAL_ARGS: "--enable-split-sections"
138- }
139- - ghc : 9.6.4
140- platform :
141- { image: "rockylinux:8"
142- , installCmd: "yum -y install epel-release && yum install -y --allowerasing"
143- , 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"
144- , DISTRO: "Unknown"
145- , ARTIFACT: "x86_64-linux-unknown"
146- , ADD_CABAL_ARGS: "--enable-split-sections"
147- }
148- - ghc : 9.8.1
149- platform :
150- { image: "rockylinux:8"
151- , installCmd: "yum -y install epel-release && yum install -y --allowerasing"
152- , 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"
153- , DISTRO: "Unknown"
154- , ARTIFACT: "x86_64-linux-unknown"
155- , ADD_CABAL_ARGS: "--enable-split-sections"
156- }
157124 container :
158125 image : ${{ matrix.platform.image }}
159126 steps :
@@ -198,7 +165,7 @@ jobs:
198165 # # The environments can be seen in https://github.com/haskell/haskell-language-server/settings/environments
199166 # # assuming you have the proper permissions.
200167 environment : CI
201- runs-on : [self-hosted, Linux, ARM64]
168+ runs-on : ${{ matrix.platform.os }}
202169 env :
203170 AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
204171 AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -207,15 +174,23 @@ jobs:
207174 ADD_CABAL_ARGS : " "
208175 DEBIAN_FRONTEND : noninteractive
209176 TZ : Asia/Singapore
210- ARTIFACT : " aarch64-linux-ubuntu20"
211- ARCH : ARM64
212- DISTRO : Ubuntu
177+ DISTRO : Debian
213178 strategy :
214179 fail-fast : true
215180 matrix :
216- ghc : ["9.8.1", "9.6.4", "9.4.8", "9.2.8" ]
181+ ghc : ["9.8.1", "9.6.4", "9.4.8", "9.2.8"]
182+ platform : [
183+ # { os: [self-hosted, Linux, ARM64] }
184+ # , ARCH: "ARM"
185+ # , ARTIFACT: "armv7-linux-deb10"
186+ # },
187+ { os: [self-hosted, Linux, ARM64]
188+ , ARCH: "ARM64"
189+ , ARTIFACT: "aarch64-linux-deb10"
190+ }
191+ ]
217192 steps :
218- - uses : docker://arm64v8/ubuntu:focal
193+ - uses : docker://hasufell/arm64v8-debian-haskell:10
219194 name : Cleanup (aarch64 linux)
220195 with :
221196 args : " find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
@@ -228,19 +203,45 @@ jobs:
228203 - name : Checkout code
229204 uses : actions/checkout@v3
230205
231- - uses : docker://hasufell/arm64v8-ubuntu-haskell:focal
206+ - if : matrix.platform.ARCH == 'ARM'
207+ uses : docker://hasufell/arm32v7-debian-haskell:10
208+ name : Run build (armv7 linux)
209+ with :
210+ args : bash .github/scripts/build.sh
211+ env :
212+ GHC_VERSION : ${{ matrix.ghc }}
213+ ARCH : ${{ matrix.platform.ARCH }}
214+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
215+
216+ - if : matrix.platform.ARCH == 'ARM64'
217+ uses : docker://hasufell/arm64v8-debian-haskell:10
232218 name : Run build (aarch64 linux)
233219 with :
234220 args : bash .github/scripts/build.sh
235221 env :
236222 GHC_VERSION : ${{ matrix.ghc }}
223+ ARCH : ${{ matrix.platform.ARCH }}
224+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
225+
226+ - if : matrix.platform.ARCH == 'ARM'
227+ uses : docker://hasufell/arm32v7-debian-haskell:10
228+ name : Run build (armv7 linux)
229+ with :
230+ args : bash .github/scripts/tar.sh
231+ env :
232+ GHC_VERSION : ${{ matrix.ghc }}
233+ ARCH : ${{ matrix.platform.ARCH }}
234+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
237235
238- - uses : docker://hasufell/arm64v8-ubuntu-haskell:focal
236+ - if : matrix.platform.ARCH == 'ARM64'
237+ uses : docker://hasufell/arm64v8-debian-haskell:10
239238 name : Run build (aarch64 linux)
240239 with :
241240 args : bash .github/scripts/tar.sh
242241 env :
243242 GHC_VERSION : ${{ matrix.ghc }}
243+ ARCH : ${{ matrix.platform.ARCH }}
244+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
244245
245246 - if : always()
246247 name : Upload artifact
@@ -250,7 +251,7 @@ jobs:
250251 retention-days : 2
251252 name : artifacts-arm
252253 path : |
253- ./out-${{ env .ARTIFACT }}-${{ matrix.ghc }}.tar
254+ ./out-${{ matrix.platform .ARTIFACT }}-${{ matrix.ghc }}.tar
254255
255256 build-mac-x86_64 :
256257 name : Build binary (Mac x86_64)
@@ -424,6 +425,11 @@ jobs:
424425 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
425426 DISTRO : Debian
426427 ARTIFACT : " x86_64-linux-deb11"
428+ - image : " alpine:3.16"
429+ installCmd : " apk add"
430+ toolRequirements : " curl gcc g++ binutils binutils-gold coreutils bsd-compat-headers gmp-dev ncurses-dev libffi-dev make xz tar perl bash diffutils git gzip gnupg autoconf automake patchelf zlib zlib-dev bzip2 bzip2-dev findutils"
431+ DISTRO : " Alpine"
432+ ARTIFACT : " x86_64-linux-alpine"
427433 - image : ubuntu:18.04
428434 installCmd : apt-get update && apt-get install -y
429435 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
@@ -459,8 +465,8 @@ jobs:
459465 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
460466 DISTRO : Mint
461467 ARTIFACT : " x86_64-linux-mint19.3"
462- - image : " fedora:33 "
463- installCmd : " dnf install -y "
468+ - image : " rockylinux:8 "
469+ installCmd : " yum -y install epel-release && yum install -y --allowerasing "
464470 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"
465471 DISTRO : " Unknown"
466472 ARTIFACT : " x86_64-linux-unknown"
@@ -516,16 +522,27 @@ jobs:
516522
517523 bindist-arm :
518524 name : Tar linux bindists (arm)
519- runs-on : [self-hosted, Linux, ARM64]
525+ runs-on : ${{ matrix.platform.os }}
520526 needs : ["build-arm"]
521527 env :
522528 TARBALL_EXT : tar.xz
523- ARCH : ARM64
524529 DEBIAN_FRONTEND : noninteractive
525- ARTIFACT : " aarch64-linux-ubuntu20"
526530 TZ : Asia/Singapore
531+ strategy :
532+ fail-fast : true
533+ matrix :
534+ platform : [
535+ # { os: [self-hosted, Linux, ARM64] }
536+ # , ARCH: "ARM"
537+ # , ARTIFACT: "armv7-linux-deb10"
538+ # },
539+ { os: [self-hosted, Linux, ARM64]
540+ , ARCH: "ARM64"
541+ , ARTIFACT: "aarch64-linux-deb10"
542+ }
543+ ]
527544 steps :
528- - uses : docker://arm64v8/ubuntu:focal
545+ - uses : docker://hasufell/arm64v8-debian-haskell:10
529546 name : Cleanup (aarch64 linux)
530547 with :
531548 args : " find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
@@ -542,15 +559,41 @@ jobs:
542559 name : artifacts-arm
543560 path : ./
544561
545- - uses : docker://hasufell/arm64v8-ubuntu-haskell:focal
546- name : Unpack
562+ - if : matrix.platform.ARCH == 'ARM'
563+ uses : docker://hasufell/arm32v7-debian-haskell:10
564+ name : Unpack (armv7)
565+ with :
566+ args : bash .github/scripts/untar.sh
567+ env :
568+ ARCH : ${{ matrix.platform.ARCH }}
569+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
570+
571+ - if : matrix.platform.ARCH == 'ARM64'
572+ uses : docker://hasufell/arm64v8-debian-haskell:10
573+ name : Unpack (aarch64)
547574 with :
548575 args : bash .github/scripts/untar.sh
576+ env :
577+ ARCH : ${{ matrix.platform.ARCH }}
578+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
549579
550- - uses : docker://hasufell/arm64v8-ubuntu-haskell:focal
580+ - if : matrix.platform.ARCH == 'ARM'
581+ uses : docker://hasufell/arm32v7-debian-haskell:10
582+ name : Create bindist (armv7 linux)
583+ with :
584+ args : bash .github/scripts/bindist.sh
585+ env :
586+ ARCH : ${{ matrix.platform.ARCH }}
587+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
588+
589+ - if : matrix.platform.ARCH == 'ARM64'
590+ uses : docker://hasufell/arm64v8-debian-haskell:10
551591 name : Create bindist (aarch64 linux)
552592 with :
553593 args : bash .github/scripts/bindist.sh
594+ env :
595+ ARCH : ${{ matrix.platform.ARCH }}
596+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
554597
555598 - name : Upload bindist
556599 uses : actions/upload-artifact@v3
@@ -719,6 +762,11 @@ jobs:
719762 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
720763 DISTRO : Debian
721764 ARTIFACT : " x86_64-linux-deb11"
765+ - image : " alpine:3.16"
766+ installCmd : " apk add"
767+ toolRequirements : " curl gcc g++ binutils binutils-gold coreutils bsd-compat-headers gmp-dev ncurses-dev libffi-dev make xz tar perl bash diffutils git gzip gnupg autoconf automake patchelf tree zlib zlib-dev bzip2 bzip2-dev findutils"
768+ DISTRO : " Alpine"
769+ ARTIFACT : " x86_64-linux-alpine"
722770 - image : ubuntu:18.04
723771 installCmd : apt-get update && apt-get install -y
724772 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
@@ -793,17 +841,28 @@ jobs:
793841
794842 test-arm :
795843 name : Test ARM binary
796- runs-on : [self-hosted, Linux, ARM64]
844+ runs-on : ${{ matrix.platform.os }}
797845 needs : ["bindist-arm"]
798846 env :
799847 TARBALL_EXT : tar.xz
800848 DEBIAN_FRONTEND : noninteractive
801849 TZ : Asia/Singapore
802- ARTIFACT : " aarch64-linux-ubuntu20"
803- ARCH : ARM64
804- DISTRO : Ubuntu
850+ DISTRO : Debian
851+ strategy :
852+ fail-fast : true
853+ matrix :
854+ platform : [
855+ # { os: [self-hosted, Linux, ARM64] }
856+ # , ARCH: "ARM"
857+ # , ARTIFACT: "armv7-linux-deb10"
858+ # },
859+ { os: [self-hosted, Linux, ARM64]
860+ , ARCH: "ARM64"
861+ , ARTIFACT: "aarch64-linux-deb10"
862+ }
863+ ]
805864 steps :
806- - uses : docker://arm64v8/ubuntu:focal
865+ - uses : docker://hasufell/arm64v8-debian-haskell:10
807866 name : Cleanup (aarch64 linux)
808867 with :
809868 args : " find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
@@ -821,10 +880,23 @@ jobs:
821880 name : bindists-arm
822881 path : ./out
823882
824- - uses : docker://hasufell/arm64v8-ubuntu-haskell:focal
883+ - if : matrix.platform.ARCH == 'ARM'
884+ uses : docker://hasufell/arm32v7-debian-haskell:10
885+ name : Run test (armv7 linux)
886+ with :
887+ args : bash .github/scripts/test.sh
888+ env :
889+ ARCH : ${{ matrix.platform.ARCH }}
890+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
891+
892+ - if : matrix.platform.ARCH == 'ARM64'
893+ uses : docker://hasufell/arm64v8-debian-haskell:10
825894 name : Run test (aarch64 linux)
826895 with :
827896 args : bash .github/scripts/test.sh
897+ env :
898+ ARCH : ${{ matrix.platform.ARCH }}
899+ ARTIFACT : ${{ matrix.platform.ARTIFACT }}
828900
829901 test-mac-x86_64 :
830902 name : Test binary (Mac x86_64)
@@ -937,6 +1009,10 @@ jobs:
9371009 with :
9381010 path : ./out
9391011 name : bindists-x86_64-linux-deb11
1012+ - uses : actions/download-artifact@v3
1013+ with :
1014+ path : ./out
1015+ name : bindists-x86_64-linux-alpine
9401016 - uses : actions/download-artifact@v3
9411017 with :
9421018 path : ./out
0 commit comments