mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Use arithmetic comparisons where possible
This commit is contained in:
parent
c3614aa189
commit
f68cb47a55
@ -49,27 +49,27 @@ test -e /etc/os-release && os_release="/etc/os-release" || os_release="/usr/lib/
|
|||||||
source "$os_release"
|
source "$os_release"
|
||||||
|
|
||||||
# Check for compatible distro
|
# Check for compatible distro
|
||||||
if [[ "$ID" = rhel || "$ID_LIKE" = *rhel* ]]; then
|
if [[ "$ID" == rhel || "$ID_LIKE" == *rhel* ]]; then
|
||||||
FAMILY=rhel
|
export FAMILY=rhel
|
||||||
if [ "$ID" != rhel ] && [ "$ID" != rocky ] && [ "$ID" != almalinux ]; then
|
if [ "$ID" != rhel ] && [ "$ID" != rocky ] && [ "$ID" != almalinux ]; then
|
||||||
printf "${WARNING_COLOR}%s\n${ENDC}" "For Red Hat family distros, the Wally install script has only been tested on RHEL, Rocky Linux," \
|
printf "${WARNING_COLOR}%s\n${ENDC}" "For Red Hat family distros, the Wally install script has only been tested on RHEL, Rocky Linux," \
|
||||||
" and AlmaLinux. Your distro is $PRETTY_NAME. The regular Red Hat install will be attempted, but there will likely be issues."
|
" and AlmaLinux. Your distro is $PRETTY_NAME. The regular Red Hat install will be attempted, but there will likely be issues."
|
||||||
fi
|
fi
|
||||||
if [ "${VERSION_ID:0:1}" = 8 ]; then
|
if (( "${VERSION_ID:0:1}" == 8 )); then
|
||||||
RHEL_VERSION=8
|
export RHEL_VERSION=8
|
||||||
elif [ "${VERSION_ID:0:1}" = 9 ]; then
|
elif (( "${VERSION_ID:0:1}" = 9 )); then
|
||||||
RHEL_VERSION=9
|
export RHEL_VERSION=9
|
||||||
else
|
else
|
||||||
echo "${FAIL_COLOR}The Wally install script is only compatible with versions 8 and 9 of RHEL, Rocky Linux, and AlmaLinux. You have version $VERSION.${ENDC}"
|
echo "${FAIL_COLOR}The Wally install script is only compatible with versions 8 and 9 of RHEL, Rocky Linux, and AlmaLinux. You have version $VERSION.${ENDC}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
elif [[ "$ID" = ubuntu || "$ID_LIKE" = *ubuntu* ]]; then
|
elif [[ "$ID" == ubuntu || "$ID_LIKE" == *ubuntu* ]]; then
|
||||||
FAMILY=ubuntu
|
export FAMILY=ubuntu
|
||||||
if [ "$ID" != ubuntu ]; then
|
if [ "$ID" != ubuntu ]; then
|
||||||
printf "${WARNING_COLOR}%s\n${ENDC}" "For Ubuntu family distros, the Wally install script has only been tested on standard Ubuntu. Your distro " \
|
printf "${WARNING_COLOR}%s\n${ENDC}" "For Ubuntu family distros, the Wally install script has only been tested on standard Ubuntu. Your distro " \
|
||||||
"is $PRETTY_NAME. The regular Ubuntu install will be attempted, but there may be issues."
|
"is $PRETTY_NAME. The regular Ubuntu install will be attempted, but there may be issues."
|
||||||
else
|
else
|
||||||
UBUNTU_VERSION="${VERSION_ID:0:2}"
|
export UBUNTU_VERSION="${VERSION_ID:0:2}"
|
||||||
if (( UBUNTU_VERSION < 20 )); then
|
if (( UBUNTU_VERSION < 20 )); then
|
||||||
echo "${FAIL_COLOR}The Wally install script is only compatible with versions 20.04, 22.04, and 24.04 of Ubuntu. You have version $VERSION.${ENDC}"
|
echo "${FAIL_COLOR}The Wally install script is only compatible with versions 20.04, 22.04, and 24.04 of Ubuntu. You have version $VERSION.${ENDC}"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -45,7 +45,7 @@ fi
|
|||||||
|
|
||||||
# Generate list of packages to install and package manager commands based on distro
|
# Generate list of packages to install and package manager commands based on distro
|
||||||
# Packages are grouped by which tool requires them. If multiple tools need a package, it is included in the first tool only
|
# Packages are grouped by which tool requires them. If multiple tools need a package, it is included in the first tool only
|
||||||
if [ "$FAMILY" = rhel ]; then
|
if [ "$FAMILY" == rhel ]; then
|
||||||
PACKAGE_MANAGER="dnf"
|
PACKAGE_MANAGER="dnf"
|
||||||
UPDATE_COMMAND="sudo dnf update -y"
|
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"
|
GENERAL_PACKAGES="which rsync git make cmake python3.12 python3-pip curl wget ftp tar pkgconf-pkg-config dialog mutt ssmtp"
|
||||||
@ -55,13 +55,13 @@ if [ "$FAMILY" = rhel ]; then
|
|||||||
VERILATOR_PACKAGES="help2man perl clang ccache gperftools numactl mold"
|
VERILATOR_PACKAGES="help2man perl clang ccache gperftools numactl mold"
|
||||||
BUILDROOT_PACKAGES="ncurses-base ncurses ncurses-libs ncurses-devel gcc-gfortran"
|
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
|
# Extra packages not availale in rhel8, nice for Verilator and needed for sail respectively
|
||||||
if [ "$RHEL_VERSION" = 9 ]; then
|
if (( RHEL_VERSION == 9 )); then
|
||||||
VERILATOR_PACKAGES="$VERILATOR_PACKAGES perl-doc"
|
VERILATOR_PACKAGES="$VERILATOR_PACKAGES perl-doc"
|
||||||
SAIL_PACKAGES="z3"
|
SAIL_PACKAGES="z3"
|
||||||
fi
|
fi
|
||||||
# A newer version of gcc is required for qemu
|
# A newer version of gcc is required for qemu
|
||||||
OTHER_PACKAGES="gcc-toolset-13"
|
OTHER_PACKAGES="gcc-toolset-13"
|
||||||
elif [ "$FAMILY" = ubuntu ]; then
|
elif [ "$FAMILY" == ubuntu ]; then
|
||||||
PACKAGE_MANAGER=apt-get
|
PACKAGE_MANAGER=apt-get
|
||||||
UPDATE_COMMAND="sudo apt-get update -y && sudo apt-get upgrade -y --with-new-pkgs"
|
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"
|
GENERAL_PACKAGES="rsync git make cmake python3 python3-pip python3-venv curl wget ftp tar pkg-config dialog mutt ssmtp"
|
||||||
@ -76,25 +76,25 @@ elif [ "$FAMILY" = ubuntu ]; then
|
|||||||
VERILATOR_PACKAGES="$VERILATOR_PACKAGES mold"
|
VERILATOR_PACKAGES="$VERILATOR_PACKAGES mold"
|
||||||
fi
|
fi
|
||||||
# Newer version of gcc needed for Ubuntu 20.04 for Verilator
|
# Newer version of gcc needed for Ubuntu 20.04 for Verilator
|
||||||
if [ "$UBUNTU_VERSION" = 20 ]; then
|
if (( UBUNTU_VERSION == 20 )); then
|
||||||
OTHER_PACKAGES="gcc-10 g++-10 cpp-10"
|
OTHER_PACKAGES="gcc-10 g++-10 cpp-10"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check if required packages are installed or install/update them depending on passed flag.
|
# Check if required packages are installed or install/update them depending on passed flag.
|
||||||
if [ "${1}" = "--check" ]; then
|
if [ "${1}" == "--check" ]; then
|
||||||
printf "${SECTION_COLOR}%$(tput cols)s" | tr ' ' '#'
|
printf "${SECTION_COLOR}%$(tput cols)s" | tr ' ' '#'
|
||||||
printf "%$(tput cols)s" | tr ' ' '#'
|
printf "%$(tput cols)s" | tr ' ' '#'
|
||||||
echo -e "Checking Dependencies from Package Manager"
|
echo -e "Checking Dependencies from Package Manager"
|
||||||
printf "%$(tput cols)s" | tr ' ' '#'
|
printf "%$(tput cols)s" | tr ' ' '#'
|
||||||
printf "%$(tput cols)s${ENDC}" | tr ' ' '#'
|
printf "%$(tput cols)s${ENDC}" | tr ' ' '#'
|
||||||
|
|
||||||
if [ "$FAMILY" = rhel ]; then
|
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)
|
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
|
done
|
||||||
elif [ "$FAMILY" = ubuntu ]; then
|
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)
|
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
|
done
|
||||||
@ -111,14 +111,14 @@ else
|
|||||||
printf "%$(tput cols)s${ENDC}" | tr ' ' '#'
|
printf "%$(tput cols)s${ENDC}" | tr ' ' '#'
|
||||||
|
|
||||||
# Enable extra repos necessary for rhel
|
# Enable extra repos necessary for rhel
|
||||||
if [ "$FAMILY" = rhel ]; then
|
if [ "$FAMILY" == rhel ]; then
|
||||||
sudo dnf install -y dnf-plugins-core
|
sudo dnf install -y dnf-plugins-core
|
||||||
sudo dnf group install -y "Development Tools"
|
sudo dnf group install -y "Development Tools"
|
||||||
if [ "$ID" = rhel ]; then
|
if [ "$ID" == rhel ]; then
|
||||||
sudo subscription-manager repos --enable "codeready-builder-for-rhel-$RHEL_VERSION-$(arch)-rpms"
|
sudo subscription-manager repos --enable "codeready-builder-for-rhel-$RHEL_VERSION-$(arch)-rpms"
|
||||||
sudo dnf install -y "https://dl.fedoraproject.org/pub/epel/epel-release-latest-$RHEL_VERSION.noarch.rpm"
|
sudo dnf install -y "https://dl.fedoraproject.org/pub/epel/epel-release-latest-$RHEL_VERSION.noarch.rpm"
|
||||||
else # RHEL clone
|
else # RHEL clone
|
||||||
if [ "$RHEL_VERSION" = 8 ]; then
|
if (( RHEL_VERSION == 8 )); then
|
||||||
sudo dnf config-manager -y --set-enabled powertools
|
sudo dnf config-manager -y --set-enabled powertools
|
||||||
else # Version 9
|
else # Version 9
|
||||||
sudo dnf config-manager -y --set-enabled crb
|
sudo dnf config-manager -y --set-enabled crb
|
||||||
|
@ -86,13 +86,13 @@ dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||||||
source "${dir}"/wally-distro-check.sh
|
source "${dir}"/wally-distro-check.sh
|
||||||
|
|
||||||
# Check if root
|
# Check if root
|
||||||
ROOT=$( [ "${EUID:=$(id -u)}" = 0 ] && echo true || echo false);
|
ROOT=$( [ "${EUID:=$(id -u)}" == 0 ] && echo true || echo false);
|
||||||
|
|
||||||
# Set installation directory based on execution privileges
|
# Set installation directory based on execution privileges
|
||||||
# If the script is run as root, the default installation path is /opt/riscv
|
# If the script is run as root, the default installation path is /opt/riscv
|
||||||
# If the script is run as a user, the default installation path is ~/riscv
|
# If the script is run as a user, the default installation path is ~/riscv
|
||||||
# The installation path can be overridden with an argument passed to the script.
|
# The installation path can be overridden with an argument passed to the script.
|
||||||
if [ "$ROOT" = true ]; then
|
if [ "$ROOT" == true ]; then
|
||||||
export RISCV="${1:-/opt/riscv}"
|
export RISCV="${1:-/opt/riscv}"
|
||||||
else
|
else
|
||||||
export RISCV="${1:-$HOME/riscv}"
|
export RISCV="${1:-$HOME/riscv}"
|
||||||
@ -110,16 +110,16 @@ echo "Installation path: $RISCV"
|
|||||||
|
|
||||||
# Install/update system packages if root. Otherwise, check that packages are already installed.
|
# Install/update system packages if root. Otherwise, check that packages are already installed.
|
||||||
STATUS="system packages"
|
STATUS="system packages"
|
||||||
if [ "$ROOT" = true ]; then
|
if [ "$ROOT" == true ]; then
|
||||||
source "${dir}"/wally-package-install.sh
|
source "${dir}"/wally-package-install.sh
|
||||||
else
|
else
|
||||||
source "${dir}"/wally-package-install.sh --check
|
source "${dir}"/wally-package-install.sh --check
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Enable newer version of gcc for older distros (required for QEMU/Verilator)
|
# Enable newer version of gcc for older distros (required for QEMU/Verilator)
|
||||||
if [ "$FAMILY" = rhel ]; then
|
if [ "$FAMILY" == rhel ]; then
|
||||||
source /opt/rh/gcc-toolset-13/enable
|
source /opt/rh/gcc-toolset-13/enable
|
||||||
elif [ "$UBUNTU_VERSION" = 20 ]; then
|
elif (( UBUNTU_VERSION == 20 )); then
|
||||||
mkdir -p "$RISCV"/gcc-10/bin
|
mkdir -p "$RISCV"/gcc-10/bin
|
||||||
for f in gcc cpp g++ gcc-ar gcc-nm gcc-ranlib gcov gcov-dump gcov-tool lto-dump; do
|
for f in gcc cpp g++ gcc-ar gcc-nm gcc-ranlib gcov gcov-dump gcov-tool lto-dump; do
|
||||||
ln -vsf /usr/bin/$f-10 "$RISCV"/gcc-10/bin/$f
|
ln -vsf /usr/bin/$f-10 "$RISCV"/gcc-10/bin/$f
|
||||||
@ -154,7 +154,7 @@ pip install -U sphinx sphinx_rtd_theme matplotlib scipy scikit-learn adjustText
|
|||||||
pip install -U riscv_isac # to generate new tests, such as quads with fp_dataset.py
|
pip install -U riscv_isac # to generate new tests, such as quads with fp_dataset.py
|
||||||
|
|
||||||
# z3 is needed for sail and not availabe from dnf for rhel 8
|
# z3 is needed for sail and not availabe from dnf for rhel 8
|
||||||
if [ "$RHEL_VERSION" = 8 ]; then
|
if (( RHEL_VERSION == 8 )); then
|
||||||
pip install -U z3-solver
|
pip install -U z3-solver
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ echo -e "${SUCCESS_COLOR}Python environment successfully configured.${ENDC}"
|
|||||||
|
|
||||||
|
|
||||||
# Extra dependecies needed for older distros that don't have new enough versions available from package manager
|
# Extra dependecies needed for older distros that don't have new enough versions available from package manager
|
||||||
if [ "$RHEL_VERSION" = 8 ] || [ "$UBUNTU_VERSION" = 20 ]; then
|
if (( RHEL_VERSION == 8 )) || (( UBUNTU_VERSION == 20 )); then
|
||||||
# Newer versin of glib required for Qemu.
|
# Newer versin of glib required for Qemu.
|
||||||
# Anything newer than this won't build on red hat 8
|
# Anything newer than this won't build on red hat 8
|
||||||
STATUS="glib"
|
STATUS="glib"
|
||||||
@ -185,7 +185,7 @@ if [ "$RHEL_VERSION" = 8 ] || [ "$UBUNTU_VERSION" = 20 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Newer version of gmp needed for sail-riscv model
|
# Newer version of gmp needed for sail-riscv model
|
||||||
if [ "$RHEL_VERSION" = 8 ]; then
|
if (( RHEL_VERSION == 8 )); then
|
||||||
STATUS="gmp"
|
STATUS="gmp"
|
||||||
if [ ! -e "$RISCV"/include/gmp.h ]; then
|
if [ ! -e "$RISCV"/include/gmp.h ]; then
|
||||||
section_header "Installing gmp"
|
section_header "Installing gmp"
|
||||||
@ -308,7 +308,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
cd "$RISCV"
|
cd "$RISCV"
|
||||||
if [ "$FAMILY" = rhel ]; then
|
if [ "$FAMILY" == rhel ]; then
|
||||||
# Install opam from binary disribution on rhel as it is not available from dnf
|
# Install opam from binary disribution on rhel as it is not available from dnf
|
||||||
# Opam is needed to install the sail compiler
|
# Opam is needed to install the sail compiler
|
||||||
section_header "Installing/Updating Opam"
|
section_header "Installing/Updating Opam"
|
||||||
@ -392,10 +392,10 @@ if [ ! -e "${RISCV}"/site-setup.sh ]; then
|
|||||||
wget https://raw.githubusercontent.com/openhwgroup/cvw/main/site-setup.sh
|
wget https://raw.githubusercontent.com/openhwgroup/cvw/main/site-setup.sh
|
||||||
wget https://raw.githubusercontent.com/openhwgroup/cvw/main/site-setup.csh
|
wget https://raw.githubusercontent.com/openhwgroup/cvw/main/site-setup.csh
|
||||||
# Add necessary lines to site-setup script to activate newer version of gcc for older distros
|
# Add necessary lines to site-setup script to activate newer version of gcc for older distros
|
||||||
if [ "$FAMILY" = rhel ]; then
|
if [ "$FAMILY" == rhel ]; then
|
||||||
echo "# Activate newer gcc version" >> site-setup.sh
|
echo "# Activate newer gcc version" >> site-setup.sh
|
||||||
echo "source /opt/rh/gcc-toolset-13/enable" >> site-setup.sh
|
echo "source /opt/rh/gcc-toolset-13/enable" >> site-setup.sh
|
||||||
elif [ "$UBUNTU_VERSION" = 20 ]; then
|
elif (( UBUNTU_VERSION == 20 )); then
|
||||||
echo "# Activate newer gcc version" >> site-setup.sh
|
echo "# Activate newer gcc version" >> site-setup.sh
|
||||||
echo "export PATH=\$RISCV/gcc-10/bin:\$PATH" >> site-setup.sh
|
echo "export PATH=\$RISCV/gcc-10/bin:\$PATH" >> site-setup.sh
|
||||||
echo "# Activate newer gcc version" >> site-setup.csh
|
echo "# Activate newer gcc version" >> site-setup.csh
|
||||||
|
Loading…
Reference in New Issue
Block a user