Skip to content

Commit 24dac14

Browse files
committed
Only build 2 flavors of linux binaries
- glibc (dynamic) - musl (fully static) 'gmp' and 'zlib' are always statically linked.
1 parent b0e5e78 commit 24dac14

File tree

1 file changed

+69
-108
lines changed

1 file changed

+69
-108
lines changed

.github/workflows/reusable-release.yml

Lines changed: 69 additions & 108 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
@@ -25,6 +28,7 @@ env:
2528
GHC_VERSION: ${{ inputs.ghc }}
2629
GHC_TARGETS: ${{ inputs.ghc_targets }}
2730
CABAL_VERSION: ${{ inputs.cabal }}
31+
GMP_VERSION: ${{ inputs.gmp }}
2832
BOOTSTRAP_HASKELL_NONINTERACTIVE: 1
2933
BOOTSTRAP_HASKELL_MINIMAL: 1
3034
DEBIAN_FRONTEND: noninteractive
@@ -65,89 +69,19 @@ jobs:
6569
fail-fast: false
6670
matrix:
6771
branch: ${{ fromJSON(inputs.branches) }}
68-
platform: [ { image: "debian:11"
69-
, installCmd: "apt-get update && apt-get install -y"
70-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
71-
, DISTRO: "Debian"
72-
, ARTIFACT: "x86_64-linux-deb11"
73-
, ADD_CABAL_ARGS: "--enable-split-sections"
74-
},
75-
{ image: "debian:12"
76-
, installCmd: "apt-get update && apt-get install -y"
77-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
78-
, DISTRO: "Debian"
79-
, ARTIFACT: "x86_64-linux-deb12"
80-
, ADD_CABAL_ARGS: "--enable-split-sections"
81-
},
82-
{ image: "ubuntu:20.04"
83-
, installCmd: "apt-get update && apt-get install -y"
84-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
85-
, DISTRO: "Ubuntu"
86-
, ARTIFACT: "x86_64-linux-ubuntu20.04"
87-
, ADD_CABAL_ARGS: "--enable-split-sections"
88-
},
89-
{ image: "ubuntu:22.04"
90-
, installCmd: "apt-get update && apt-get install -y"
91-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
92-
, DISTRO: "Ubuntu"
93-
, ARTIFACT: "x86_64-linux-ubuntu22.04"
94-
, ADD_CABAL_ARGS: "--enable-split-sections"
95-
},
96-
{ image: "ubuntu:24.04"
97-
, installCmd: "apt-get update && apt-get install -y"
98-
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools_ncurses6 }}"
99-
, DISTRO: "Ubuntu"
100-
, ARTIFACT: "x86_64-linux-ubuntu24.04"
101-
, ADD_CABAL_ARGS: "--enable-split-sections"
102-
},
103-
{ image: "fedora:33"
104-
, installCmd: "dnf install -y"
105-
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
106-
, DISTRO: "Fedora"
107-
, ARTIFACT: "x86_64-linux-fedora33"
108-
, ADD_CABAL_ARGS: "--enable-split-sections"
109-
},
110-
{ image: "fedora:36"
111-
, installCmd: "dnf install -y"
112-
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
113-
, DISTRO: "Fedora"
114-
, ARTIFACT: "x86_64-linux-fedora36"
115-
, ADD_CABAL_ARGS: "--enable-split-sections"
116-
},
117-
{ image: "fedora:38"
118-
, installCmd: "dnf install -y"
119-
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
120-
, DISTRO: "Fedora"
121-
, ARTIFACT: "x86_64-linux-fedora38"
122-
, ADD_CABAL_ARGS: "--enable-split-sections"
123-
},
124-
{ image: "rockylinux:8"
72+
platform: [ { image: "rockylinux:8"
12573
, installCmd: "yum -y install epel-release && yum install -y --allowerasing"
12674
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
127-
, DISTRO: "Unknown"
128-
, ARTIFACT: "x86_64-linux-rocky8"
75+
, DISTRO: "Rockylinux"
76+
, ARTIFACT: "x86_64-linux-glibc"
12977
, ADD_CABAL_ARGS: "--enable-split-sections"
13078
},
13179
{ image: "alpine:3.20"
13280
, installCmd: "apk update && apk add"
13381
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
134-
, DISTRO: "Unknown"
135-
, ARTIFACT: "x86_64-linux-unknown"
82+
, DISTRO: "Alpine"
83+
, ARTIFACT: "x86_64-linux-musl-static"
13684
, ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
137-
},
138-
{ image: "alpine:3.12"
139-
, installCmd: "apk update && apk add"
140-
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
141-
, DISTRO: "Unknown"
142-
, ARTIFACT: "x86_64-linux-alpine312"
143-
, ADD_CABAL_ARGS: "--enable-split-sections"
144-
},
145-
{ image: "alpine:3.20"
146-
, installCmd: "apk update && apk add"
147-
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
148-
, DISTRO: "Unknown"
149-
, ARTIFACT: "x86_64-linux-alpine320"
150-
, ADD_CABAL_ARGS: "--enable-split-sections"
15185
}
15286
]
15387
container:
@@ -167,15 +101,35 @@ jobs:
167101
with:
168102
ref: ${{ matrix.branch }}
169103

104+
- name: install GMP
105+
if: matrix.platform.DISTRO == 'Rockylinux'
106+
run: |
107+
set -eux
108+
109+
curl -O -L https://gmplib.org/download/gmp/gmp-${{ env.GMP_VERSION }}.tar.xz
110+
tar xf gmp-${{ env.GMP_VERSION }}.tar.xz
111+
cd gmp-${{ env.GMP_VERSION }}
112+
CFLAGS=-fPIC ./configure --prefix=$HOME/.local/ --disable-shared
113+
make install
114+
cd ..
115+
echo "extra-lib-dirs: $HOME/.local/lib/" >> cabal.release.project.local
116+
170117
- name: Run build
171118
run: |
172119
bash .github/scripts/build.sh
173-
174120
env:
175121
ARTIFACT: ${{ matrix.platform.ARTIFACT }}
176122
DISTRO: ${{ matrix.platform.DISTRO }}
177123
ADD_CABAL_ARGS: ${{ matrix.platform.ADD_CABAL_ARGS }}
178124

125+
- name: check linking
126+
if: matrix.platform.DISTRO == 'Rockylinux'
127+
run: |
128+
cd out
129+
tar xf *.${TARBALL_EXT}
130+
ldd cabal | grep --quiet gmp && exit 1
131+
rm cabal plan.json
132+
179133
- if: always()
180134
name: Upload artifact
181135
uses: ./.github/actions/upload
@@ -460,6 +414,7 @@ jobs:
460414
env:
461415
TARBALL_EXT: tar.xz
462416
ARCH: 64
417+
ADD_CABAL_ARGS: ""
463418
strategy:
464419
fail-fast: false
465420
matrix:
@@ -468,85 +423,91 @@ jobs:
468423
, installCmd: "apt-get update && apt-get install -y"
469424
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
470425
, DISTRO: "Debian"
471-
, ARTIFACT: "x86_64-linux-deb11"
472-
, ADD_CABAL_ARGS: "--enable-split-sections"
426+
, ARTIFACT: "x86_64-linux-glibc"
473427
},
474428
{ image: "debian:12"
475429
, installCmd: "apt-get update && apt-get install -y"
476430
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
477431
, DISTRO: "Debian"
478-
, ARTIFACT: "x86_64-linux-deb12"
479-
, ADD_CABAL_ARGS: "--enable-split-sections"
432+
, ARTIFACT: "x86_64-linux-glibc"
480433
},
481434
{ image: "ubuntu:20.04"
482435
, installCmd: "apt-get update && apt-get install -y"
483436
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
484437
, DISTRO: "Ubuntu"
485-
, ARTIFACT: "x86_64-linux-ubuntu20.04"
486-
, ADD_CABAL_ARGS: "--enable-split-sections"
438+
, ARTIFACT: "x86_64-linux-glibc"
487439
},
488440
{ image: "ubuntu:22.04"
489441
, installCmd: "apt-get update && apt-get install -y"
490442
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
491443
, DISTRO: "Ubuntu"
492-
, ARTIFACT: "x86_64-linux-ubuntu22.04"
493-
, ADD_CABAL_ARGS: "--enable-split-sections"
444+
, ARTIFACT: "x86_64-linux-glibc"
494445
},
495446
{ image: "ubuntu:24.04"
496447
, installCmd: "apt-get update && apt-get install -y"
497448
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools_ncurses6 }}"
498449
, DISTRO: "Ubuntu"
499-
, ARTIFACT: "x86_64-linux-ubuntu24.04"
500-
, ADD_CABAL_ARGS: "--enable-split-sections"
450+
, ARTIFACT: "x86_64-linux-glibc"
451+
},
452+
{ image: "linuxmintd/mint20.3-amd64"
453+
, installCmd: "apt-get update && apt-get install -y"
454+
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
455+
, DISTRO: "Mint"
456+
, ARTIFACT: "x86_64-linux-glibc"
457+
},
458+
{ image: "linuxmintd/mint21.3-amd64"
459+
, installCmd: "apt-get update && apt-get install -y"
460+
, toolRequirements: "${{ needs.tool-output.outputs.apt_tools }}"
461+
, DISTRO: "Mint"
462+
, ARTIFACT: "x86_64-linux-glibc"
501463
},
502464
{ image: "fedora:33"
503465
, installCmd: "dnf install -y"
504466
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
505467
, DISTRO: "Fedora"
506-
, ARTIFACT: "x86_64-linux-fedora33"
507-
, ADD_CABAL_ARGS: "--enable-split-sections"
468+
, ARTIFACT: "x86_64-linux-glibc"
508469
},
509-
{ image: "fedora:36"
470+
{ image: "fedora:37"
510471
, installCmd: "dnf install -y"
511472
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
512473
, DISTRO: "Fedora"
513-
, ARTIFACT: "x86_64-linux-fedora36"
514-
, ADD_CABAL_ARGS: "--enable-split-sections"
474+
, ARTIFACT: "x86_64-linux-glibc"
515475
},
516-
{ image: "fedora:38"
476+
{ image: "fedora:42"
517477
, installCmd: "dnf install -y"
518478
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
519479
, DISTRO: "Fedora"
520-
, ARTIFACT: "x86_64-linux-fedora38"
521-
, ADD_CABAL_ARGS: "--enable-split-sections"
480+
, ARTIFACT: "x86_64-linux-glibc"
522481
},
523482
{ image: "rockylinux:8"
524483
, installCmd: "yum -y install epel-release && yum install -y --allowerasing"
525484
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
526-
, DISTRO: "Unknown"
527-
, ARTIFACT: "x86_64-linux-rocky8"
528-
, ADD_CABAL_ARGS: "--enable-split-sections"
485+
, DISTRO: "Rockylinux"
486+
, ARTIFACT: "x86_64-linux-glibc"
487+
},
488+
{ image: "rockylinux:9"
489+
, installCmd: "yum -y install epel-release && yum install -y --allowerasing"
490+
, toolRequirements: "${{ needs.tool-output.outputs.rpm_tools }}"
491+
, DISTRO: "Rockylinux"
492+
, ARTIFACT: "x86_64-linux-glibc"
529493
},
530494
{ image: "alpine:3.20"
531495
, installCmd: "apk update && apk add"
532496
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
533-
, DISTRO: "Unknown"
534-
, ARTIFACT: "x86_64-linux-unknown"
535-
, ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
497+
, DISTRO: "Alpine"
498+
, ARTIFACT: "x86_64-linux-musl-static"
536499
},
537500
{ image: "alpine:3.12"
538501
, installCmd: "apk update && apk add"
539502
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
540-
, DISTRO: "Unknown"
541-
, ARTIFACT: "x86_64-linux-alpine312"
542-
, ADD_CABAL_ARGS: "--enable-split-sections"
503+
, DISTRO: "Alpine"
504+
, ARTIFACT: "x86_64-linux-musl-static"
543505
},
544-
{ image: "alpine:3.20"
545-
, installCmd: "apk update && apk add"
546-
, toolRequirements: "${{ needs.tool-output.outputs.apk_tools }}"
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 }}"
547509
, DISTRO: "Unknown"
548-
, ARTIFACT: "x86_64-linux-alpine320"
549-
, ADD_CABAL_ARGS: "--enable-split-sections"
510+
, ARTIFACT: "x86_64-linux-musl-static"
550511
}
551512
]
552513
container:

0 commit comments

Comments
 (0)