summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2012-08-03 04:27:45 (EDT)
committer P. J. McDermott <pjm@nac.net>2012-08-03 04:27:45 (EDT)
commit7dc16ad74167b45538545f58d96dfc1f64293ab1 (patch)
tree5931c4a2054f552b2e58ca21c3aa5ca58883547e
parentbdc2dc8efd9e9438e46351eea7f8f99e86decf57 (diff)
Update oh-gencontrol (rather ugly).
-rw-r--r--src/oh-gencontrol.sh63
1 files changed, 60 insertions, 3 deletions
diff --git a/src/oh-gencontrol.sh b/src/oh-gencontrol.sh
index 89944fc..06e01d5 100644
--- a/src/oh-gencontrol.sh
+++ b/src/oh-gencontrol.sh
@@ -1,4 +1,4 @@
-#!@@SHELL@@
+#!@@SH@@
#
# opkhelper
# src/oh-gencontrol
@@ -21,6 +21,7 @@
. @@LIBDIR@@/locale
. @@LIBDIR@@/control
+. @@LIBDIR@@/util
main()
{
@@ -32,10 +33,66 @@ main()
exit 1
fi
- for pkg in ../*.pkg/; do
+ for pkg in "${OH_SOURCE_DIR}/"*.pkg/; do
+
pkg="${pkg#../}"
pkg="${pkg%/}"
- oh_cv_load "${pkg}.control"
+
+ # Load field values from cache properties.
+ for name in ${OH_CONTROL_BINARY_FIELDS_REQUIRED} \
+ ${OH_CONTROL_BINARY_FIELDS_OPTIONAL}; do
+ value="$(oh_cache "bin.${pkg}.control.${name}")"
+ param="OH_CONTROL_BINARY_FIELD_$(echo "${name}" | \
+ LC_CTYPE=C tr '[:lower:]-' '[:upper:]_')"
+ # Escape the value.
+ value="$(echo "${value}" | sed "s/'/'\\\\''/g")"
+ eval "${param}='${value}'"
+ done
oh_control_gen_binary "${pkg}"
+
+ install_maintainer_scripts "${pkg}"
+ gen_conffiles "${pkg}"
+ gen_md5sums "${pkg}"
+
+ done
+}
+
+install_maintainer_scripts()
+{
+ pkg="${1}"
+
+ for script in preinst postinst prerm postrm; do
+ if [ -L "${OH_SOURCE_DIR}/${pkg}.pkg/${script}" ]; then
+ target="$(ls -l "${OH_SOURCE_DIR}/${pkg}.pkg/${script}")"
+ target="${target#* -> }"
+ ln -s "${target}" "${OH_SOURCE_DIR}/tmp/${pkg}.control/${script}"
+ else
+ cp "${OH_SOURCE_DIR}/${pkg}.pkg/${script}" \
+ "${OH_SOURCE_DIR}/tmp/${pkg}.control/${script}"
+ chmod 755 "${OH_SOURCE_DIR}/tmp/${pkg}.control/${script}"
+ fi
done
}
+
+gen_conffiles()
+{
+ if [ -d "${OH_SOURCE_DIR}/tmp/${pkg}.data/etc" ]; then
+ >"${OH_SOURCE_DIR}/tmp/${pkg}.control/conffiles"
+ find "${OH_SOURCE_DIR}/tmp/${pkg}.data/etc" -type f | \
+ sed "^@"${OH_SOURCE_DIR}/tmp/${pkg}.data"@@" \
+ >>"${OH_SOURCE_DIR}/tmp/${pkg}.control/conffiles"
+ if [ -z "$(head -n 1 \
+ "${OH_SOURCE_DIR}/tmp/${pkg}.control/conffiles")" ]; then
+ rm -f "${OH_SOURCE_DIR}/tmp/${pkg}.control/conffiles"
+ else
+ chmod 644 "${OH_SOURCE_DIR}/tmp/${pkg}.control/conffiles"
+ fi
+ fi
+}
+
+gen_md5sums()
+{
+ :
+}
+
+main "${@}"