diff options
author | P. J. McDermott <pjm@nac.net> | 2012-03-20 20:24:39 (EDT) |
---|---|---|
committer | P. J. McDermott <pjm@nac.net> | 2012-03-20 20:24:39 (EDT) |
commit | 409c85803025348bda15120ab2c9e5a9c47a7237 (patch) | |
tree | 18a5aac7d097bb2e0792832f07ae82782453ea6f | |
parent | a06f4325d1c2dc9301890f975ec6de82a1408bde (diff) |
Support package status overrides. TODO: Document.
-rw-r--r-- | .gitignore | 6 | ||||
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | src/oh-checkbuilddeps.sh | 45 | ||||
-rw-r--r-- | src/opkbuild.sh | 8 |
5 files changed, 56 insertions, 5 deletions
@@ -2,7 +2,13 @@ .*.sw* .sw* *~ +Session.vim # Generated files Makefile +install.config +sedscript +#src/[a-z][^.]* +#lib/[a-z][^.]* +#man/[^.]+[.][^.]+ opkhelper-*.tar.* @@ -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. @@ -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' |