aboutsummaryrefslogtreecommitdiffstats
path: root/ci/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ci/install.sh')
-rw-r--r--ci/install.sh58
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
+