#!@@SHELL@@ # # opkhelper # src/oh-checkbuilddeps # Make sure that package build dependencies are installed. # # Copyright (C) 2012 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 3 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 . . @@LIBDIR@@/opkhelper/controlfields . @@LIBDIR@@/opkhelper/messages print_usage() { printf 'Usage: %s [-s status-override]\n' "${1}" } opts=$(getopt -n "${0}" -o 's:' -- "${@}") if [ ${?} -ne 0 ]; then print_usage "${0}" >&2 exit 1; fi eval set -- "${opts}" while true; do case "${1}" in -s) status_file="${2}" shift 2 break ;; --) shift break ;; *) print_usage "${0}" >&2 exit 1 ;; esac done if [ "${1}" = '--' ]; then shift fi if [ ${#} -ne 0 ]; then print_usage ${0} >&2 exit 1 fi oh_info 'Checking build dependencies...' IFS=',' for dep in $(oh_get_field Build-Depends); do # XXX: Do all shells split fields in a 'for' construct all at once, or do # some split only as much as they need each iteration? unset IFS # Strip leading and trailing whitespace. dep=$(echo ${dep} | sed 's/^ *\(.*\) *$/\1/') # Check for the dependency in the package status override file, if provided. if [ -n "${status_file}" ]; then grep "${dep}" "${status_file}" > /dev/null if [ ${?} -eq 0 ]; then continue; fi fi # TODO: Test this. if [ -z "$(opkg status "${dep}" | grep "^Package: ${dep}")" ]; then oh_error 'Dependency %s not installed' "${dep}" fi done unset IFS