diff options
-rw-r--r-- | src/oh-gencontrol.sh | 63 |
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 "${@}" |