mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 05:06:43 +00:00
scripts/checkdeps: use bash arrays
This commit is contained in:
parent
6dd752a283
commit
a33d54695d
@ -21,23 +21,22 @@
|
|||||||
. config/options $1
|
. config/options $1
|
||||||
|
|
||||||
get_deps() {
|
get_deps() {
|
||||||
need=""
|
need=()
|
||||||
need_pkg=""
|
need_pkg=()
|
||||||
|
|
||||||
i=0
|
for i in "${!deps[@]}"; do
|
||||||
while dep=`getarg $i $deps` && [ -n "$dep" ]; do
|
dep=${deps[$i]}
|
||||||
[ -z "`which $dep 2>/dev/null`" ] && need="$need $dep" && need_pkg="$need_pkg `getarg $i $deps_pkg`"
|
dep_pkg=${deps_pkg[$i]}
|
||||||
i=$(($i+1))
|
[ -z "`which $dep 2>/dev/null`" ] && need+=($dep) && need_pkg+=($dep_pkg)
|
||||||
done
|
done
|
||||||
|
|
||||||
i=0
|
for i in "${!files[@]}"; do
|
||||||
while file=`getarg $i $files` && [ -n "$file" ]; do
|
file=${files[$i]}
|
||||||
|
file_pkg=${files_pkg[$i]}
|
||||||
installed=N
|
installed=N
|
||||||
file_pkg=`getarg $i $files_pkg`
|
|
||||||
[ "$(type -t "test_$file_pkg")" == "function" ] && test_$file_pkg && installed=Y
|
[ "$(type -t "test_$file_pkg")" == "function" ] && test_$file_pkg && installed=Y
|
||||||
[ $installed == N -a -f $file ] && installed=Y
|
[ $installed == N -a -f "$file" ] && installed=Y
|
||||||
[ $installed == N ] && need="$need $file" && need_pkg="$need_pkg $file_pkg"
|
[ $installed == N ] && need+=($file) && need_pkg+=($file_pkg)
|
||||||
i=$(($i+1))
|
|
||||||
done
|
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)
|
DISTRO=$(grep ^ID= /etc/os-release | cut -d "=" -f 2 | tr A-Z a-z)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
deps="wget bash bc gcc sed patch lsdiff tar bzip2 gzip perl gawk gperf zip unzip diff 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"
|
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=(/usr/include/stdio.h /usr/include/ncurses.h)
|
||||||
files_pkg="libc6-dev libncurses5-dev"
|
files_pkg=(libc6-dev libncurses5-dev)
|
||||||
|
|
||||||
case "$DISTRO" in
|
case "$DISTRO" in
|
||||||
fedora|centos|rhel)
|
fedora|centos|rhel)
|
||||||
deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python"
|
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"
|
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 glibc-static` ]] && deps+=(glibc-static) && deps_pkg+=(glibc-static)
|
||||||
[[ ! `rpm -qa libstdc++-static` ]] && deps="$deps libstdc++-static" && deps_pkg="$deps_pkg libstdc++-static"
|
[[ ! `rpm -qa libstdc++-static` ]] && deps+=(libstdc++-static) && deps_pkg+=(libstdc++-static)
|
||||||
files_pkg="glibc-headers ncurses-devel"
|
files_pkg=(glibc-headers ncurses-devel)
|
||||||
;;
|
;;
|
||||||
gentoo)
|
gentoo)
|
||||||
deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python"
|
deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python)
|
||||||
deps_pkg="$deps_pkg gcc[cxx] mkfontscale mkfontdir bdftopcf libxslt virtual/jre python"
|
deps_pkg+=("gcc[cxx]" mkfontscale mkfontdir bdftopcf libxslt virtual/jre python)
|
||||||
files_pkg="glibc ncurses"
|
files_pkg=(glibc ncurses)
|
||||||
;;
|
;;
|
||||||
arch)
|
arch)
|
||||||
deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python"
|
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_pkg+=(g++ xorg-mkfontscale xorg-mkfontdir xorg-bdftopcf libxslt java-runtime-common jdk8-openjdk python2)
|
||||||
;;
|
;;
|
||||||
opensuse)
|
opensuse)
|
||||||
deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python"
|
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"
|
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"
|
[[ ! `rpm -qa glibc-devel-static` ]] && deps+=(glibc-devel-static) && deps_pkg+=(glibc-devel-static)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
deps="$deps g++ mkfontscale mkfontdir bdftopcf xsltproc java python"
|
deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python)
|
||||||
deps_pkg="$deps_pkg g++ xfonts-utils xfonts-utils xfonts-utils xsltproc default-jre python"
|
deps_pkg+=(g++ xfonts-utils xfonts-utils xfonts-utils xsltproc default-jre python)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if ! test_libjson-perl; then
|
if ! test_libjson-perl; then
|
||||||
files="$files perl/JSON.pm"
|
files+=(perl/JSON.pm)
|
||||||
case "$DISTRO" in
|
case "$DISTRO" in
|
||||||
arch)
|
arch)
|
||||||
files_pkg="$files_pkg perl-json"
|
files_pkg+=(perl-json)
|
||||||
;;
|
;;
|
||||||
fedora|centos|rhel|opensuse)
|
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
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# project specific dependencies
|
# project specific dependencies
|
||||||
if [ -n "$EXTRA_DEPS" ] ; then
|
if [ -n "$EXTRA_DEPS" ] ; then
|
||||||
deps="$deps $EXTRA_DEPS"
|
deps+=($EXTRA_DEPS)
|
||||||
fi
|
fi
|
||||||
if [ -n "$EXTRA_DEPS_PKG" ] ; then
|
if [ -n "$EXTRA_DEPS_PKG" ] ; then
|
||||||
deps_pkg="$deps_pkg $EXTRA_DEPS_PKG"
|
deps_pkg+=($EXTRA_DEPS_PKG)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# distro specific dependencies
|
# distro specific dependencies
|
||||||
if [ -n "$DISTRO_DEPS" ] ; then
|
if [ -n "$DISTRO_DEPS" ] ; then
|
||||||
deps="$deps $DISTRO_DEPS"
|
deps+=($DISTRO_DEPS)
|
||||||
fi
|
fi
|
||||||
if [ -n "$DISTRO_DEPS_PKG" ] ; then
|
if [ -n "$DISTRO_DEPS_PKG" ] ; then
|
||||||
deps_pkg="$deps_pkg $DISTRO_DEPS_PKG"
|
deps_pkg+=($DISTRO_DEPS_PKG)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$need" ]; then
|
get_deps
|
||||||
|
|
||||||
|
if [ "${#need[@]}" -gt 0 ]; then
|
||||||
echo "**** Your system lacks the following tools needed to build $DISTRONAME ****"
|
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 ****"
|
echo "**** You seem to use a $DISTRO system ****"
|
||||||
|
|
||||||
case "$DISTRO" in
|
case "$DISTRO" in
|
||||||
ubuntu|debian|linuxmint|\"elementary\")
|
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)
|
fedora|centos|rhel)
|
||||||
if [ `which dnf` ]; then YUM=dnf; else YUM=yum; fi
|
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)
|
gentoo)
|
||||||
get_yes_no && sudo emerge --ask --deep $need_pkg
|
get_yes_no && sudo emerge --ask --deep "${need_pkg[@]}"
|
||||||
;;
|
;;
|
||||||
mageia)
|
mageia)
|
||||||
get_yes_no && sudo urpmi $need_pkg
|
get_yes_no && sudo urpmi "${need_pkg[@]}"
|
||||||
;;
|
;;
|
||||||
arch)
|
arch)
|
||||||
get_yes_no && sudo pacman -Sy $need_pkg
|
get_yes_no && sudo pacman -Sy "${need_pkg[@]}"
|
||||||
;;
|
;;
|
||||||
opensuse)
|
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 ****"
|
echo "**** unsupported distro $DISTRO ****"
|
||||||
@ -172,9 +175,11 @@ fi
|
|||||||
|
|
||||||
get_deps
|
get_deps
|
||||||
|
|
||||||
if [ -n "$need" ]; then
|
if [ "${#need[@]}" -gt 0 ]; then
|
||||||
echo "**** The following packages were not installed correctly ****"
|
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 "********"
|
echo "********"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user