From 0df9c0de6466d873554043b658a56a276ea2643d Mon Sep 17 00:00:00 2001 From: Christoph Gysin Date: Wed, 22 Nov 2017 23:15:04 +0200 Subject: [PATCH] scripts/checkdeps: simplify checking for perl modules --- scripts/checkdeps | 48 +++++++++++++++++------------------------------ 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/scripts/checkdeps b/scripts/checkdeps index 8b4452466f..e67ecb6521 100755 --- a/scripts/checkdeps +++ b/scripts/checkdeps @@ -34,10 +34,19 @@ get_deps() { file=${files[$i]} file_pkg=${files_pkg[$i]} installed=N - [ "$(type -t "test_$file_pkg")" == "function" ] && test_$file_pkg && installed=Y [ $installed == N -a -f "$file" ] && installed=Y [ $installed == N ] && need+=($file) && need_pkg+=("$file_pkg") done + + for i in "${!perl_mod[@]}"; do + mod=${perl_mod[$i]} + pkg=${perl_pkg[$i]} + + if ! perl -M"$mod" -e exit 2>/dev/null; then + need+=(perl::$mod) + need_pkg+=($pkg) + fi + done } get_yes_no() @@ -49,21 +58,6 @@ get_yes_no() return 1 } -test_libjson-perl() -{ - perl -MJSON -e 'exit(0);' 2>/dev/null -} - -test_perl-json() -{ - test_libjson-perl -} - -test_perl-JSON() -{ - test_libjson-perl -} - if [ -f /etc/lsb-release ]; then DISTRO=$(grep DISTRIB_ID /etc/lsb-release | cut -d "=" -f 2 | tr A-Z a-z) fi @@ -78,6 +72,8 @@ deps_pkg=(wget bash bc gcc sed patch patchutils tar bzip2 gzip perl gawk gperf z files=(/usr/include/stdio.h /usr/include/ncurses.h) files_pkg=(libc6-dev libncurses5-dev) +perl_mod=(JSON) + case "$DISTRO" in fedora|centos|rhel) deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python) @@ -85,42 +81,32 @@ case "$DISTRO" in [[ ! `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) + perl_pkg=(perl-JSON) ;; gentoo) deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python) deps_pkg+=("gcc[cxx]" mkfontscale mkfontdir bdftopcf libxslt virtual/jre python) files_pkg=(glibc ncurses) + perl_pkg=(JSON) ;; arch) deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python) deps_pkg+=(g++ xorg-mkfontscale xorg-mkfontdir xorg-bdftopcf libxslt "java-runtime-common jdk8-openjdk" python2) + perl_pkg=(perl-json) ;; opensuse) 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) + perl_pkg=(perl-JSON) ;; *) deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python) deps_pkg+=(g++ xfonts-utils xfonts-utils xfonts-utils xsltproc default-jre python) + perl_pkg=(libjson-perl) ;; esac -if ! test_libjson-perl; then - files+=(perl/JSON.pm) - case "$DISTRO" in - arch) - files_pkg+=(perl-json) - ;; - fedora|centos|rhel|opensuse) - files_pkg+=(perl-JSON) - ;; - *) - files_pkg+=(libjson-perl) - ;; - esac -fi - # project specific dependencies if [ -n "$EXTRA_DEPS" ] ; then deps+=($EXTRA_DEPS)