From 745389c40057f5ef03abb8312756d3b24cd7c79a Mon Sep 17 00:00:00 2001 From: parazyd Date: Tue, 8 Nov 2022 11:38:08 +0100 Subject: [PATCH] Simplify project system dependencies. --- README.md | 25 +++++------- contrib/dependency_setup.sh | 80 +++++++++++++------------------------ 2 files changed, 36 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 25ee044c3..be3435422 100644 --- a/README.md +++ b/README.md @@ -36,28 +36,21 @@ Minimum Rust version supported is **1.65.0 (stable)**. The following dependencies are also required: -| Dependency | Debian-based | -|------------------------------|------------------| -| gcc, gcc-c++, kernel headers | build-essential | -| cmake | cmake | -| jq | jq | -| wget | wget | -| pkg-config | pkg-config | -| clang | clang | -| clang libs | libclang-dev | -| llvm libs | llvm-dev | -| udev libs | libudev-dev | -| freetype2 libs | libfreetype6-dev | -| expat xml lib | libexpat1-dev | +| Dependency | Debian-based | +|----------------|------------------| +| git | git | +| make | make | +| jq | jq | +| gcc | gcc | +| pkg-config | pkg-config | +| openssl libs | openssl-dev | Users of Debian-based systems (e.g. Ubuntu) can simply run the following to install the required dependencies: ```shell # apt-get update -# apt-get install -y build-essential cmake jq wget pkg-config \ - clang libclang-dev llvm-dev libudev-dev libfreetype6-dev \ - libexpat1-dev +# apt-get install -y git make jq gcc pkg-config openssl-dev ``` Alternatively, users can try using the automated script under `contrib` diff --git a/contrib/dependency_setup.sh b/contrib/dependency_setup.sh index 5b69c0f06..3495005f4 100644 --- a/contrib/dependency_setup.sh +++ b/contrib/dependency_setup.sh @@ -1,10 +1,10 @@ #!/bin/sh set -e -if [ "$UID" != 0 ]; then - SUDO="$(command -v sudo)" +if [ "$(id -u)" != 0 ]; then + SUDO="${SUDO:-$(command -v sudo)}" else - SUDO="" + SUDO="${SUDO:-}" fi brew_sh="https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh" @@ -15,99 +15,73 @@ setup_mac() { bash -c "$(curl -fL "${brew_sh}")" || return 1 fi - for i in cmake gcc jq pkgconf llvm@13 freetype expat; do + for i in cmake gcc jq pkgconf llvm@13; do echo "Installing $i with brew..." >&2 brew install "$i" || return 1 done } setup_apt() { - APTGET="$SUDO $1" - - $APTGET update || return 1 - $APTGET install -y build-essential cmake jq wget pkg-config \ - clang libclang-dev llvm-dev libudev-dev libfreetype6-dev \ - libexpat1-dev curl gcc make libssl-dev fonts-lato \ - libfontconfig-dev || return 1 + apt_deps="git make jq gcc pkg-config libssl-dev" + $1 install "$apt_deps" || return 1 } setup_pacman() { - PACMAN="$SUDO $1" - - $PACMAN -Sy base-devel cmake wget expat freetype2 fontconfig \ - jq openssl clang llvm libgudev + pacman_deps="git make jq gcc pkgconf openssl" + $1 -Sy "$pacman_deps" || return 1 } setup_xbps() { - XBPS="$SUDO $1" - - $XBPS -S base-devel cmake wget expat-devel freetype-devel \ - fontconfig-devel jq openssl-devel clang libclang llvm \ - libllvm12 libgudev-devel + xbps_deps="git make jq gcc pkg-config openssl-devel" + $1 -S "$xbps_deps" || return 1 } setup_dnf() { - DNF="$SUDO $1" - - $DNF install -y gcc gcc-c++ kernel-headers cmake jq wget \ - pkg-config clang clang-libs llvm-libs \ - rust-libudev-devel rust-freetype-rs-devel \ - rust-expat-sys-devel openssl-devel findutils \ - fontconfig-devel || return 1 + dnf_deps="git make jq gcc pkg-config openssl-devel findutils" + $1 install -y "$dnf_deps" || return 1 } setup_apk() { - APK="$SUDO $1" - - $APK update - $APK add cmake jq wget clang curl gcc make llvm-dev openssl-dev expat-dev \ - freetype-dev libudev-zero-dev libgudev-dev pkgconf clang-dev \ - fontconfig-dev build-base || return 1 + apk_deps="git make jq gcc musl-dev openssl-dev" + $1 add "$apk_deps" || return 1 } setup_zypper() { - ZYPPER="$SUDO $1" - - $ZYPPER install -y gcc gcc-c++ kernel-headers cmake jq wget git \ - pkg-config clang openssl-devel findutils \ - fontconfig-devel || return 1 + zypper_deps="git make jq gcc pkg-config openssl-devel findutils" + $1 install -y "$zypper_deps" || return 1 } setup_emerge() { - EMERGE="$SUDO $1" - - $EMERGE dev-util/cmake app-misc/jq net-misc/wget dev-util/pkgconf \ - virtual/libudev media-libs/freetype dev-libs/expat \ - net-misc/curl net-libs/libssh media-libs/fontconfig || return 1 -# sys-devel/clang failed, but it worked anyway + emerge_deps="dev-vcs/git app-misc/jq dev-util/pkgconf dev-libs/openssl" + $1 "$emerge_deps" || return 1 } case "$(uname -s)" in Linux) if command -v apt >/dev/null; then echo "Setting up for apt" >&2 - setup_apt "$(command -v apt)" || exit 1 + setup_apt "$SUDO $(command -v apt)" || exit 1 echo "Dependencies installed!" >&2 exit 0 fi if command -v apt-get >/dev/null; then echo "Setting up for apt-get" >&2 - setup_apt "$(command -v apt-get)" || exit 1 + setup_apt "$SUDO $(command -v apt-get)" || exit 1 echo "Dependencies installed!" >&2 exit 0 fi if command -v pacman; then echo "Setting up for pacman" >&2 - setup_pacman "$(command -v pacman)" || exit 1 + setup_pacman "$SUDO $(command -v pacman)" || exit 1 echo "Dependencies installed!" >&2 exit 0 fi if command -v xbps-install; then echo "Setting up for xbps" >&2 - setup_xbps "$(command -v xbps-install)" || exit 1 + setup_xbps "$SUDO $(command -v xbps-install)" || exit 1 echo "Dependencies installed!" >&2 exit 0 fi @@ -115,28 +89,28 @@ Linux) if command -v dnf; then echo "Setting up for dnf" >&2 - setup_dnf "$(command -v dnf)" || exit 1 + setup_dnf "$SUDO $(command -v dnf)" || exit 1 echo "Dependencies installed!" >&2 exit 0 fi if command -v apk; then echo "Setting up for apk" >&2 - setup_apk "$(command -v apk)" || exit 1 + setup_apk "$SUDO $(command -v apk)" || exit 1 echo "Dependencies installed!" >&2 exit 0 fi if command -v zypper; then echo "Setting up for zypper" >&2 - setup_zypper "$(command -v zypper)" || exit 1 + setup_zypper "$SUDO $(command -v zypper)" || exit 1 echo "Dependencies installed!" >&2 exit 0 fi if command -v emerge; then echo "Setting up for emerge" >&2 - setup_emerge "$(command -v emerge)" || exit 1 + setup_emerge "$SUDO $(command -v emerge)" || exit 1 echo "Dependencies installed!" >&2 exit 0 fi @@ -152,7 +126,7 @@ Darwin) exit 0 ;; -*|"") +""|*) echo "Unsupported OS, sorry." >&2 exit 1 ;;