generalbots/DEV-DEPENDENCIES.sh
Rodrigo Rodriguez 084b508a35 feat: add Rust, sccache, mold to DEV-DEPENDENCIES.sh
- Install Rust via rustup as SUDO_USER (not root)
- Install mold linker via system packages (apt/dnf/pacman)
- Install sccache via cargo install as SUDO_USER
- Set default toolchain to stable on install
- Use run_as_user helper for all cargo/rustup commands
2026-04-21 02:03:36 +00:00

75 lines
2.3 KiB
Bash
Executable file

#!/bin/bash
set -e
if [ "$EUID" -ne 0 ]; then
echo "Run as root (use sudo)"
exit 1
fi
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
SUDO_USER_HOME="$(eval echo "~${SUDO_USER:-$USER}")"
echo "Installing runtime dependencies first..."
bash "$SCRIPT_DIR/DEPENDENCIES.sh"
echo "Installing dev/build dependencies..."
OS=$(grep -oP '(?<=^ID=).+' /etc/os-release 2>/dev/null | tr -d '"' || echo "unknown")
install_debian() {
apt-get install -y -qq \
clang lld mold build-essential pkg-config libssl-dev libpq-dev cmake git \
libglib2.0-dev libgtk-3-dev libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev \
libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev
}
install_fedora() {
dnf install -y -q \
clang lld mold gcc gcc-c++ make pkg-config openssl-devel postgresql-devel cmake git \
glib2-devel gobject-introspection-devel gtk3-devel webkit2gtk3-devel \
javascriptcoregtk-devel libappindicator-gtk3-devel librsvg2-devel libsoup3-devel
}
install_arch() {
pacman -Sy --noconfirm \
clang lld mold gcc make pkg-config openssl libpq cmake git \
glib2 gtk3 webkit2gtk4 javascriptcoregtk libappindicator librsvg libsoup
}
case $OS in
ubuntu|debian|linuxmint|pop) install_debian ;;
fedora|rhel|centos|rocky|almalinux) install_fedora ;;
arch|manjaro) install_arch ;;
*) echo "Unsupported OS: $OS"; exit 1 ;;
esac
run_as_user() {
su - "${SUDO_USER:-$USER}" -c ". '${SUDO_USER_HOME}/.cargo/env' 2>/dev/null; export PATH=\"${SUDO_USER_HOME}/.cargo/bin:\$PATH\"; $*"
}
install_rust() {
if ! run_as_user "rustc --version" &>/dev/null; then
echo "Installing Rust via rustup for ${SUDO_USER:-$USER}..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
su - "${SUDO_USER:-$USER}" -c "sh -s -- -y --default-toolchain stable"
run_as_user "rustup default stable"
echo "Rust installed: $(run_as_user 'rustc --version') / $(run_as_user 'cargo --version')"
else
echo "Rust already installed: $(run_as_user 'rustc --version')"
fi
}
install_cargo_tools() {
if run_as_user "cargo --version" &>/dev/null; then
if ! run_as_user "sccache --version" &>/dev/null; then
echo "Installing sccache..."
run_as_user "cargo install sccache --locked"
else
echo "sccache already installed: $(run_as_user 'sccache --version 2>&1 | head -1')"
fi
fi
}
install_rust "$SUDO_USER_HOME"
install_cargo_tools "$SUDO_USER_HOME"
echo "Dev dependencies installed!"