Skip to content

Commit 4914cd0

Browse files
committed
Only build 3 flavors of linux binaries
- glibc (dynamic) - musl (dynamic) - musl (fully static) 'gmp' and 'zlib' are always statically linked.
1 parent 7a147ee commit 4914cd0

File tree

1 file changed

+69
-100
lines changed

1 file changed

+69
-100
lines changed

.github/workflows/reusable-release.yml

Lines changed: 69 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ on:
1414
ghc_targets:
1515
type: string
1616
default: "install_bin install_lib update_package_db"
17+
gmp:
18+
type: string
19+
default: 6.3.0
1720
cabal:
1821
type: string
1922
default: 3.14.2.0
@@ -22,6 +25,7 @@ env:
2225
GHC_VERSION: ${{ inputs.ghc }}
2326
GHC_TARGETS: ${{ inputs.ghc_targets }}
2427
CABAL_VERSION: ${{ inputs.cabal }}
28+
GMP_VERSION: ${{ inputs.gmp }}
2529
DEBIAN_FRONTEND: noninteractive
2630
TZ: Asia/Singapore
2731

@@ -60,89 +64,26 @@ jobs:
6064
fail-fast: false
6165
matrix:
6266
branch: ${{ fromJSON(inputs.branches) }}
63-
platform: [ { image: "debian:11"
64-
, installCmd: "apt-get update && apt-get install -y"
65-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
66-
, DISTRO: "Debian"
67-
, ARTIFACT: "x86_64-linux-deb11"
68-
, ADD_CABAL_ARGS: "--enable-split-sections"
69-
},
70-
{ image: "debian:12"
71-
, installCmd: "apt-get update && apt-get install -y"
72-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
73-
, DISTRO: "Debian"
74-
, ARTIFACT: "x86_64-linux-deb12"
75-
, ADD_CABAL_ARGS: "--enable-split-sections"
76-
},
77-
{ image: "ubuntu:20.04"
78-
, installCmd: "apt-get update && apt-get install -y"
79-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
80-
, DISTRO: "Ubuntu"
81-
, ARTIFACT: "x86_64-linux-ubuntu20.04"
82-
, ADD_CABAL_ARGS: "--enable-split-sections"
83-
},
84-
{ image: "ubuntu:22.04"
85-
, installCmd: "apt-get update && apt-get install -y"
86-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
87-
, DISTRO: "Ubuntu"
88-
, ARTIFACT: "x86_64-linux-ubuntu22.04"
89-
, ADD_CABAL_ARGS: "--enable-split-sections"
90-
},
91-
{ image: "ubuntu:24.04"
92-
, installCmd: "apt-get update && apt-get install -y"
93-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools_ncurses6 }}"
94-
, DISTRO: "Ubuntu"
95-
, ARTIFACT: "x86_64-linux-ubuntu24.04"
96-
, ADD_CABAL_ARGS: "--enable-split-sections"
97-
},
98-
{ image: "fedora:33"
99-
, installCmd: "dnf install -y"
100-
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
101-
, DISTRO: "Fedora"
102-
, ARTIFACT: "x86_64-linux-fedora33"
103-
, ADD_CABAL_ARGS: "--enable-split-sections"
104-
},
105-
{ image: "fedora:36"
106-
, installCmd: "dnf install -y"
107-
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
108-
, DISTRO: "Fedora"
109-
, ARTIFACT: "x86_64-linux-fedora36"
110-
, ADD_CABAL_ARGS: "--enable-split-sections"
111-
},
112-
{ image: "fedora:38"
113-
, installCmd: "dnf install -y"
114-
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
115-
, DISTRO: "Fedora"
116-
, ARTIFACT: "x86_64-linux-fedora38"
117-
, ADD_CABAL_ARGS: "--enable-split-sections"
118-
},
119-
{ image: "rockylinux:8"
67+
platform: [ { image: "rockylinux:8"
12068
, installCmd: "yum -y install epel-release && yum install -y --allowerasing"
12169
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
122-
, DISTRO: "Unknown"
123-
, ARTIFACT: "x86_64-linux-rocky8"
70+
, DISTRO: "Rockylinux"
71+
, ARTIFACT: "x86_64-linux-glibc"
12472
, ADD_CABAL_ARGS: "--enable-split-sections"
12573
},
12674
{ image: "alpine:3.20"
12775
, installCmd: "apk update && apk add"
12876
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
129-
, DISTRO: "Unknown"
130-
, ARTIFACT: "x86_64-linux-unknown"
131-
, ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
132-
},
133-
{ image: "alpine:3.12"
134-
, installCmd: "apk update && apk add"
135-
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
136-
, DISTRO: "Unknown"
137-
, ARTIFACT: "x86_64-linux-alpine312"
77+
, DISTRO: "Alpine"
78+
, ARTIFACT: "x86_64-linux-musl"
13879
, ADD_CABAL_ARGS: "--enable-split-sections"
13980
},
14081
{ image: "alpine:3.20"
14182
, installCmd: "apk update && apk add"
14283
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
143-
, DISTRO: "Unknown"
144-
, ARTIFACT: "x86_64-linux-alpine320"
145-
, ADD_CABAL_ARGS: "--enable-split-sections"
84+
, DISTRO: "Alpine"
85+
, ARTIFACT: "x86_64-linux-musl-static"
86+
, ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
14687
}
14788
]
14889
container:
@@ -162,6 +103,15 @@ jobs:
162103
with:
163104
ref: ${{ matrix.branch }}
164105

106+
- if: matrix.platform.DISTRO == 'Rockylinux'
107+
run: |
108+
curl -O -L https://gmplib.org/download/gmp/gmp-${{ env.GMP_VERSION }}.tar.xz
109+
tar xf gmp-${{ env.GMP_VERSION }}.tar.xz
110+
cd gmp-${{ env.GMP_VERSION }}
111+
./configure --prefix=$HOME/.local/ --disable-shared
112+
make install
113+
echo "extra-lib-dirs: $HOME/.local/lib/" >> cabal.release.project.local
114+
165115
- name: Run build
166116
run: |
167117
bash .github/scripts/build.sh
@@ -452,6 +402,7 @@ jobs:
452402
env:
453403
TARBALL_EXT: tar.xz
454404
ARCH: 64
405+
ADD_CABAL_ARGS: ""
455406
strategy:
456407
fail-fast: false
457408
matrix:
@@ -460,85 +411,103 @@ jobs:
460411
, installCmd: "apt-get update && apt-get install -y"
461412
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
462413
, DISTRO: "Debian"
463-
, ARTIFACT: "x86_64-linux-deb11"
464-
, ADD_CABAL_ARGS: "--enable-split-sections"
414+
, ARTIFACT: "x86_64-linux-glibc"
465415
},
466416
{ image: "debian:12"
467417
, installCmd: "apt-get update && apt-get install -y"
468418
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
469419
, DISTRO: "Debian"
470-
, ARTIFACT: "x86_64-linux-deb12"
471-
, ADD_CABAL_ARGS: "--enable-split-sections"
420+
, ARTIFACT: "x86_64-linux-glibc"
472421
},
473422
{ image: "ubuntu:20.04"
474423
, installCmd: "apt-get update && apt-get install -y"
475424
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
476425
, DISTRO: "Ubuntu"
477-
, ARTIFACT: "x86_64-linux-ubuntu20.04"
478-
, ADD_CABAL_ARGS: "--enable-split-sections"
426+
, ARTIFACT: "x86_64-linux-glibc"
479427
},
480428
{ image: "ubuntu:22.04"
481429
, installCmd: "apt-get update && apt-get install -y"
482430
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
483431
, DISTRO: "Ubuntu"
484-
, ARTIFACT: "x86_64-linux-ubuntu22.04"
485-
, ADD_CABAL_ARGS: "--enable-split-sections"
432+
, ARTIFACT: "x86_64-linux-glibc"
486433
},
487434
{ image: "ubuntu:24.04"
488435
, installCmd: "apt-get update && apt-get install -y"
489436
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools_ncurses6 }}"
490437
, DISTRO: "Ubuntu"
491-
, ARTIFACT: "x86_64-linux-ubuntu24.04"
492-
, ADD_CABAL_ARGS: "--enable-split-sections"
438+
, ARTIFACT: "x86_64-linux-glibc"
439+
},
440+
{ image: "linuxmintd/mint20.3-amd64"
441+
, installCmd: "apt-get update && apt-get install -y"
442+
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
443+
, DISTRO: "Mint"
444+
, ARTIFACT: "x86_64-linux-glibc"
445+
},
446+
{ image: "linuxmintd/mint21.3-amd64"
447+
, installCmd: "apt-get update && apt-get install -y"
448+
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
449+
, DISTRO: "Mint"
450+
, ARTIFACT: "x86_64-linux-glibc"
493451
},
494452
{ image: "fedora:33"
495453
, installCmd: "dnf install -y"
496454
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
497455
, DISTRO: "Fedora"
498-
, ARTIFACT: "x86_64-linux-fedora33"
499-
, ADD_CABAL_ARGS: "--enable-split-sections"
456+
, ARTIFACT: "x86_64-linux-glibc"
500457
},
501-
{ image: "fedora:36"
458+
{ image: "fedora:37"
502459
, installCmd: "dnf install -y"
503460
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
504461
, DISTRO: "Fedora"
505-
, ARTIFACT: "x86_64-linux-fedora36"
506-
, ADD_CABAL_ARGS: "--enable-split-sections"
462+
, ARTIFACT: "x86_64-linux-glibc"
507463
},
508-
{ image: "fedora:38"
464+
{ image: "fedora:42"
509465
, installCmd: "dnf install -y"
510466
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
511467
, DISTRO: "Fedora"
512-
, ARTIFACT: "x86_64-linux-fedora38"
513-
, ADD_CABAL_ARGS: "--enable-split-sections"
468+
, ARTIFACT: "x86_64-linux-glibc"
514469
},
515470
{ image: "rockylinux:8"
516471
, installCmd: "yum -y install epel-release && yum install -y --allowerasing"
517472
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
518-
, DISTRO: "Unknown"
519-
, ARTIFACT: "x86_64-linux-rocky8"
520-
, ADD_CABAL_ARGS: "--enable-split-sections"
473+
, DISTRO: "Rockylinux"
474+
, ARTIFACT: "x86_64-linux-glibc"
475+
},
476+
{ image: "rockylinux:9"
477+
, installCmd: "yum -y install epel-release && yum install -y --allowerasing"
478+
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
479+
, DISTRO: "Rockylinux"
480+
, ARTIFACT: "x86_64-linux-glibc"
521481
},
522482
{ image: "alpine:3.20"
523483
, installCmd: "apk update && apk add"
524484
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
525-
, DISTRO: "Unknown"
526-
, ARTIFACT: "x86_64-linux-unknown"
527-
, ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
485+
, DISTRO: "Alpine"
486+
, ARTIFACT: "x86_64-linux-musl-static"
528487
},
529488
{ image: "alpine:3.12"
530489
, installCmd: "apk update && apk add"
531490
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
532-
, DISTRO: "Unknown"
533-
, ARTIFACT: "x86_64-linux-alpine312"
534-
, ADD_CABAL_ARGS: "--enable-split-sections"
491+
, DISTRO: "Alpine"
492+
, ARTIFACT: "x86_64-linux-musl-static"
535493
},
536494
{ image: "alpine:3.20"
537495
, installCmd: "apk update && apk add"
538496
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
497+
, DISTRO: "Alpine"
498+
, ARTIFACT: "x86_64-linux-musl"
499+
},
500+
{ image: "alpine:3.12"
501+
, installCmd: "apk update && apk add"
502+
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
503+
, DISTRO: "Alpine"
504+
, ARTIFACT: "x86_64-linux-musl"
505+
},
506+
{ image: "ghcr.io/void-linux/void-glibc:latest"
507+
, installCmd: "xbps-install -Suy xbps && xbps-install -Sy"
508+
, toolRequirements: "${{ needs.tool-output.outputs.xbps_tools }}"
539509
, DISTRO: "Unknown"
540-
, ARTIFACT: "x86_64-linux-alpine320"
541-
, ADD_CABAL_ARGS: "--enable-split-sections"
510+
, ARTIFACT: "x86_64-linux-musl-static"
542511
}
543512
]
544513
container:

0 commit comments

Comments
 (0)