Skip to content

Commit 6cbe71f

Browse files
committed
Precompile artifacts for musl
1 parent 56bfe7c commit 6cbe71f

File tree

2 files changed

+46
-2
lines changed

2 files changed

+46
-2
lines changed

.github/workflows/release.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Install system dependencies
2727
run: |
2828
apt-get update
29-
apt-get install -y curl git cmake \
29+
apt-get install -y curl wget git cmake \
3030
build-essential automake autoconf cmake pkg-config bc m4 unzip zip \
3131
gcc g++ \
3232
gcc-i686-linux-gnu g++-i686-linux-gnu \
@@ -35,6 +35,16 @@ jobs:
3535
gcc-riscv64-linux-gnu g++-riscv64-linux-gnu \
3636
gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu \
3737
gcc-s390x-linux-gnu g++-s390x-linux-gnu
38+
- name: Get musl cross-compilers
39+
run: |
40+
for musl_arch in x86_64 aarch64 riscv64; do
41+
# We use a musl.cc mirror, see https://github.com/orgs/community/discussions/27906.
42+
musl_cc_url="https://github.com/jonatanklosko/musl_cc_mirror/releases/download/20250915-100603"
43+
wget "${musl_cc_url}/${musl_arch}-linux-musl-cross.tgz" -O "${musl_arch}-linux-musl-cross.tgz" --no-verbose
44+
tar -xf "${musl_arch}-linux-musl-cross.tgz"
45+
46+
echo "$(pwd)/${musl_arch}-linux-musl-cross/bin" >> $GITHUB_PATH
47+
done
3848
- uses: erlef/setup-beam@v1
3949
with:
4050
otp-version: ${{ matrix.otp_version }}

mix.exs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,41 @@ defmodule LazyHTML.MixProject do
2929
make_precompiler: {:nif, CCPrecompiler},
3030
make_precompiler_url: "#{@github_url}/releases/download/v#{@version}/@{artefact_filename}",
3131
make_precompiler_filename: "liblazy_html",
32-
make_precompiler_nif_versions: [versions: ["2.16"]]
32+
make_precompiler_nif_versions: [versions: ["2.16"]],
33+
cc_precompiler: [
34+
# Defaults + musl
35+
compilers: %{
36+
{:unix, :linux} => %{
37+
"x86_64-linux-gnu" => "x86_64-linux-gnu-",
38+
"i686-linux-gnu" => "i686-linux-gnu-",
39+
"aarch64-linux-gnu" => "aarch64-linux-gnu-",
40+
"armv7l-linux-gnueabihf" => "arm-linux-gnueabihf-",
41+
"riscv64-linux-gnu" => "riscv64-linux-gnu-",
42+
"powerpc64le-linux-gnu" => "powerpc64le-linux-gnu-",
43+
"s390x-linux-gnu" => "s390x-linux-gnu-",
44+
45+
"x86_64-linux-musl" => "x86_64-linux-musl-",
46+
"aarch64-linux-musl" => "aarch64-linux-musl-"
47+
},
48+
{:unix, :darwin} => %{
49+
"x86_64-apple-darwin" => {
50+
"gcc",
51+
"g++",
52+
"<%= cc %> -arch x86_64",
53+
"<%= cxx %> -arch x86_64"
54+
},
55+
"aarch64-apple-darwin" => {
56+
"gcc",
57+
"g++",
58+
"<%= cc %> -arch arm64",
59+
"<%= cxx %> -arch arm64"
60+
}
61+
},
62+
{:win32, :nt} => %{
63+
"x86_64-windows-msvc" => {"cl", "cl"}
64+
}
65+
}
66+
]
3367
]
3468
end
3569

0 commit comments

Comments
 (0)