diff options
author | P. J. McDermott <pj@pehjota.net> | 2014-05-12 23:14:50 (EDT) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2014-05-12 23:17:38 (EDT) |
commit | a7ab7c21761ca2242ddd43c8ce113ffa164e08a2 (patch) | |
tree | 7e3f19b30b0def222fbe43d71613eef7ebcb5f01 /src | |
parent | a4e75e82625aff1fb9c442c0ef9b6f982a639985 (diff) |
ob-checkbuilddeps: Finally implement.
Diffstat (limited to 'src')
-rw-r--r-- | src/ob-checkbuilddeps.sh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/ob-checkbuilddeps.sh b/src/ob-checkbuilddeps.sh index 53337dc..6d164b9 100644 --- a/src/ob-checkbuilddeps.sh +++ b/src/ob-checkbuilddeps.sh @@ -24,6 +24,7 @@ ob_use locale ob_use output ob_use package +ob_use deps main() { @@ -32,7 +33,67 @@ main() ob_init_package '..' || exit 1 ob_parse_package_metadata -c '.opkbuild.cache' || exit 1 + 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: .*ok 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 "${@}" |