-
Notifications
You must be signed in to change notification settings - Fork 1
110 lines (97 loc) · 3.65 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# inspired by https://github.com/shssoichiro/oxipng/blob/15ecc9ed00199f1fbfe0989d67a43ff3e6faff6a/.github/workflows/oxipng.yml
name: build
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
name: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
target:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- x86_64-pc-windows-msvc
- i686-pc-windows-msvc
- x86_64-apple-darwin
- aarch64-apple-darwin
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
target-apt-arch: amd64
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
target-apt-arch: amd64
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
target-apt-arch: arm64
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
target-apt-arch: arm64
- target: x86_64-pc-windows-msvc
os: windows-latest
- target: i686-pc-windows-msvc
os: windows-latest
- target: x86_64-apple-darwin
os: macos-latest
- target: aarch64-apple-darwin
os: macos-latest
env:
PROJECT_NAME: autocrap
CARGO_BUILD_TARGET: ${{ matrix.target }}
CARGO_TERM_COLOR: always
MACOSX_DEPLOYMENT_TARGET: 10.12
RUSTFLAGS:
steps:
- name: checkout
uses: actions/checkout@v4
# - name: set up Ubuntu multiarch
# if: startsWith(matrix.os, 'ubuntu') && matrix.target-apt-arch != 'amd64'
# run: |
# readonly DISTRO_CODENAME=$(lsb_release -c | sed -E 's/Codename:\s*//')
# echo "DISTRO_CODENAME=$DISTRO_CODENAME"
# sudo dpkg --add-architecture "${{ matrix.target-apt-arch }}"
# sudo sed -i "s/^deb http/deb [arch=$(dpkg-architecture -q DEB_HOST_ARCH)] http/" /etc/apt/sources.list
# sudo sed -i "s/^deb mirror/deb [arch=$(dpkg-architecture -q DEB_HOST_ARCH)] mirror/" /etc/apt/sources.list
# for suite in '' '-updates' '-backports' '-security'; do
# echo "deb [arch=${{ matrix.target-apt-arch }}] http://ports.ubuntu.com/ $DISTRO_CODENAME$suite main universe multiverse" | \
# sudo tee -a /etc/apt/sources.list >/dev/null
# done
# - name: cache QEMU and AArch64 cross compiler
# if: startsWith(matrix.target, 'aarch64-unknown-linux')
# uses: awalsh128/cache-apt-pkgs-action@latest
# with:
# packages: qemu-user gcc-aarch64-linux-gnu libc6:arm64
# version: 1.0
# - name: cache musl development files
# if: endsWith(matrix.target, '-musl')
# uses: awalsh128/cache-apt-pkgs-action@latest
# with:
# packages: musl-tools musl-dev:${{ matrix.target-apt-arch }}
# version: 1.0
- name: cache apt packages
if: startsWith(matrix.os, 'ubuntu')
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libasound2-dev
version: 1.0
- name: build
uses: houseabsolute/actions-rust-cross@v0
with:
command: build
target: ${{ matrix.target }}
args: "--verbose"
strip: true
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.PROJECT_NAME }}-${{ matrix.target }}
path: |
target/${{ matrix.target }}/debug/${{ env.PROJECT_NAME }}
target/${{ matrix.target }}/debug/${{ env.PROJECT_NAME }}.exe