2023-05-04 11:03:02 +02:00
|
|
|
#!/usr/bin/env bash
|
2020-08-17 18:49:59 +02:00
|
|
|
|
2021-07-27 13:17:51 +02:00
|
|
|
if [[ "$UID" -eq "0" ]]; then
|
|
|
|
SUDO=""
|
|
|
|
else
|
|
|
|
SUDO=sudo
|
|
|
|
fi
|
|
|
|
|
2021-08-14 11:35:23 +02:00
|
|
|
uname=`uname`
|
2022-01-31 11:04:38 +01:00
|
|
|
unset supported
|
|
|
|
|
2021-08-14 11:35:23 +02:00
|
|
|
if [[ "$uname" == "Darwin" ]]; then
|
2022-02-08 09:16:47 +01:00
|
|
|
supported=true
|
2022-01-31 11:04:38 +01:00
|
|
|
|
2021-08-14 11:35:23 +02:00
|
|
|
echo "Installing packages for macOS"
|
|
|
|
|
|
|
|
if ! command -v brew >/dev/null 2>&1; then
|
|
|
|
# Install Homebrew
|
|
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" || exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Install packages
|
2022-01-29 02:01:26 +01:00
|
|
|
brew install md5sha1sum ninja gcc nanaian/brew/mips-linux-gnu-binutils || exit 1
|
2021-08-14 11:35:23 +02:00
|
|
|
python3 -m pip install -U -r requirements.txt || exit 1
|
2023-04-24 08:02:57 +02:00
|
|
|
cp tools/precommit_check_no_assets.sh "$(git rev-parse --git-path hooks)/pre-commit" || exit 1
|
2021-08-14 11:35:23 +02:00
|
|
|
|
|
|
|
if [[ $1 == "--extra" ]]; then
|
|
|
|
echo "Installing extra"
|
|
|
|
python3 -m pip install -U -r requirements_extra.txt || exit 1
|
|
|
|
fi
|
2022-02-11 13:30:00 +01:00
|
|
|
exit 0
|
2021-08-14 11:35:23 +02:00
|
|
|
fi
|
|
|
|
|
2021-02-22 04:34:17 +01:00
|
|
|
# Debian and derivatives (apt)
|
2021-08-24 21:16:10 +02:00
|
|
|
if cat /etc/os-release | grep -E 'ID=debian|ID_LIKE=(.*)debian' &> /dev/null; then
|
2022-02-08 09:16:47 +01:00
|
|
|
supported=true
|
2022-01-31 11:04:38 +01:00
|
|
|
|
2021-02-22 04:34:17 +01:00
|
|
|
echo "Installing packages for Debian or derivative (apt)"
|
2020-08-17 18:49:59 +02:00
|
|
|
|
2022-07-08 14:57:08 +02:00
|
|
|
${SUDO} apt install -y curl git python3 python3-pip python3-setuptools build-essential binutils-mips-linux-gnu zlib1g-dev libyaml-dev ninja-build cpp-mips-linux-gnu || exit 1
|
2020-10-15 09:02:52 +02:00
|
|
|
python3 -m pip install -U -r requirements.txt
|
2023-04-24 08:02:57 +02:00
|
|
|
cp tools/precommit_check_no_assets.sh "$(git rev-parse --git-path hooks)/pre-commit" || exit 1
|
2020-08-17 18:49:59 +02:00
|
|
|
|
|
|
|
if [[ $1 == "--extra" ]]; then
|
|
|
|
echo "Installing extra"
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} apt install -y clang-tidy astyle doxygen || exit 1
|
2020-10-15 09:02:52 +02:00
|
|
|
python3 -m pip install -U -r requirements_extra.txt || exit 1
|
2020-08-17 18:49:59 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2023-05-09 06:27:53 +02:00
|
|
|
# Fedora (dnf)
|
|
|
|
if cat /etc/os-release | grep -E ID=fedora &> /dev/null; then
|
|
|
|
supported=true
|
|
|
|
|
|
|
|
echo "Installing packages for Fedora (dnf)"
|
|
|
|
|
|
|
|
${SUDO} dnf install -y curl git python3 python3-pip python3-setuptools ninja-build gcc-mips64-linux-gnu libyaml-devel zlib-devel || exit 1
|
|
|
|
${SUDO} dnf group info "C Development Tools and Libraries" "Development Tools" || exit 1
|
|
|
|
# Install binutils if required
|
|
|
|
if ! command -v mips-linux-gnu-ar &> /dev/null; then
|
|
|
|
PKG="mips-linux-gnu-binutils"
|
|
|
|
|
|
|
|
RETURNDIR="$(pwd)"
|
|
|
|
cd "$(mktemp -d)"
|
|
|
|
|
|
|
|
wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2
|
|
|
|
tar -xf binutils-2.35.tar.bz2
|
|
|
|
|
|
|
|
cd binutils-2.35
|
|
|
|
sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
|
|
|
|
./configure --target=mips-linux-gnu \
|
|
|
|
--with-sysroot=/usr/mips-linux-gnu \
|
|
|
|
--prefix=/usr \
|
|
|
|
--disable-multilib \
|
|
|
|
--with-gnu-as \
|
|
|
|
--with-gnu-ld \
|
|
|
|
--disable-nls \
|
|
|
|
--enable-ld=default \
|
|
|
|
--enable-plugins \
|
|
|
|
--enable-deterministic-archives \
|
|
|
|
--disable-werror
|
|
|
|
${SUDO} make
|
|
|
|
${SUDO} make install
|
|
|
|
|
|
|
|
cd ..
|
|
|
|
# delete temp directory we made
|
|
|
|
rm -rf "$(pwd)"
|
|
|
|
# go back to old dir
|
|
|
|
cd "${RETURNDIR}"
|
|
|
|
fi
|
|
|
|
python3 -m pip install -U -r requirements.txt
|
|
|
|
cp tools/precommit_check_no_assets.sh "$(git rev-parse --git-path hooks)/pre-commit" || exit 1
|
|
|
|
|
|
|
|
if [[ $1 == "--extra" ]]; then
|
|
|
|
echo "Installing extra"
|
|
|
|
${SUDO} dnf install -y clang-tools-extra astyle doxygen || exit 1
|
|
|
|
python3 -m pip install -U -r requirements_extra.txt || exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2021-02-22 04:34:17 +01:00
|
|
|
# Arch Linux and derivatives (pacman)
|
|
|
|
if cat /etc/os-release | grep -E 'ID=arch|ID_LIKE=arch' &> /dev/null; then
|
2022-02-08 09:16:47 +01:00
|
|
|
supported=true
|
2022-01-31 11:04:38 +01:00
|
|
|
|
2021-02-22 04:34:17 +01:00
|
|
|
echo "Installing packages for Arch Linux or derivative (pacman)"
|
2020-08-17 18:49:59 +02:00
|
|
|
|
|
|
|
# Upgrade existing packages (note: no --noconfirm)
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} pacman -Syu || exit 1
|
2020-08-17 18:49:59 +02:00
|
|
|
|
2021-03-28 06:46:49 +02:00
|
|
|
# Install dependencies
|
2022-01-31 11:04:38 +01:00
|
|
|
${SUDO} pacman -S --noconfirm --needed curl git python python-pip python-setuptools base-devel zlib libyaml ninja || exit 1
|
2020-10-15 09:02:52 +02:00
|
|
|
python3 -m pip install -U -r requirements.txt
|
2023-04-24 08:02:57 +02:00
|
|
|
cp tools/precommit_check_no_assets.sh "$(git rev-parse --git-path hooks)/pre-commit" || exit 1
|
2020-08-17 18:49:59 +02:00
|
|
|
|
|
|
|
# Install binutils if required
|
|
|
|
if ! command -v mips-linux-gnu-ar &> /dev/null; then
|
|
|
|
PKG="mips-linux-gnu-binutils"
|
|
|
|
if command -v aura &> /dev/null; then
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} aura -A --noconfirm $PKG || exit 1
|
2020-08-17 18:49:59 +02:00
|
|
|
elif command -v yay &> /dev/null; then
|
|
|
|
yay -S --noconfirm $PKG || exit 1
|
|
|
|
elif command -v yaourt &> /dev/null; then
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} yaourt -S --noconfirm $PKG || exit 1
|
2020-08-17 18:49:59 +02:00
|
|
|
else
|
|
|
|
echo "AUR manager not found, installing $PKG without one"
|
|
|
|
|
|
|
|
git clone "https://aur.archlinux.org/$PKG.git" || exit 1
|
|
|
|
cd $PKG
|
2020-08-17 19:09:42 +02:00
|
|
|
makepkg -si || exit 1
|
2020-08-17 18:49:59 +02:00
|
|
|
cd ..
|
|
|
|
rm -rf $PKG
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $1 == "--extra" ]]; then
|
|
|
|
echo "Installing extra"
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} pacman -S --noconfirm --needed clang astyle doxygen || exit 1
|
2020-10-15 09:02:52 +02:00
|
|
|
python3 -m pip install -U -r requirements_extra.txt || exit 1
|
2020-08-17 18:49:59 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2020-10-20 06:07:04 +02:00
|
|
|
# openSUSE (zypper)
|
2020-11-24 21:45:37 +01:00
|
|
|
if cat /etc/os-release | grep ID=opensuse &> /dev/null; then
|
2022-02-08 09:16:47 +01:00
|
|
|
supported=true
|
2022-01-31 11:04:38 +01:00
|
|
|
|
2020-10-20 06:07:04 +02:00
|
|
|
echo "Installing packages for openSUSE (zypper)"
|
|
|
|
|
2022-01-31 11:04:38 +01:00
|
|
|
${SUDO} zypper -n curl install git python3 python3-devel python3-pip python3-setuptools gcc gcc-c++ glibc-devel make cross-mips-binutils zlib-devel libyaml-devel ninja
|
2020-10-20 06:07:04 +02:00
|
|
|
|
|
|
|
# Link the openSUSE locations for binutils tools to their usual GNU locations
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-addr2line /usr/bin/mips-linux-gnu-addr2line
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-ar /usr/bin/mips-linux-gnu-ar
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-as /usr/bin/mips-linux-gnu-as
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-elfedit /usr/bin/mips-linux-gnu-elfedit
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-gprof /usr/bin/mips-linux-gnu-gprof
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-ld /usr/bin/mips-linux-gnu-ld
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-ld.bfd /usr/bin/mips-linux-gnu-ld.bfd
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-nm /usr/bin/mips-linux-gnu-nm
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-objcopy /usr/bin/mips-linux-gnu-objcopy
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-objdump /usr/bin/mips-linux-gnu-objdump
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-ranlib /usr/bin/mips-linux-gnu-ranlib
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-readelf /usr/bin/mips-linux-gnu-readelf
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-size /usr/bin/mips-linux-gnu-size
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-strings /usr/bin/mips-linux-gnu-strings
|
|
|
|
${SUDO} ln -s /usr/bin/mips-suse-linux-strip /usr/bin/mips-linux-gnu-strip
|
2020-10-20 06:07:04 +02:00
|
|
|
|
|
|
|
python3 -m pip install -U -r requirements.txt
|
2023-04-24 08:02:57 +02:00
|
|
|
cp tools/precommit_check_no_assets.sh "$(git rev-parse --git-path hooks)/pre-commit" || exit 1
|
2020-10-20 06:07:04 +02:00
|
|
|
|
|
|
|
if [[ $1 == "--extra" ]]; then
|
|
|
|
echo "Installing extra"
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} zypper -n install clang astyle doxygen || exit 1
|
2020-10-20 06:07:04 +02:00
|
|
|
python3 -m pip install -U -r requirements_extra.txt || exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Alpine Linux (apk)
|
2020-11-24 21:45:37 +01:00
|
|
|
if cat /etc/os-release | grep ID=alpine &> /dev/null; then
|
2022-02-08 09:16:47 +01:00
|
|
|
supported=true
|
2022-01-31 11:04:38 +01:00
|
|
|
|
2020-10-20 06:07:04 +02:00
|
|
|
echo "Installing packages for Alpine Linux (apk)"
|
|
|
|
|
|
|
|
# If the edge/community repo isn't present, it needs to be for astyle
|
|
|
|
if ! grep -q "edge/community" /etc/apk/repositories; then
|
|
|
|
echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Install dependencies
|
2022-01-31 11:04:38 +01:00
|
|
|
${SUDO} apk add --no-cache bash curl wget git python3 python3-dev py3-pip build-base zlib-dev yaml-dev ninja
|
2020-10-20 06:07:04 +02:00
|
|
|
python3 -m pip install -U -r requirements.txt
|
2023-04-24 08:02:57 +02:00
|
|
|
cp tools/precommit_check_no_assets.sh "$(git rev-parse --git-path hooks)/pre-commit" || exit 1
|
2020-10-20 06:07:04 +02:00
|
|
|
|
|
|
|
# Install binutils if required
|
|
|
|
if ! command -v mips-linux-gnu-ar &> /dev/null; then
|
|
|
|
PKG="mips-linux-gnu-binutils"
|
|
|
|
|
|
|
|
RETURNDIR="$(pwd)"
|
|
|
|
cd "$(mktemp -d)"
|
|
|
|
|
|
|
|
wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2
|
|
|
|
tar -xf binutils-2.35.tar.bz2
|
|
|
|
|
|
|
|
cd binutils-2.35
|
|
|
|
sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
|
|
|
|
./configure --target=mips-linux-gnu \
|
|
|
|
--with-sysroot=/usr/mips-linux-gnu \
|
|
|
|
--prefix=/usr \
|
|
|
|
--disable-multilib \
|
|
|
|
--with-gnu-as \
|
|
|
|
--with-gnu-ld \
|
|
|
|
--disable-nls \
|
|
|
|
--enable-ld=default \
|
|
|
|
--enable-plugins \
|
|
|
|
--enable-deterministic-archives \
|
|
|
|
--disable-werror
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} make
|
|
|
|
${SUDO} make install
|
2020-10-20 06:07:04 +02:00
|
|
|
|
|
|
|
cd ..
|
|
|
|
# delete temp directory we made
|
|
|
|
rm -rf "$(pwd)"
|
|
|
|
# go back to old dir
|
|
|
|
cd "${RETURNDIR}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $1 == "--extra" ]]; then
|
|
|
|
echo "Installing extra"
|
2021-07-27 13:17:51 +02:00
|
|
|
${SUDO} apk add --no-cache clang-extra-tools astyle doxygen || exit 1
|
2020-10-20 06:07:04 +02:00
|
|
|
python3 -m pip install -U -r requirements_extra.txt || exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
2022-02-08 19:33:05 +01:00
|
|
|
if [ "$supported" != true ]; then
|
2023-06-26 12:27:37 +02:00
|
|
|
echo "The following distros (and their derivatives) are supported by install_deps.sh:"
|
2022-01-31 11:04:38 +01:00
|
|
|
echo "- Debian/Ubuntu (apt)"
|
|
|
|
echo "- Arch Linux (pacman)"
|
|
|
|
echo "- openSUSE (zypper)"
|
|
|
|
echo "- Alpine Linux (apk)"
|
2023-05-09 06:27:53 +02:00
|
|
|
echo "- Fedora (dnf)"
|
2022-01-31 11:04:38 +01:00
|
|
|
echo "Please consider contributing and adding an installation script for your distro."
|
|
|
|
exit 1
|
|
|
|
fi
|