Tim Crawford cf7fc2c540 scripts: Update rustup or inform user of env vars
Ensure rustup is up-to-date to avoid users having a version that is too
old to support the TOML format.

If rustup was just installed, tell the user to source the new env vars
to use the correct version of the toolchain.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-02-28 16:00:54 -07:00

141 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eE
function msg {
echo -e "\x1B[1m$*\x1B[0m" >&2
}
trap 'msg "\x1B[31mFailed to install dependencies!"' ERR
source /etc/os-release
msg "Installing system build dependencies"
if [[ "${ID}" =~ "debian" ]] || [[ "${ID_LIKE}" =~ "debian" ]]; then
sudo apt-get install \
avr-libc \
avrdude \
bison \
build-essential \
ccache \
cmake \
curl \
devmem2 \
dosfstools \
flashrom \
flex \
gcc-avr \
git-lfs \
gnat \
libncurses-dev \
libudev-dev \
msr-tools \
mtools \
nasm \
parted \
python-is-python3 \
python2 \
python3-distutils \
sdcc \
uuid-dev \
xxd \
zlib1g-dev
elif [[ "${ID}" =~ "fedora" ]] || [[ "${ID_LIKE}" =~ "fedora" ]]; then
sudo dnf group install c-development
sudo dnf install \
avr-gcc \
avr-libc \
avrdude \
ccache \
cmake \
curl \
dosfstools \
flashrom \
gcc-gnat \
git-lfs \
libuuid-devel \
msr-tools \
mtools \
nasm \
ncurses-devel \
parted \
patch \
python-unversioned-command \
python2 \
python3 \
sdcc \
systemd-devel \
vim-common \
zlib-devel
elif [[ "${ID}" =~ "arch" ]] || [[ "${ID_LIKE}" =~ "arch" ]]; then
sudo pacman -S \
avr-gcc \
avr-libc \
avrdude \
bison \
ccache \
cmake \
curl \
dosfstools \
flashrom \
flex \
gcc-ada \
git-lfs \
msr-tools \
mtools \
nasm \
ncurses \
parted \
patch \
python \
python-distutils-extra \
python2 \
sdcc \
systemd-libs \
vim
else
msg "Unknown system ID: ${ID}"
msg "Please add support for your distribution to: $0"
exit 1
fi
msg "Installing GIT LFS hooks"
git lfs install
msg "Downloading GIT LFS artifacts"
git lfs pull
msg "Initializing submodules"
git submodule update --init --recursive --progress
msg "Installing coreboot commit hook"
curl -sSf https://review.coreboot.org/tools/hooks/commit-msg \
-o .git/modules/coreboot/hooks/commit-msg && \
chmod +x .git/modules/coreboot/hooks/commit-msg
RUSTUP_NEW_INSTALL=0
if which rustup &> /dev/null; then
msg "Updating rustup"
rustup self update
else
RUSTUP_NEW_INSTALL=1
msg "Installing Rust"
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
| sh -s -- -y --default-toolchain none
msg "Loading Rust environment"
source "${HOME}/.cargo/env"
fi
msg "Installing pinned Rust toolchain and components"
rustup show
if [[ $RUSTUP_NEW_INSTALL = 1 ]]; then
msg "\x1B[33m>> rustup was just installed. Ensure cargo is on the PATH with:"
echo -e " source ~/.cargo/env\n"
fi
msg "\x1B[32mSuccessfully installed dependencies"
echo "Ready to run ./scripts/build.sh [model]" >&2