Skip to content

Commit 4e0c11a

Browse files
authored
Merge pull request #173 from xsnippet/cross2
Cross-compile binaries for aarch64-unknown-linux-gnu (alternative)
2 parents e459602 + 09c6f6e commit 4e0c11a

File tree

2 files changed

+30
-16
lines changed

2 files changed

+30
-16
lines changed

.github/workflows/release.yml

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,19 @@ jobs:
4747

4848
strategy:
4949
matrix:
50-
os:
51-
- ubuntu-latest
52-
- windows-latest
53-
- macos-latest
50+
include:
51+
- target: x86_64-unknown-linux-gnu
52+
os: ubuntu-latest
53+
name: xsnippet-api-x86_64-linux.gz
54+
- target: aarch64-unknown-linux-gnu
55+
os: ubuntu-latest
56+
name: xsnippet-api-aarch64-linux.gz
57+
- target: x86_64-pc-windows-msvc
58+
os: windows-latest
59+
name: xsnippet-api-x86_64-windows.exe.7z
60+
- target: aarch64-apple-darwin
61+
os: macos-latest
62+
name: xsnippet-api-aarch64-macos.gz
5463

5564
runs-on: ${{ matrix.os }}
5665

@@ -66,31 +75,31 @@ jobs:
6675
- name: Setup PostgreSQL
6776
uses: ikalnytskyi/action-setup-postgres@v6
6877

69-
- uses: actions-rs/cargo@v1
70-
with:
71-
command: build
72-
args: --release
73-
7478
- id: build
7579
run: |
76-
rustc --print cfg | grep = > rustc.vars
77-
source rustc.vars
80+
export HOST=$(rustc +nightly -Z unstable-options --print target-spec-json | jq --raw-output '."llvm-target"')
81+
if [ "$HOST" = "$TARGET" ]; then
82+
cargo build --release --target ${TARGET}
83+
else
84+
cargo install cross
85+
cross build --release --target ${TARGET}
86+
fi
7887
79-
pushd target/release
80-
if [ "$RUNNER_OS" == "Windows" ]; then
81-
export ASSET_NAME="xsnippet-api-${target_arch}-${target_os}.exe.7z"
88+
pushd target/${TARGET}/release
89+
if [ "$TARGET" =~ "windows" ]; then
8290
7z a $ASSET_NAME xsnippet-api.exe
8391
else
84-
export ASSET_NAME="xsnippet-api-${target_arch}-${target_os}.gz"
8592
tar cvzf $ASSET_NAME xsnippet-api
8693
fi
8794
gh release upload $RELEASE_TAG $ASSET_NAME
8895
popd
8996
90-
echo "asset_path=target/release/$ASSET_NAME" >> $GITHUB_OUTPUT
97+
echo "asset_path=$PWD/$ASSET_NAME" >> $GITHUB_OUTPUT
9198
env:
99+
ASSET_NAME: ${{ matrix.name }}
92100
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
93101
GH_REPO: ${{ env.GITHUB_REPOSITORY }}
102+
TARGET: ${{ matrix.target }}
94103
RELEASE_TAG: ${{ needs.create_release.outputs.release_tag }}
95104

96105
- uses: actions/attest-build-provenance@v1

Cross.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[build]
2+
pre-build = [
3+
"dpkg --add-architecture $CROSS_DEB_ARCH",
4+
"apt-get update && apt-get install --assume-yes libssl-dev:$CROSS_DEB_ARCH libpq-dev:$CROSS_DEB_ARCH"
5+
]

0 commit comments

Comments
 (0)