Use array of packages instead of string

This commit is contained in:
Jordan Carlin 2024-07-19 23:46:05 -07:00
parent 36ea9f3fcd
commit 1dcb5d61d4

View File

@ -48,36 +48,36 @@ fi
if [ "$FAMILY" == rhel ]; then
PACKAGE_MANAGER="dnf"
UPDATE_COMMAND="sudo dnf update -y"
GENERAL_PACKAGES="which rsync git make cmake python3.12 python3-pip curl wget ftp tar pkgconf-pkg-config dialog mutt ssmtp"
GNU_PACKAGES="autoconf automake libmpc-devel mpfr-devel gmp-devel gawk bison flex texinfo gperf libtool patchutils bc gcc gcc-c++ zlib-devel expat-devel libslirp-devel"
QEMU_PACKAGES="glib2-devel libfdt-devel pixman-devel bzip2 ninja-build"
SPIKE_PACKAGES="dtc boost-regex boost-system"
VERILATOR_PACKAGES="help2man perl clang ccache gperftools numactl mold"
BUILDROOT_PACKAGES="ncurses-base ncurses ncurses-libs ncurses-devel gcc-gfortran"
GENERAL_PACKAGES=(which rsync git make cmake python3.12 python3-pip curl wget ftp tar pkgconf-pkg-config dialog mutt ssmtp)
GNU_PACKAGES=(autoconf automake libmpc-devel mpfr-devel gmp-devel gawk bison flex texinfo gperf libtool patchutils bc gcc gcc-c++ zlib-devel expat-devel libslirp-devel)
QEMU_PACKAGES=(glib2-devel libfdt-devel pixman-devel bzip2 ninja-build)
SPIKE_PACKAGES=(dtc boost-regex boost-system)
VERILATOR_PACKAGES=(help2man perl clang ccache gperftools numactl mold)
BUILDROOT_PACKAGES=(ncurses-base ncurses ncurses-libs ncurses-devel gcc-gfortran)
# Extra packages not availale in rhel8, nice for Verilator and needed for sail respectively
if (( RHEL_VERSION == 9 )); then
VERILATOR_PACKAGES="$VERILATOR_PACKAGES perl-doc"
SAIL_PACKAGES="z3"
VERILATOR_PACKAGES+=(perl-doc)
SAIL_PACKAGES=(z3)
fi
# A newer version of gcc is required for qemu
OTHER_PACKAGES="gcc-toolset-13"
OTHER_PACKAGES=(gcc-toolset-13)
elif [ "$FAMILY" == ubuntu ]; then
PACKAGE_MANAGER=apt-get
UPDATE_COMMAND="sudo apt-get update -y && sudo apt-get upgrade -y --with-new-pkgs"
GENERAL_PACKAGES="rsync git make cmake python3 python3-pip python3-venv curl wget ftp tar pkg-config dialog mutt ssmtp"
GNU_PACKAGES="autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat1-dev ninja-build libglib2.0-dev libslirp-dev"
QEMU_PACKAGES="libfdt-dev libpixman-1-dev"
SPIKE_PACKAGES="device-tree-compiler libboost-regex-dev libboost-system-dev"
VERILATOR_PACKAGES="help2man perl g++ clang ccache libunwind-dev libgoogle-perftools-dev numactl perl-doc libfl2 libfl-dev zlib1g"
SAIL_PACKAGES="opam z3"
BUILDROOT_PACKAGES="ncurses-base ncurses-bin libncurses-dev gfortran"
GENERAL_PACKAGES=(rsync git make cmake python3 python3-pip python3-venv curl wget ftp tar pkg-config dialog mutt ssmtp)
GNU_PACKAGES=(autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat1-dev ninja-build libglib2.0-dev libslirp-dev)
QEMU_PACKAGES=(libfdt-dev libpixman-1-dev)
SPIKE_PACKAGES=(device-tree-compiler libboost-regex-dev libboost-system-dev)
VERILATOR_PACKAGES=(help2man perl g++ clang ccache libunwind-dev libgoogle-perftools-dev numactl perl-doc libfl2 libfl-dev zlib1g)
SAIL_PACKAGES=(opam z3)
BUILDROOT_PACKAGES=(ncurses-base ncurses-bin libncurses-dev gfortran)
# Extra packages not availale in Ubuntu 20.04, nice for Verilator
if (( UBUNTU_VERSION >= 22 )); then
VERILATOR_PACKAGES="$VERILATOR_PACKAGES mold"
VERILATOR_PACKAGES+=(mold)
fi
# Newer version of gcc needed for Ubuntu 20.04 for Verilator
if (( UBUNTU_VERSION == 20 )); then
OTHER_PACKAGES="gcc-10 g++-10 cpp-10"
OTHER_PACKAGES=(gcc-10 g++-10 cpp-10)
fi
fi
@ -91,11 +91,11 @@ if [ "${1}" == "--check" ]; then
printf "%$(tput cols)s${ENDC}" | tr ' ' '#'
if [ "$FAMILY" == rhel ]; then
for pack in $GENERAL_PACKAGES $GNU_PACKAGES $QEMU_PACKAGES $SPIKE_PACKAGES $VERILATOR_PACKAGES $SAIL_PACKAGES $BUILDROOT_PACKAGES $OTHER_PACKAGES; do
for pack in "${GENERAL_PACKAGES[@]}" "${GNU_PACKAGES[@]}" "${QEMU_PACKAGES[@]}" "${SPIKE_PACKAGES[@]}" "${VERILATOR_PACKAGES[@]}" "${SAIL_PACKAGES[@]}" "${BUILDROOT_PACKAGES[@]}" "${OTHER_PACKAGES[@]}"; do
rpm -q "$pack" > /dev/null || (echo -e "${FAIL_COLOR}Missing packages detected (${WARNING_COLOR}$pack${FAIL_COLOR}). Run as root to auto-install or run wally-package-install.sh first.${ENDC}" && exit 1)
done
elif [ "$FAMILY" == ubuntu ]; then
for pack in $GENERAL_PACKAGES $GNU_PACKAGES $QEMU_PACKAGES $SPIKE_PACKAGES $VERILATOR_PACKAGES $SAIL_PACKAGES $BUILDROOT_PACKAGES $OTHER_PACKAGES; do
for pack in "${GENERAL_PACKAGES[@]}" "${GNU_PACKAGES[@]}" "${QEMU_PACKAGES[@]}" "${SPIKE_PACKAGES[@]}" "${VERILATOR_PACKAGES[@]}" "${SAIL_PACKAGES[@]}" "${BUILDROOT_PACKAGES[@]}" "${OTHER_PACKAGES[@]}"; do
dpkg -l "$pack" | grep "ii" > /dev/null || (echo -e "${FAIL_COLOR}Missing packages detected (${WARNING_COLOR}$pack${FAIL_COLOR}). Run as root to auto-install or run wally-package-install.sh first." && exit 1)
done
fi
@ -130,6 +130,6 @@ else
# Update and Upgrade tools
eval "$UPDATE_COMMAND"
# Install packages listed above using appropriate package manager
sudo "$PACKAGE_MANAGER" install -y $GENERAL_PACKAGES $GNU_PACKAGES $QEMU_PACKAGES $SPIKE_PACKAGES $VERILATOR_PACKAGES $SAIL_PACKAGES $BUILDROOT_PACKAGES $OTHER_PACKAGES
sudo "$PACKAGE_MANAGER" install -y "${GENERAL_PACKAGES[@]}" "${GNU_PACKAGES[@]}" "${QEMU_PACKAGES[@]}" "${SPIKE_PACKAGES[@]}" "${VERILATOR_PACKAGES[@]}" "${SAIL_PACKAGES[@]}" "${BUILDROOT_PACKAGES[@]}" "${OTHER_PACKAGES[@]}"
echo -e "${SUCCESS_COLOR}Packages successfully installed.${ENDC}"
fi