#!/usr/bin/with-contenv bash set -e RUST_BINS_PATH="/rust-bins" ALPINE_RELEASE_PATH="/etc/alpine-release" PACKAGES_TO_INSTALL_LIST="/mod-repo-packages-to-install.list" ARCH=$(uname -m) SUPPORTED_ARCHS=("x86_64" "aarch64") if [[ ! " ${SUPPORTED_ARCHS[@]} " =~ " ${ARCH} " ]]; then echo "+++ unsupported architecture: $ARCH +++" exit 1 fi MUSL_OR_GNU=$(ldd /bin/sh | grep -q musl && echo "musl" || echo "gnu") RUST_BINARY_ARCHIVE_PATH="$RUST_BINS_PATH/rust-$ARCH-$MUSL_OR_GNU.tar.gz" grep_os_release() { grep -q "$1" /etc/os-release && echo true || echo false } if [[ -f "$RUST_BINARY_ARCHIVE_PATH" ]]; then echo "+++ unpacking rust tar +++" tar -xzf "$RUST_BINARY_ARCHIVE_PATH" -C "$RUST_BINS_PATH" --strip-components=1 if [[ -f "$ALPINE_RELEASE_PATH" ]]; then # in alpine ldconfig requires the configuration directory sed -i 's/ldconfig/ldconfig \/etc\/ld.so.conf.d/g' "$RUST_BINS_PATH/install.sh" fi echo "+++ installing rust +++" "$RUST_BINS_PATH/install.sh" rm -rf "$RUST_BINS_PATH" echo "+++ adding build tools +++" if grep_os_release "debian"; then echo "build-essential" >>"$PACKAGES_TO_INSTALL_LIST" elif grep_os_release "alpine"; then echo "build-base" >>"$PACKAGES_TO_INSTALL_LIST" else echo "gcc" >>"$PACKAGES_TO_INSTALL_LIST" fi else echo "+++ rust tar not found +++" fi