diff --git a/README.mkdn b/README.mkdn index c7b7d4c9..022ccf61 100644 --- a/README.mkdn +++ b/README.mkdn @@ -8,13 +8,14 @@ Then, run these commands ```bash $ git clone https://github.com/akhilnarang/scripts $ cd scripts -$ bash setup/ +$ bash setup/android_build_env.sh ``` -`android_build_env.sh` is for Ubuntu/Linux Mint/other distributions using the `apt` package manager. -The rest are named as per the distro. +OR -Please run the correct script depending on the distro you have installed! +```bash +$ bash -c "$(curl -sL https://raw.githubusercontent.com/akhilnarang/scripts/master/setup/android_build_env.sh)" +``` Enjoy! diff --git a/files b/files index 980f25ea..46ceec13 100644 --- a/files +++ b/files @@ -30,14 +30,11 @@ rr/crowdin.sh rr/copy_ftp.sh rr/push_json.sh setup/android_build_env.sh -setup/arch-manjaro.sh setup/ccache.sh setup/create_user.sh setup/crowdin-cli.sh -setup/fedora.sh setup/git.sh setup/hub.sh setup/install_android_sdk.sh setup/make.sh -setup/solus.sh zsh/setup.sh diff --git a/setup/android_build_env.sh b/setup/android_build_env.sh index 913c1673..bfe0030d 100755 --- a/setup/android_build_env.sh +++ b/setup/android_build_env.sh @@ -6,66 +6,180 @@ # Script to setup an AOSP Build environment on Ubuntu and Linux Mint -LATEST_MAKE_VERSION="4.3" -UBUNTU_16_PACKAGES="libesd0-dev" -UBUNTU_20_PACKAGES="libncurses5 curl python-is-python3" -DEBIAN_10_PACKAGES="libncurses5" -DEBIAN_11_PACKAGES="libncurses5" -PACKAGES="" - -sudo apt install software-properties-common -y -sudo apt update - -# Install lsb-core packages -sudo apt install lsb-core -y - -LSB_RELEASE="$(lsb_release -d | cut -d ':' -f 2 | sed -e 's/^[[:space:]]*//')" - -if [[ ${LSB_RELEASE} =~ "Mint 18" || ${LSB_RELEASE} =~ "Ubuntu 16" ]]; then - PACKAGES="${UBUNTU_16_PACKAGES}" -elif [[ ${LSB_RELEASE} =~ "Ubuntu 20" || ${LSB_RELEASE} =~ "Ubuntu 21" || ${LSB_RELEASE} =~ "Ubuntu 22" ]]; then - PACKAGES="${UBUNTU_20_PACKAGES}" -elif [[ ${LSB_RELEASE} =~ "Debian GNU/Linux 10" ]]; then - PACKAGES="${DEBIAN_10_PACKAGES}" -elif [[ ${LSB_RELEASE} =~ "Debian GNU/Linux 11" ]]; then - PACKAGES="${DEBIAN_11_PACKAGES}" -fi +tput reset 2>/dev/null || clear + +# Ubuntu/Debian Based Distros +if [[ "$(command -v apt)" != "" ]]; then + + echo "Debian/Ubuntu Based Distro Detected" + sleep 1 + + LATEST_MAKE_VERSION="4.3" + UBUNTU_16_PACKAGES="libesd0-dev" + UBUNTU_20_PACKAGES="libncurses5 curl python-is-python3" + DEBIAN_10_PACKAGES="libncurses5" + DEBIAN_11_PACKAGES="libncurses5" + PACKAGES="" + + sudo apt install software-properties-common -y + sudo apt update -sudo DEBIAN_FRONTEND=noninteractive \ - apt install \ - adb autoconf automake axel bc bison build-essential \ - ccache clang cmake curl expat fastboot flex g++ \ - g++-multilib gawk gcc gcc-multilib git gnupg gperf \ - htop imagemagick lib32ncurses5-dev lib32z1-dev libtinfo5 libc6-dev libcap-dev \ - libexpat1-dev libgmp-dev '^liblz4-.*' '^liblzma.*' libmpc-dev libmpfr-dev libncurses5-dev \ - libsdl1.2-dev libssl-dev libtool libxml2 libxml2-utils '^lzma.*' lzop \ - maven ncftp ncurses-dev patch patchelf pkg-config pngcrush \ - pngquant python2.7 python-all-dev re2c schedtool squashfs-tools subversion \ - texinfo unzip w3m xsltproc zip zlib1g-dev lzip \ - libxml-simple-perl libswitch-perl apt-utils \ - ${PACKAGES} -y - -echo -e "Installing GitHub CLI" -curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg -sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg -echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null -sudo apt update -sudo apt install -y gh - -echo -e "Setting up udev rules for adb!" -sudo curl --create-dirs -L -o /etc/udev/rules.d/51-android.rules -O -L https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules -sudo chmod 644 /etc/udev/rules.d/51-android.rules -sudo chown root /etc/udev/rules.d/51-android.rules -sudo systemctl restart udev - -if [[ "$(command -v make)" ]]; then - makeversion="$(make -v | head -1 | awk '{print $3}')" - if [[ ${makeversion} != "${LATEST_MAKE_VERSION}" ]]; then - echo "Installing make ${LATEST_MAKE_VERSION} instead of ${makeversion}" - bash "$(dirname "$0")"/make.sh "${LATEST_MAKE_VERSION}" + # Install lsb-core packages + sudo apt install lsb-core -y + + LSB_RELEASE="$(lsb_release -d | cut -d ':' -f 2 | sed -e 's/^[[:space:]]*//')" + + if [[ ${LSB_RELEASE} =~ "Mint 18" || ${LSB_RELEASE} =~ "Ubuntu 16" ]]; then + PACKAGES="${UBUNTU_16_PACKAGES}" + elif [[ ${LSB_RELEASE} =~ "Ubuntu 20" || ${LSB_RELEASE} =~ "Ubuntu 21" || ${LSB_RELEASE} =~ "Ubuntu 22" ]]; then + PACKAGES="${UBUNTU_20_PACKAGES}" + elif [[ ${LSB_RELEASE} =~ "Debian GNU/Linux 10" ]]; then + PACKAGES="${DEBIAN_10_PACKAGES}" + elif [[ ${LSB_RELEASE} =~ "Debian GNU/Linux 11" ]]; then + PACKAGES="${DEBIAN_11_PACKAGES}" fi -fi -echo "Installing repo" -sudo curl --create-dirs -L -o /usr/local/bin/repo -O -L https://storage.googleapis.com/git-repo-downloads/repo -sudo chmod a+rx /usr/local/bin/repo + sudo DEBIAN_FRONTEND=noninteractive \ + apt install \ + adb autoconf automake axel bc bison build-essential \ + ccache clang cmake curl expat fastboot flex g++ \ + g++-multilib gawk gcc gcc-multilib git gnupg gperf \ + htop imagemagick lib32ncurses5-dev lib32z1-dev libtinfo5 libc6-dev libcap-dev \ + libexpat1-dev libgmp-dev '^liblz4-.*' '^liblzma.*' libmpc-dev libmpfr-dev libncurses5-dev \ + libsdl1.2-dev libssl-dev libtool libxml2 libxml2-utils '^lzma.*' lzop \ + maven ncftp ncurses-dev patch patchelf pkg-config pngcrush \ + pngquant python2.7 python-all-dev re2c schedtool squashfs-tools subversion \ + texinfo unzip w3m xsltproc zip zlib1g-dev lzip \ + libxml-simple-perl libswitch-perl apt-utils \ + ${PACKAGES} -y + + echo -e "Installing GitHub CLI" + curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg + sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null + sudo apt update + sudo apt install -y gh + + echo -e "Setting up udev rules for adb!" + sudo curl --create-dirs -L -o /etc/udev/rules.d/51-android.rules -O -L https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules + sudo chmod 644 /etc/udev/rules.d/51-android.rules + sudo chown root /etc/udev/rules.d/51-android.rules + sudo systemctl restart udev + + if [[ "$(command -v make)" ]]; then + makeversion="$(make -v | head -1 | awk '{print $3}')" + if [[ ${makeversion} != "${LATEST_MAKE_VERSION}" ]]; then + echo "Installing make ${LATEST_MAKE_VERSION} instead of ${makeversion}" + bash "$(dirname "$0")"/make.sh "${LATEST_MAKE_VERSION}" + fi + fi + + echo "Installing repo" + sudo curl --create-dirs -L -o /usr/local/bin/repo -O -L https://storage.googleapis.com/git-repo-downloads/repo + sudo chmod a+rx /usr/local/bin/repo + + echo 'Setup completed, enjoy' + exit 0 + +# Arch Based Distros +elif [[ "$(command -v pacman)" != "" ]]; then + + echo "Arch Based Distro Detected" + sleep 1 + + echo 'Starting Arch-based Android build setup' + # Uncomment the multilib repo, incase it was commented out + echo '[1/4] Enabling multilib repo' + sudo sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf + # Sync, update, and prepare system + echo '[2/4] Syncing repositories and updating system packages' + sudo pacman -Syyu --noconfirm --needed multilib-devel + # Install android build prerequisites + echo '[3/4] Installing Android building prerequisites' + packages="ncurses5-compat-libs lib32-ncurses5-compat-libs aosp-devel xml2 lineageos-devel libxcrypt-compat" + for package in $packages; do + echo "Installing $package" + git clone https://aur.archlinux.org/"$package" + cd "$package" || exit + makepkg -si --skippgpcheck --noconfirm --needed + cd - || exit + rm -rf "$package" + done + + # Install adb and associated udev rules + echo '[4/4] Installing adb convenience tools' + sudo pacman -S --noconfirm --needed android-tools android-udev + + echo 'Setup completed, enjoy' + exit 0 + +# Fedora/RHEL Based Distros +elif [[ "$(command -v dnf)" != "" ]]; then + + echo "Fedora Based Distro Detected" + sleep 1 + + # Packages + sudo dnf install \ + android-tools autoconf213 bison bzip2 ccache curl patch \ + flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static \ + libX11-devel make mesa-libGL-devel ncurses-devel openssl \ + zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 \ + libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 \ + libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA python2 wget \ + lzop openssl-devel java-1.8.0-openjdk-devel ImageMagick \ + ncurses-compat-libs schedtool lzip vboot-utils vim + + # The package libncurses5 is not available, so we need to hack our way by symlinking the required library. + sudo ln -s /usr/lib/libncurses.so.6 /usr/lib/libncurses.so.5 + sudo ln -s /usr/lib/libncurses.so.6 /usr/lib/libtinfo.so.5 + + # Repo + echo "Installing Git Repository Tool" + sudo curl --create-dirs -L -o /usr/local/bin/repo -O -L https://storage.googleapis.com/git-repo-downloads/repo + sudo chmod a+rx /usr/local/bin/repo + + echo -e "Setting up udev rules for ADB!" + sudo curl --create-dirs -L -o /etc/udev/rules.d/51-android.rules -O -L https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules + sudo chmod 644 /etc/udev/rules.d/51-android.rules + sudo chown root /etc/udev/rules.d/51-android.rules + sudo udevadm control --reload-rules + + echo 'Setup completed, enjoy' + exit 0 + +# Solus +elif [[ "$(command -v eopkg)" != "" ]]; then + + echo "Solus Detected" + sleep 1 + + sudo eopkg it -c system.devel + sudo eopkg it openjdk-8-devel curl-devel git gnupg gperf libgcc-32bit libxslt-devel lzop ncurses-32bit-devel ncurses-devel readline-32bit-devel rsync schedtool sdl1-devel squashfs-tools unzip wxwidgets-devel zip zlib-32bit-devel lzip + + # ADB/Fastboot + sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/tools/android-tools/pspec.xml + sudo eopkg it android-tools*.eopkg + sudo rm android-tools*.eopkg + + # udev rules + echo "Setting up udev rules for adb!" + sudo curl --create-dirs -L -o /etc/udev/rules.d/51-android.rules -O -L https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules + sudo chmod 644 /etc/udev/rules.d/51-android.rules + sudo chown root /etc/udev/rules.d/51-android.rules + sudo usysconf run -f + + echo "Installing repo" + sudo curl --create-dirs -L -o /usr/local/bin/repo -O -L https://storage.googleapis.com/git-repo-downloads/repo + sudo chmod a+x /usr/local/bin/repo + + echo "You are now ready to build Android!" + exit 0 + +# Other Distros (Unsupported) +else + + echo "Sorry, your distro is not Supported!" + exit 1 + +fi diff --git a/setup/arch-manjaro.sh b/setup/arch-manjaro.sh deleted file mode 100755 index 3a307c79..00000000 --- a/setup/arch-manjaro.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -# Script to setup an android build environment on Arch Linux and derivative distributions - -clear -echo 'Starting Arch-based Android build setup' -# Uncomment the multilib repo, incase it was commented out -echo '[1/4] Enabling multilib repo' -sudo sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf -# Sync, update, and prepare system -echo '[2/4] Syncing repositories and updating system packages' -sudo pacman -Syyu --noconfirm --needed multilib-devel -# Install android build prerequisites -echo '[3/4] Installing Android building prerequisites' -packages="ncurses5-compat-libs lib32-ncurses5-compat-libs aosp-devel xml2 lineageos-devel libxcrypt-compat" -for package in $packages; do - echo "Installing $package" - git clone https://aur.archlinux.org/"$package" - cd "$package" || exit - makepkg -si --skippgpcheck --noconfirm --needed - cd - || exit - rm -rf "$package" -done - -# Install adb and associated udev rules -echo '[4/4] Installing adb convenience tools' -sudo pacman -S --noconfirm --needed android-tools android-udev - -echo 'Setup completed, enjoy' diff --git a/setup/fedora.sh b/setup/fedora.sh deleted file mode 100755 index e357786c..00000000 --- a/setup/fedora.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env bash -# -# SPDX-License-Identifier: GPL-3.0-only -# -# Script to setup an Android 10 build -# environment for Fedora 31 / Rawhide. - -# Packages -sudo dnf install \ - android-tools \ - autoconf213 \ - bison \ - bzip2 \ - ccache \ - curl \ - flex \ - gawk \ - gcc-c++ \ - git \ - glibc-devel \ - glibc-static \ - libstdc++-static \ - libX11-devel \ - make \ - mesa-libGL-devel \ - ncurses-devel \ - openssl \ - patch \ - zlib-devel \ - ncurses-devel.i686 \ - readline-devel.i686 \ - zlib-devel.i686 \ - libX11-devel.i686 \ - mesa-libGL-devel.i686 \ - glibc-devel.i686 \ - libstdc++.i686 \ - libXrandr.i686 \ - zip \ - perl-Digest-SHA \ - python2 \ - wget \ - lzop \ - openssl-devel \ - java-1.8.0-openjdk-devel \ - ImageMagick \ - ncurses-compat-libs \ - schedtool \ - lzip \ - vboot-utils \ - vim - -# The package libncurses5 is not available, so we need to hack our way by symlinking the required library. -sudo ln -s /usr/lib/libncurses.so.6 /usr/lib/libncurses.so.5 -sudo ln -s /usr/lib/libncurses.so.6 /usr/lib/libtinfo.so.5 - -# Repo -echo "Installing Git Repository Tool" -sudo curl --create-dirs -L -o /usr/local/bin/repo -O -L https://storage.googleapis.com/git-repo-downloads/repo -sudo chmod a+rx /usr/local/bin/repo - -echo -e "Setting up udev rules for ADB!" -sudo curl --create-dirs -L -o /etc/udev/rules.d/51-android.rules -O -L https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules -sudo chmod 644 /etc/udev/rules.d/51-android.rules -sudo chown root /etc/udev/rules.d/51-android.rules -sudo udevadm control --reload-rules diff --git a/setup/solus.sh b/setup/solus.sh deleted file mode 100755 index fda221e3..00000000 --- a/setup/solus.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (C) 2019 ZVNexus -# SPDX-License-Identifier: GPL-3.0-only - -# Script to setup an AOSP build environment on Solus - -sudo eopkg it -c system.devel -sudo eopkg it openjdk-8-devel curl-devel git gnupg gperf libgcc-32bit libxslt-devel lzop ncurses-32bit-devel ncurses-devel readline-32bit-devel rsync schedtool sdl1-devel squashfs-tools unzip wxwidgets-devel zip zlib-32bit-devel lzip - -# ADB/Fastboot -sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/tools/android-tools/pspec.xml -sudo eopkg it android-tools*.eopkg -sudo rm android-tools*.eopkg - -# udev rules -echo "Setting up udev rules for adb!" -sudo curl --create-dirs -L -o /etc/udev/rules.d/51-android.rules -O -L https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules -sudo chmod 644 /etc/udev/rules.d/51-android.rules -sudo chown root /etc/udev/rules.d/51-android.rules -sudo usysconf run -f - -echo "Installing repo" -sudo curl --create-dirs -L -o /usr/local/bin/repo -O -L https://storage.googleapis.com/git-repo-downloads/repo -sudo chmod a+x /usr/local/bin/repo - -echo "You are now ready to build Android!"