#!@@SH@@ # # opkhelper # src/oh-gencontrol # Generates a control directory with a control file and scripts. # # Copyright (C) 2012 Patrick "P. J." McDermott # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . . @@LIBDIR@@/locale . @@LIBDIR@@/control . @@LIBDIR@@/util main() { oh_locale_set oh_set_source_dir .. if [ "${#}" -ne 0 ]; then oh_usage exit 1 fi for pkg in "${OH_SOURCE_DIR}/"*.pkg/; do pkg="${pkg#../}" pkg="${pkg%/}" # 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 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() { find "${OH_SOURCE_DIR}/tmp/${pkg}.data" -type f | sort | xargs md5sum | \ sed "^@"${OH_SOURCE_DIR}/tmp/${pkg}.data"@@" \ >"${OH_SOURCE_DIR}/tmp/${pkg}.control/md5sums" if [ -z "$(head -n 1 \ "${OH_SOURCE_DIR}/tmp/${pkg}.control/md5sums")" ]; then rm -f "${OH_SOURCE_DIR}/tmp/${pkg}.control/md5sums" else chmod 644 "${OH_SOURCE_DIR}/tmp/${pkg}.control/md5sums" fi } main "${@}"