summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorP. 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)
commita7ab7c21761ca2242ddd43c8ce113ffa164e08a2 (patch)
tree7e3f19b30b0def222fbe43d71613eef7ebcb5f01 /src
parenta4e75e82625aff1fb9c442c0ef9b6f982a639985 (diff)
ob-checkbuilddeps: Finally implement.
Diffstat (limited to 'src')
-rw-r--r--src/ob-checkbuilddeps.sh61
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 "${@}"