#!@@SH@@ # # opkbuild # src/ob-checkbuilddeps.sh # Make sure that package build dependencies are installed. # # Copyright (C) 2012, 2014 Patrick "P. J." McDermott # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . . '@@PKGLIBDIR@@/load.sm' ob_use locale ob_use output ob_use package ob_use deps main() { ob_set_text_domain 'opkbuild' ob_init_package '..' || exit 1 ob_parse_package_metadata -c '.opkbuild.cache' || exit 1 ob_set_package_substvars '' check_build_deps return ${?} } check_build_deps() { local deps= local missing= local dep= ob_info "$(ob_get_msg 'checking_build_deps')" deps="$(ob_get_source_parameter 'Build-Depends')" deps="$(ob_reduce_deps -a "${OPK_HOST_ARCH}" \ -P "${OPK_HOST_PLAT}" "${deps}")" deps="$(ob_substvars "${deps}")" missing='' IFS=',' for dep in ${deps}; do unset IFS if ! dep="$(check_dep "${dep}")"; then missing="${missing}, ${dep}" fi done unset IFS missing="${missing#, }" if [ "x${missing}" != 'x' ]; then ob_error "$(ob_get_msg 'missing_build_deps')" "${missing}" fi return 0 } check_dep() { local dep="${1}" local dep_pkg= local dep_rel= local dep_ver= local status= local pkg_ver= ob_parse_dep -p dep_pkg -r dep_rel -v dep_ver "${dep}" status="$(@@OPKG@@ status "${dep_pkg}")" if ! printf '%s\n' "${status}" | grep '^Status: .* .* installed$' \ >/dev/null 2>&1; then return 1 fi if [ "x${dep_rel}" != 'x' ]; then pkg_ver="$(printf '%s\n' "${status}" | \ sed -n 's/^Version: //p')" if @@OPKG@@ compare-versions \ "${pkg_ver}" "${dep_rel}" "${dep_ver}"; then return 1 fi fi return 0 } main "${@}"