release.sh (916B)
1 #!/bin/bash 2 # This is used to build cross platform linux binaries for a release in CI. 3 # Since this is not supervised, abort if anything does not work. 4 set -e 5 6 sudo apt update 7 # Cross-compiling needs a linker for the respective platforms. If you are on a Debian-based x86_64 Linux, 8 # you can install them with: 9 sudo apt -y install podman gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu 10 # Also install cross compilation tool for cargo 11 cargo install cross 12 13 for i in x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu arm-unknown-linux-gnueabihf armv7-unknown-linux-gnueabihf 14 do 15 cross build --verbose --release --target $i 16 cp target/$i/release/agate agate.$i 17 done 18 19 # Strip all the binaries. 20 strip agate.x86_64-unknown-linux-gnu 21 aarch64-linux-gnu-strip agate.aarch64-unknown-linux-gnu 22 arm-linux-gnueabihf-strip agate.arm-unknown-linux-gnueabihf agate.armv7-unknown-linux-gnueabihf 23 24 # compress the binaries. 25 gzip agate.*