From 409c85803025348bda15120ab2c9e5a9c47a7237 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Tue, 20 Mar 2012 20:24:39 -0400 Subject: Support package status overrides. TODO: Document. --- diff --git a/.gitignore b/.gitignore index b5d1576..5506539 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,13 @@ .*.sw* .sw* *~ +Session.vim # Generated files Makefile +install.config +sedscript +#src/[a-z][^.]* +#lib/[a-z][^.]* +#man/[^.]+[.][^.]+ opkhelper-*.tar.* diff --git a/ChangeLog b/ChangeLog index b721a62..d567b55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 0.2.0 () [ P. J. McDermott ] + * Support manual package status overrides (to satisfy build dependencies). * Fix expected format of "Build-Depends" control field. (Note that versioned build dependencies are still not supported yet.) * Refer to GNU Binutils programs by variable value, if set. diff --git a/TODO b/TODO index 74cf792..98f0bec 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,4 @@ For version 0.2.x: - * Support manual package status overrides (to satisfy build dependencies). * Output version information when opkbuild is passed a '-V' option. Future Plans: diff --git a/src/oh-checkbuilddeps.sh b/src/oh-checkbuilddeps.sh index 6966d33..62de266 100644 --- a/src/oh-checkbuilddeps.sh +++ b/src/oh-checkbuilddeps.sh @@ -23,10 +23,38 @@ print_usage() { - printf 'Usage: %s...\n' "$1" + printf 'Usage: %s\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 + echo $1 print_usage ${0} >&2 exit 1 fi @@ -34,9 +62,22 @@ fi printf 'oh-checkbuilddeps: Checking build dependencies...\n' 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 printf 'oh-checkbuilddeps: Error: Dependency %s not installed.\n' \ diff --git a/src/opkbuild.sh b/src/opkbuild.sh index faa72ef..7d5f963 100644 --- a/src/opkbuild.sh +++ b/src/opkbuild.sh @@ -40,7 +40,7 @@ error() exit 1 } -opts=$(getopt -n "${0}" -o 'r:p:d' -- "${@}") +opts=$(getopt -n "${0}" -o 'r:p:ds:' -- "${@}") if [ ${?} -ne 0 ]; then print_usage "${0}" >&2 exit 1; @@ -60,6 +60,10 @@ while true; do dbg=true shift ;; + -s) + status_override=${2} + shift 2 + ;; --) shift break @@ -152,7 +156,7 @@ export OH_PKGVER=${version} . @@DATADIR@@/opkhelper/buildflags/${OH_ARCH_CPU} # Check build dependencies. -oh-checkbuilddeps || error "${srcpkg}-src" +oh-checkbuilddeps -s "${status_override}" || error "${srcpkg}-src" printf '\n' -- cgit v0.9.1