#!/bin/bash # # Usage: ./build-release ${TRAVIS_TAG}-${TRAVIS_OS_NAME} # # The latest version of this script is available at # https://github.com/emk/rust-musl-builder/blob/master/examples/build-release # # Called by `.travis.yml` to build release binaries. We use # ekidd/rust-musl-builder to make the Linux binaries so that we can run # them unchanged on any distro, including tiny distros like Alpine (which # is heavily used for Docker containers). Other platforms get regular # binaries, which will generally be dynamically linked against libc. # # If you have a platform which supports static linking of libc, and this # would be generally useful, please feel free to submit patches. set -euo pipefail case `uname -s` in Linux) echo "Building static binaries using ekidd/rust-musl-builder" docker pull clux/muslrust docker run -v $PWD:/volume --rm -t clux/muslrust cargo build --release cp "target/x86_64-unknown-linux-musl/release/$1" "$1" tar -czvf "$1-$2.tar.gz" "$1" sha256sum "$1-$2.tar.gz" ;; *) echo "Building standard release binaries" cargo build --release zip -j "$1"-"$2".zip target/release/"$1" ;; esac