diff options
Diffstat (limited to 'ci/install.sh')
| -rw-r--r-- | ci/install.sh | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/ci/install.sh b/ci/install.sh new file mode 100644 index 0000000..e3f904a --- /dev/null +++ b/ci/install.sh @@ -0,0 +1,58 @@ +# `install` phase: install stuff needed for the `script` phase + +set -ex + +. $(dirname $0)/utils.sh + +install_c_toolchain() { + case $TARGET in + aarch64-unknown-linux-gnu) + sudo apt-get install -y --no-install-recommends \ + gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross + ;; + *) + # For other targets, this is handled by addons.apt.packages in .travis.yml + ;; + esac +} + +install_rustup() { + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=$TRAVIS_RUST_VERSION + + rustc -V + cargo -V +} + +install_standard_crates() { + if [ $(host) != "$TARGET" ]; then + rustup target add $TARGET + fi +} + +configure_cargo() { + local prefix=$(gcc_prefix) + + if [ ! -z $prefix ]; then + # information about the cross compiler + ${prefix}gcc -v + + # tell cargo which linker to use for cross compilation + mkdir -p .cargo + cat >>.cargo/config <<EOF +[target.$TARGET] +linker = "${prefix}gcc" +EOF + fi +} + +main() { + install_c_toolchain + install_rustup + install_standard_crates + configure_cargo + + # TODO if you need to install extra stuff add it here +} + +main + |
