diff --git a/bin/wally-package-install.sh b/bin/wally-package-install.sh index 6160e1046..52ce5a9e2 100755 --- a/bin/wally-package-install.sh +++ b/bin/wally-package-install.sh @@ -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