Files
Arch-R/scripts/checkdeps

178 lines
5.1 KiB
Plaintext
Raw Normal View History

2014-03-27 15:17:36 +02:00
#!/bin/bash
2009-03-18 13:02:53 +01:00
2018-07-16 20:45:36 +02:00
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
2019-06-16 02:45:52 +01:00
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
2011-01-09 21:26:03 +01:00
get_deps() {
2017-11-22 23:46:37 +02:00
need=()
need_pkg=()
2017-11-22 23:46:37 +02:00
for i in "${!deps[@]}"; do
2019-06-16 02:45:52 +01:00
dep=${deps[${i}]}
dep_pkg=${deps_pkg[${i}]}
if ! command -v "${dep}" >/dev/null; then
need+=(${dep})
need_pkg+=("${dep_pkg}")
fi
done
2017-11-22 23:46:37 +02:00
for i in "${!files[@]}"; do
2019-06-16 02:45:52 +01:00
file=${files[${i}]}
file_pkg=${files_pkg[${i}]}
if [ ! -f "${file}" ]; then
need+=(${file})
need_pkg+=("${file_pkg}")
fi
done
for i in "${!perl_mod[@]}"; do
2019-06-16 02:45:52 +01:00
mod=${perl_mod[${i}]}
pkg=${perl_pkg[${i}]}
2019-06-16 02:45:52 +01:00
if ! perl -M"${mod}" -e exit 2>/dev/null; then
need+=(perl::${mod})
need_pkg+=(${pkg})
fi
done
}
2017-07-16 21:23:26 +01:00
get_yes_no()
{
local ans
read -p "Would you like to install the needed tools? (y/n) " ans
[ "${ans,,}" = "y" ] && return 0
[ "${ans,,}" = "yes" ] && return 0
2017-07-16 21:23:26 +01:00
return 1
}
2015-09-30 15:49:57 +03:00
if [ -f /etc/lsb-release ]; then
DISTRO=$(grep DISTRIB_ID /etc/lsb-release | cut -d "=" -f 2)
2015-09-30 15:49:57 +03:00
fi
2009-03-18 13:02:53 +01:00
2015-09-30 15:49:57 +03:00
if [ -f /etc/os-release ]; then
DISTRO=$(grep ^ID= /etc/os-release | cut -d "=" -f 2)
2015-09-30 15:49:57 +03:00
fi
DISTRO=${DISTRO,,}
2019-11-10 02:36:25 +00:00
deps=(wget bash bc gcc sed patch lsdiff tar bzip2 gzip xz perl gawk gperf zip unzip diff lzop make file)
deps_pkg=(wget bash bc gcc sed patch patchutils tar bzip2 gzip xz-utils perl gawk gperf zip unzip diffutils lzop make file)
2015-09-30 15:49:57 +03:00
2017-11-22 23:46:37 +02:00
files=(/usr/include/stdio.h /usr/include/ncurses.h)
files_pkg=(libc6-dev libncurses5-dev)
2015-09-30 15:49:57 +03:00
perl_mod=(JSON XML::Parser Thread::Queue)
2019-06-16 02:45:52 +01:00
case "${DISTRO}" in
2015-09-30 15:49:57 +03:00
fedora|centos|rhel)
deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python3 rpcgen)
deps_pkg+=(gcc-c++ xorg-x11-font-utils xorg-x11-font-utils xorg-x11-font-utils libxslt java-1.7.0-openjdk python3 rpcgen)
if [[ ! $(rpm -qa glibc-static) ]]; then
deps+=(glibc-static)
deps_pkg+=(glibc-static)
fi
if [[ ! $(rpm -qa libstdc++-static) ]]; then
deps+=(libstdc++-static)
deps_pkg+=(libstdc++-static)
fi
2017-11-22 23:46:37 +02:00
files_pkg=(glibc-headers ncurses-devel)
perl_pkg=(perl-JSON perl-XML-Parser perl-Thread-Queue)
2015-09-30 15:49:57 +03:00
;;
gentoo|sabayon)
deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python3 rpcgen)
deps_pkg+=("gcc[cxx]" mkfontscale mkfontdir bdftopcf libxslt virtual/jre python3 net-libs/rpcsvc-proto)
2017-11-22 23:46:37 +02:00
files_pkg=(glibc ncurses)
perl_pkg=(JSON XML-Parser perl-Thread-Queue)
;;
arch)
deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python3 rpcgen)
deps_pkg+=(g++ xorg-mkfontscale xorg-mkfontdir xorg-bdftopcf libxslt "java-runtime-common jdk8-openjdk" python3 rpcsvc-proto)
perl_pkg=(perl-json perl-xml-parser perl)
;;
opensuse)
deps+=( g++ mkfontscale mkfontdir bdftopcf xsltproc java python3)
deps_pkg+=(gcc-c++ mkfontscale mkfontdir bdftopcf libxslt-tools java-1_8_0-openjdk python3)
if [[ ! $(rpm -qa glibc-devel-static) ]]; then
deps+=(glibc-devel-static)
deps_pkg+=(glibc-devel-static)
fi
perl_pkg=(perl-JSON perl-XML-Parser perl)
;;
2015-09-30 15:49:57 +03:00
*)
deps+=(g++ mkfontscale mkfontdir bdftopcf xsltproc java python3)
deps_pkg+=(g++ xfonts-utils xfonts-utils xfonts-utils xsltproc default-jre python3)
perl_pkg=(libjson-perl libxml-parser-perl perl)
2015-09-30 15:49:57 +03:00
;;
2009-03-18 13:02:53 +01:00
esac
# project specific dependencies
2019-06-16 02:45:52 +01:00
if [ -n "${EXTRA_DEPS}" ] ; then
deps+=(${EXTRA_DEPS})
fi
2019-06-16 02:45:52 +01:00
if [ -n "${EXTRA_DEPS_PKG}" ] ; then
deps_pkg+=(${EXTRA_DEPS_PKG})
fi
# distro specific dependencies
2019-06-16 02:45:52 +01:00
if [ -n "${DISTRO_DEPS}" ] ; then
deps+=(${DISTRO_DEPS})
fi
2019-06-16 02:45:52 +01:00
if [ -n "${DISTRO_DEPS_PKG}" ] ; then
deps_pkg+=(${DISTRO_DEPS_PKG})
fi
2017-11-22 23:46:37 +02:00
get_deps
if [ "${#need[@]}" -gt 0 ]; then
2019-06-16 02:45:52 +01:00
echo "**** Your system lacks the following tools needed to build ${DISTRONAME} ****"
2017-11-22 23:46:37 +02:00
for i in "${!need[@]}"; do
2019-06-16 02:45:52 +01:00
echo "${need[${i}]} provided by ${need_pkg[${i}]}"
2017-11-22 23:46:37 +02:00
done
2019-06-16 02:45:52 +01:00
echo "**** You seem to use a ${DISTRO} system ****"
if command -v sudo >/dev/null; then
2019-06-16 02:45:52 +01:00
case "${DISTRO}" in
ubuntu|debian|linuxmint|\"elementary\")
get_yes_no && sudo apt-get install "${need_pkg[@]}"
;;
fedora|centos|rhel)
command -v dnf >/dev/null && YUM=dnf || YUM=yum
2019-06-16 02:45:52 +01:00
get_yes_no && sudo ${YUM} install "${need_pkg[@]}"
;;
gentoo)
get_yes_no && sudo emerge --ask --deep "${need_pkg[@]}"
;;
sabayon)
get_yes_no && sudo equo install --ask "${need_pkg[@]}"
;;
mageia)
get_yes_no && sudo urpmi "${need_pkg[@]}"
;;
arch)
get_yes_no && sudo pacman -Sy "${need_pkg[@]}"
;;
opensuse)
get_yes_no && sudo zypper install -y --no-recommends "${need_pkg[@]}"
;;
*)
2019-06-16 02:45:52 +01:00
echo "**** unsupported distro ${DISTRO} ****"
exit 1
;;
esac
else
echo "The command 'sudo' was not found. Please install necessary packages manually."
fi
2009-03-18 13:02:53 +01:00
fi
get_deps
2009-03-18 13:02:53 +01:00
2017-11-22 23:46:37 +02:00
if [ "${#need[@]}" -gt 0 ]; then
echo "**** The following packages were not installed correctly ****"
2017-11-22 23:46:37 +02:00
for i in "${!need[@]}"; do
2019-06-16 02:45:52 +01:00
echo "${need[${i}]} provided by ${need_pkg[${i}]}"
2017-11-22 23:46:37 +02:00
done
echo "********"
2009-03-18 13:02:53 +01:00
exit 1
fi