summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore6
-rw-r--r--ChangeLog1
-rw-r--r--TODO1
-rw-r--r--src/oh-checkbuilddeps.sh45
-rw-r--r--src/opkbuild.sh8
5 files changed, 56 insertions, 5 deletions
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'