diff --git a/Dockerfile b/Dockerfile index f6a908cfc2..7d698140f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ COPY requirements.txt / COPY requirements_extra.txt / COPY install.sh / -RUN apt-get update && apt-get install -y sudo && ./install.sh --extra +RUN apt-get update && ./install.sh --extra RUN mkdir /papermario WORKDIR /papermario diff --git a/INSTALL.md b/INSTALL.md index bb86660631..4f4e96027a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -9,8 +9,7 @@ This repository supports: If you encounter any issues setting up the repo, please feel free to [reach out to us on Discord](https://discord.gg/urUm3VG). - -## Unix +## Common Clone the repository: ```sh @@ -18,6 +17,8 @@ git clone https://github.com/pmret/papermario cd papermario ``` +## Unix + Install build dependencies: ```sh ./install.sh @@ -64,4 +65,4 @@ docker build . -t pm docker run --rm -ti -v $(pwd):/papermario pm ``` -Then continue with [the instructions for Linux](#unix). +Then continue with [the instructions for Linux](#unix), but you can skip the install.sh! diff --git a/install.sh b/install.sh index fdcdfe0a5a..ba473a2e01 100755 --- a/install.sh +++ b/install.sh @@ -1,17 +1,23 @@ #!/bin/bash +if [[ "$UID" -eq "0" ]]; then + SUDO="" +else + SUDO=sudo +fi + # Debian and derivatives (apt) if cat /etc/os-release | grep -E 'ID=debian|ID_LIKE=debian' &> /dev/null; then echo "Installing packages for Debian or derivative (apt)" # Add i386 arch for wine32 # sudo dpkg --add-architecture i386 - sudo apt install -y git python3 python3-pip python3-setuptools build-essential binutils-mips-linux-gnu zlib1g-dev libyaml-dev ninja-build || exit 1 + ${SUDO} apt install -y git python3 python3-pip python3-setuptools build-essential binutils-mips-linux-gnu zlib1g-dev libyaml-dev ninja-build || exit 1 python3 -m pip install -U -r requirements.txt if [[ $1 == "--extra" ]]; then echo "Installing extra" - sudo apt install -y clang-tidy astyle doxygen || exit 1 + ${SUDO} apt install -y clang-tidy astyle doxygen || exit 1 python3 -m pip install -U -r requirements_extra.txt || exit 1 fi @@ -24,21 +30,21 @@ if cat /etc/os-release | grep -E 'ID=arch|ID_LIKE=arch' &> /dev/null; then echo "Installing packages for Arch Linux or derivative (pacman)" # Upgrade existing packages (note: no --noconfirm) - sudo pacman -Syu || exit 1 + ${SUDO} pacman -Syu || exit 1 # Install dependencies - sudo pacman -S --noconfirm --needed git python python-pip python-setuptools base-devel zlib libyaml ninja || exit 1 + ${SUDO} pacman -S --noconfirm --needed git python python-pip python-setuptools base-devel zlib libyaml ninja || exit 1 python3 -m pip install -U -r requirements.txt # 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 - sudo aura -A --noconfirm $PKG || exit 1 + ${SUDO} aura -A --noconfirm $PKG || exit 1 elif command -v yay &> /dev/null; then yay -S --noconfirm $PKG || exit 1 elif command -v yaourt &> /dev/null; then - sudo yaourt -S --noconfirm $PKG || exit 1 + ${SUDO} yaourt -S --noconfirm $PKG || exit 1 else echo "AUR manager not found, installing $PKG without one" @@ -52,7 +58,7 @@ if cat /etc/os-release | grep -E 'ID=arch|ID_LIKE=arch' &> /dev/null; then if [[ $1 == "--extra" ]]; then echo "Installing extra" - sudo pacman -S --noconfirm --needed clang astyle doxygen || exit 1 + ${SUDO} pacman -S --noconfirm --needed clang astyle doxygen || exit 1 python3 -m pip install -U -r requirements_extra.txt || exit 1 fi @@ -64,30 +70,30 @@ fi if cat /etc/os-release | grep ID=opensuse &> /dev/null; then echo "Installing packages for openSUSE (zypper)" - sudo zypper -n install git python3 python3-devel python3-pip python3-setuptools gcc gcc-c++ glibc-devel make cross-mips-binutils zlib-devel libyaml-devel ninja + ${SUDO} zypper -n install git python3 python3-devel python3-pip python3-setuptools gcc gcc-c++ glibc-devel make cross-mips-binutils zlib-devel libyaml-devel ninja # Link the openSUSE locations for binutils tools to their usual GNU locations - 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 + ${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 python3 -m pip install -U -r requirements.txt if [[ $1 == "--extra" ]]; then echo "Installing extra" - sudo zypper -n install clang astyle doxygen || exit 1 + ${SUDO} zypper -n install clang astyle doxygen || exit 1 python3 -m pip install -U -r requirements_extra.txt || exit 1 fi @@ -105,7 +111,7 @@ if cat /etc/os-release | grep ID=alpine &> /dev/null; then fi # Install dependencies - sudo apk add --no-cache bash wget git python3 python3-dev py3-pip build-base zlib-dev yaml-dev ninja + ${SUDO} apk add --no-cache bash wget git python3 python3-dev py3-pip build-base zlib-dev yaml-dev ninja python3 -m pip install -U -r requirements.txt # Install binutils if required @@ -131,8 +137,8 @@ if cat /etc/os-release | grep ID=alpine &> /dev/null; then --enable-plugins \ --enable-deterministic-archives \ --disable-werror - sudo make - sudo make install + ${SUDO} make + ${SUDO} make install cd .. # delete temp directory we made @@ -143,7 +149,7 @@ if cat /etc/os-release | grep ID=alpine &> /dev/null; then if [[ $1 == "--extra" ]]; then echo "Installing extra" - sudo apk add --no-cache clang-extra-tools astyle doxygen || exit 1 + ${SUDO} apk add --no-cache clang-extra-tools astyle doxygen || exit 1 python3 -m pip install -U -r requirements_extra.txt || exit 1 fi