diff --git a/scripts/checkdeps b/scripts/checkdeps index 21cd1c9ce6..dddcb4aaa6 100755 --- a/scripts/checkdeps +++ b/scripts/checkdeps @@ -21,23 +21,22 @@ . config/options $1 get_deps() { - need="" - need_pkg="" + need=() + need_pkg=() - i=0 - while dep=`getarg $i $deps` && [ -n "$dep" ]; do - [ -z "`which $dep 2>/dev/null`" ] && need="$need $dep" && need_pkg="$need_pkg `getarg $i $deps_pkg`" - i=$(($i+1)) + for i in "${!deps[@]}"; do + dep=${deps[$i]} + dep_pkg=${deps_pkg[$i]} + [ -z "`which $dep 2>/dev/null`" ] && need+=($dep) && need_pkg+=($dep_pkg) done - i=0 - while file=`getarg $i $files` && [ -n "$file" ]; do + for i in "${!files[@]}"; do + file=${files[$i]} + file_pkg=${files_pkg[$i]} installed=N - file_pkg=`getarg $i $files_pkg` [ "$(type -t "test_$file_pkg")" == "function" ] && test_$file_pkg && installed=Y - [ $installed == N -a -f $file ] && installed=Y - [ $installed == N ] && need="$need $file" && need_pkg="$need_pkg $file_pkg" - i=$(($i+1)) + [ $installed == N -a -f "$file" ] && installed=Y + [ $installed == N ] && need+=($file) && need_pkg+=($file_pkg) done } @@ -73,95 +72,99 @@ if [ -f /etc/os-release ]; then DISTRO=$(grep ^ID= /etc/os-release | cut -d "=" -f 2 | tr A-Z a-z) fi -deps="wget bash bc gcc sed patch lsdiff tar bzip2 gzip perl gawk gperf zip unzip diff lzop" -deps_pkg="wget bash bc gcc sed patch patchutils tar bzip2 gzip perl gawk gperf zip unzip diffutils lzop" +deps=(wget bash bc gcc sed patch lsdiff tar bzip2 gzip perl gawk gperf zip unzip diff lzop) +deps_pkg=(wget bash bc gcc sed patch patchutils tar bzip2 gzip perl gawk gperf zip unzip diffutils lzop) -files="/usr/include/stdio.h /usr/include/ncurses.h" -files_pkg="libc6-dev libncurses5-dev" +files=(/usr/include/stdio.h /usr/include/ncurses.h) +files_pkg=(libc6-dev libncurses5-dev) case "$DISTRO" in fedora|centos|rhel) - deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python" - deps_pkg="$deps_pkg gcc-c++ xorg-x11-font-utils xorg-x11-font-utils xorg-x11-font-utils libxslt java-1.7.0-openjdk python2" - [[ ! `rpm -qa glibc-static` ]] && deps="$deps glibc-static" && deps_pkg="$deps_pkg glibc-static" - [[ ! `rpm -qa libstdc++-static` ]] && deps="$deps libstdc++-static" && deps_pkg="$deps_pkg libstdc++-static" - files_pkg="glibc-headers ncurses-devel" + deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python) + deps_pkg+=(gcc-c++ xorg-x11-font-utils xorg-x11-font-utils xorg-x11-font-utils libxslt java-1.7.0-openjdk python2) + [[ ! `rpm -qa glibc-static` ]] && deps+=(glibc-static) && deps_pkg+=(glibc-static) + [[ ! `rpm -qa libstdc++-static` ]] && deps+=(libstdc++-static) && deps_pkg+=(libstdc++-static) + files_pkg=(glibc-headers ncurses-devel) ;; gentoo) - deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python" - deps_pkg="$deps_pkg gcc[cxx] mkfontscale mkfontdir bdftopcf libxslt virtual/jre python" - files_pkg="glibc ncurses" + deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python) + deps_pkg+=("gcc[cxx]" mkfontscale mkfontdir bdftopcf libxslt virtual/jre python) + files_pkg=(glibc ncurses) ;; arch) - deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python" - deps_pkg="$deps_pkg g++ xorg-mkfontscale xorg-mkfontdir xorg-bdftopcf libxslt java-runtime-common jdk8-openjdk python2" + deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python) + deps_pkg+=(g++ xorg-mkfontscale xorg-mkfontdir xorg-bdftopcf libxslt java-runtime-common jdk8-openjdk python2) ;; opensuse) - deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python" - deps_pkg="$deps_pkg gcc-c++ mkfontscale mkfontdir bdftopcf libxslt-tools java-1_8_0-openjdk python" - [[ ! `rpm -qa glibc-devel-static` ]] && deps="$deps glibc-devel-static" && deps_pkg="$deps_pkg glibc-devel-static" + deps+=( g++ mkfontscale mkfontdir bdftopcf xsltproc java python) + deps_pkg+=(gcc-c++ mkfontscale mkfontdir bdftopcf libxslt-tools java-1_8_0-openjdk python) + [[ ! `rpm -qa glibc-devel-static` ]] && deps+=(glibc-devel-static) && deps_pkg+=(glibc-devel-static) ;; *) - deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python" - deps_pkg="$deps_pkg g++ xfonts-utils xfonts-utils xfonts-utils xsltproc default-jre python" + deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python) + deps_pkg+=(g++ xfonts-utils xfonts-utils xfonts-utils xsltproc default-jre python) ;; esac if ! test_libjson-perl; then - files="$files perl/JSON.pm" + files+=(perl/JSON.pm) case "$DISTRO" in arch) - files_pkg="$files_pkg perl-json" + files_pkg+=(perl-json) ;; fedora|centos|rhel|opensuse) - files_pkg="$files_pkg perl-JSON" + files_pkg+=(perl-JSON) ;; *) - files_pkg="$files_pkg libjson-perl" + files_pkg+=(libjson-perl) ;; esac fi # project specific dependencies if [ -n "$EXTRA_DEPS" ] ; then - deps="$deps $EXTRA_DEPS" + deps+=($EXTRA_DEPS) fi if [ -n "$EXTRA_DEPS_PKG" ] ; then - deps_pkg="$deps_pkg $EXTRA_DEPS_PKG" + deps_pkg+=($EXTRA_DEPS_PKG) fi # distro specific dependencies if [ -n "$DISTRO_DEPS" ] ; then - deps="$deps $DISTRO_DEPS" + deps+=($DISTRO_DEPS) fi if [ -n "$DISTRO_DEPS_PKG" ] ; then - deps_pkg="$deps_pkg $DISTRO_DEPS_PKG" + deps_pkg+=($DISTRO_DEPS_PKG) fi -if [ -n "$need" ]; then +get_deps + +if [ "${#need[@]}" -gt 0 ]; then echo "**** Your system lacks the following tools needed to build $DISTRONAME ****" - echo $need provided by $need_pkg + for i in "${!need[@]}"; do + echo "${need[$i]} provided by ${need_pkg[$i]}" + done echo "**** You seem to use a $DISTRO system ****" case "$DISTRO" in ubuntu|debian|linuxmint|\"elementary\") - get_yes_no && sudo apt-get install $need_pkg + get_yes_no && sudo apt-get install "${need_pkg[@]}" ;; fedora|centos|rhel) if [ `which dnf` ]; then YUM=dnf; else YUM=yum; fi - get_yes_no && sudo $YUM install $need_pkg + get_yes_no && sudo $YUM install "${need_pkg[@]}" ;; gentoo) - get_yes_no && sudo emerge --ask --deep $need_pkg + get_yes_no && sudo emerge --ask --deep "${need_pkg[@]}" ;; mageia) - get_yes_no && sudo urpmi $need_pkg + get_yes_no && sudo urpmi "${need_pkg[@]}" ;; arch) - get_yes_no && sudo pacman -Sy $need_pkg + get_yes_no && sudo pacman -Sy "${need_pkg[@]}" ;; opensuse) - get_yes_no && sudo zypper install -y --no-recommends $need_pkg + get_yes_no && sudo zypper install -y --no-recommends "${need_pkg[@]}" ;; *) echo "**** unsupported distro $DISTRO ****" @@ -172,9 +175,11 @@ fi get_deps -if [ -n "$need" ]; then +if [ "${#need[@]}" -gt 0 ]; then echo "**** The following packages were not installed correctly ****" - echo $need_pkg + for i in "${!need[@]}"; do + echo "${need[$i]} provided by ${need_pkg[$i]}" + done echo "********" exit 1 fi