Skip to content

Commit e71ab46

Browse files
committed
begin splitting precompile into separate workflows
1 parent e008e04 commit e71ab46

File tree

2 files changed

+142
-43
lines changed

2 files changed

+142
-43
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: precompile
2+
3+
on:
4+
push:
5+
branches:
6+
- 'precompile-woes'
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
precompile:
13+
runs-on: ubuntu-20.04
14+
env:
15+
MIX_ENV: prod
16+
strategy:
17+
matrix:
18+
job:
19+
- {otp: "27", elixir: "1.17", nif: "2.17"}
20+
- {otp: "26", elixir: "1.16", nif: "2.16"}
21+
- {otp: "24", elixir: "1.13", nif: "2.15"}
22+
23+
name: Linux x86_64 - OTP ${{ matrix.job.otp }} - Elixir ${{ matrix.job.elixir }}
24+
steps:
25+
- name: Checkout
26+
uses: actions/checkout@v4
27+
28+
- uses: erlef/setup-beam@v1
29+
with:
30+
otp-version: ${{ matrix.job.otp }}
31+
elixir-version: ${{ matrix.job.elixir }}
32+
33+
- name: Install system dependecies
34+
run: |
35+
sudo apt-get update
36+
sudo apt-get install -y build-essential automake autoconf pkg-config bc m4 unzip zip \
37+
gcc g++ \
38+
gcc-i686-linux-gnu g++-i686-linux-gnu \
39+
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
40+
gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \
41+
gcc-riscv64-linux-gnu g++-riscv64-linux-gnu \
42+
gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu \
43+
gcc-s390x-linux-gnu g++-s390x-linux-gnu
44+
45+
- name: Get musl cross-compilers
46+
run: |
47+
for musl_arch in x86_64 aarch64 riscv64
48+
do
49+
wget "https://musl.cc/${musl_arch}-linux-musl-cross.tgz" -O "${musl_arch}-linux-musl-cross.tgz"
50+
tar -xf "${musl_arch}-linux-musl-cross.tgz"
51+
done
52+
53+
- name: Create precompiled x86_64 library
54+
run: |
55+
export PATH="$(pwd)/x86_64-linux-musl-cross/bin:${PATH}"
56+
export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
57+
mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
58+
mix deps.get
59+
mix elixir_make.precompile
60+
61+
- name: Create precompiled aarch64 library
62+
run: |
63+
export PATH="$(pwd)/aarch64-linux-musl-cross/bin:${PATH}"
64+
export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
65+
mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
66+
mix deps.get
67+
mix elixir_make.precompile
68+
69+
- name: Create precompiled riscv64 library
70+
run: |
71+
export PATH="$(pwd)/riscv64-linux-musl-cross/bin:${PATH}"
72+
export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
73+
mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
74+
mix deps.get
75+
mix elixir_make.precompile
76+
77+
# - uses: softprops/action-gh-release@v1
78+
# if: startsWith(github.ref, 'refs/tags/')
79+
# with:
80+
# files: |
81+
# cache/*.tar.gz

.github/workflows/precompile.yml

Lines changed: 61 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,61 +15,79 @@ jobs:
1515
MIX_ENV: prod
1616
strategy:
1717
matrix:
18-
otp_version: ["25"]
18+
job:
19+
- {otp: "27", elixir: "1.17", nif: "2.17"}
20+
- {otp: "26", elixir: "1.16", nif: "2.16"}
21+
- {otp: "24", elixir: "1.13", nif: "2.15"}
1922

20-
name: Linux x86_64 - OTP ${{ matrix.otp_version }}
23+
name: Linux x86_64 - OTP ${{ matrix.job.otp }} - Elixir ${{ matrix.job.elixir }}
2124
steps:
2225
- name: Checkout
2326
uses: actions/checkout@v4
2427

2528
- uses: erlef/setup-beam@v1
2629
with:
27-
otp-version: ${{ matrix.otp_version }}
28-
elixir-version: "1.14"
30+
otp-version: ${{ matrix.job.otp }}
31+
elixir-version: ${{ matrix.job.elixir }}
2932

30-
- name: Install system dependecies
31-
run: |
32-
sudo apt-get update
33-
sudo apt-get install -y build-essential automake autoconf pkg-config bc m4 unzip zip \
34-
gcc g++ \
35-
gcc-i686-linux-gnu g++-i686-linux-gnu \
36-
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
37-
gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \
38-
gcc-riscv64-linux-gnu g++-riscv64-linux-gnu \
39-
gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu \
40-
gcc-s390x-linux-gnu g++-s390x-linux-gnu
33+
# - name: Install system dependecies
34+
# run: |
35+
# sudo apt-get update
36+
# sudo apt-get install -y build-essential automake autoconf pkg-config bc m4 unzip zip \
37+
# gcc g++ \
38+
# gcc-i686-linux-gnu g++-i686-linux-gnu \
39+
# gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
40+
# gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \
41+
# gcc-riscv64-linux-gnu g++-riscv64-linux-gnu \
42+
# gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu \
43+
# gcc-s390x-linux-gnu g++-s390x-linux-gnu
4144

42-
- name: Get musl cross-compilers
43-
run: |
44-
for musl_arch in x86_64 aarch64 riscv64
45-
do
46-
wget "https://musl.cc/${musl_arch}-linux-musl-cross.tgz" -O "${musl_arch}-linux-musl-cross.tgz"
47-
tar -xf "${musl_arch}-linux-musl-cross.tgz"
48-
done
45+
# - name: Get musl cross-compilers
46+
# run: |
47+
# for musl_arch in x86_64 aarch64 riscv64
48+
# do
49+
# wget "https://musl.cc/${musl_arch}-linux-musl-cross.tgz" -O "${musl_arch}-linux-musl-cross.tgz"
50+
# tar -xf "${musl_arch}-linux-musl-cross.tgz"
51+
# done
4952

50-
- name: Create precompiled x86_64 library
51-
run: |
52-
export PATH="$(pwd)/x86_64-linux-musl-cross/bin:${PATH}"
53-
export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
54-
mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
55-
mix deps.get
56-
mix elixir_make.precompile
53+
# - name: Create precompiled x86_64 library
54+
# run: |
55+
# export PATH="$(pwd)/x86_64-linux-musl-cross/bin:${PATH}"
56+
# export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
57+
# mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
58+
# mix deps.get
59+
# mix elixir_make.precompile
5760

58-
- name: Create precompiled aarch64 library
59-
run: |
60-
export PATH="$(pwd)/aarch64-linux-musl-cross/bin:${PATH}"
61-
export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
62-
mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
63-
mix deps.get
64-
mix elixir_make.precompile
61+
# - name: Create precompiled aarch64 library
62+
# run: |
63+
# export PATH="$(pwd)/aarch64-linux-musl-cross/bin:${PATH}"
64+
# export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
65+
# mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
66+
# mix deps.get
67+
# mix elixir_make.precompile
68+
69+
# - name: Create precompiled riscv64 library
70+
# run: |
71+
# export PATH="$(pwd)/riscv64-linux-musl-cross/bin:${PATH}"
72+
# export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
73+
# mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
74+
# mix deps.get
75+
# mix elixir_make.precompile
6576

66-
- name: Create precompiled riscv64 library
67-
run: |
68-
export PATH="$(pwd)/riscv64-linux-musl-cross/bin:${PATH}"
69-
export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache
70-
mkdir -p "${ELIXIR_MAKE_CACHE_DIR}"
71-
mix deps.get
72-
mix elixir_make.precompile
77+
# - uses: softprops/action-gh-release@v1
78+
# if: startsWith(github.ref, 'refs/tags/')
79+
# with:
80+
# files: |
81+
# cache/*.tar.gz
82+
# macos:
83+
# runs-on: ubuntu-20.04
84+
# env:
85+
# MIX_ENV: prod
86+
# ELIXIR_VERSION: "1.16.0"
87+
# strategy:
88+
# matrix:
89+
# job:
90+
# - {otp: "25", elixir: "1.16"}
7391

7492
# precompile:
7593
# runs-on: ${{ matrix.job.os }}

0 commit comments

Comments
 (0)