diff options
Diffstat (limited to 'src/oh-gencontrol')
-rw-r--r-- | src/oh-gencontrol | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/src/oh-gencontrol b/src/oh-gencontrol deleted file mode 100644 index 39b9835..0000000 --- a/src/oh-gencontrol +++ /dev/null @@ -1,207 +0,0 @@ -#! /bin/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 <http://www.gnu.org/licenses/>. - -. @@LIBDIR@@/opkhelper/controlfields -. @@LIBDIR@@/opkhelper/architecture - -print_usage() -{ - printf 'Usage: %s -s | pkgname...\n' "$1" -} - -missing_field() -{ - printf 'oh-gencontrol: Error: Missing field "%s" in control file.\n' \ - "${1}" >&2 - exit 2 -} - -invalid_pkg_name() -{ - printf 'oh-gencontrol: Error: Invalid package name: "%s"\n' "${1}" >&2 - exit 2 -} - -copy_required_field() -{ - if [ ${#} -eq 2 ]; then - { printf '%s: ' "${1}" && oh_get_field "${1}";} >> "${2}" - [ ${?} -eq 1 ] && missing_field "${1}" - else - { printf '%s: ' "${2}" && oh_get_field "${1}" "${2}";} >> "${3}" - [ ${?} -eq 1 ] && missing_field "${2}" - fi -} - -copy_optional_field() -{ - if [ ${#} -eq 2 ]; then - field=$(printf '%s: ' "${1}" && oh_get_field "${1}") - [ ${?} -eq 0 ] && printf '%s\n' "${field}" >> "${2}" - else - field=$(printf '%s: ' "${2}" && oh_get_field "${1}" "${2}") - [ ${?} -eq 0 ] && printf '%s\n' "${field}" >> "${3}" - fi -} - -gen_control_src() -{ - srcpkg=$(oh_get_field Source) || missing_field Source - oh_validate_pkg_name "${srcpkg}" || invalid_pkg_name "${srcpkg}" - - printf 'oh-gencontrol: Generating control directory for package "%s"...\n' \ - "${srcpkg}-src" - - control_dir="${srcpkg}-src.control" - control="${control_dir}/control" - - mkdir "${control_dir}" - chmod 755 "${control_dir}" - - printf 'Package: %s\n' "${srcpkg}-src" > ${control} - printf 'Source: %s\n' "${srcpkg}" >> ${control} - copy_required_field Version ${control} - printf 'Architecture: all\n' >> ${control} - # TODO: Calculate "Installed-Size". - copy_required_field Maintainer ${control} - copy_optional_field Homepage ${control} - - chmod 755 ${control} -} - -gen_control_bin() -{ - binpkg="${1}" - oh_validate_pkg_name "${binpkg}" || invalid_pkg_name "${binpkg}" - - printf 'oh-gencontrol: Generating control directory for package "%s"...\n' \ - "${binpkg}" - - data_dir="${binpkg}.data" - control_dir="${binpkg}.control" - control="${control_dir}/control" - - mkdir "${control_dir}" - chmod 755 "${control_dir}" - - # Binary and source package names and version. - copy_required_field ${binpkg} Package ${control} - copy_required_field Source ${control} - copy_required_field Version ${control} - - # Handle architecture. - { printf 'Architecture: ' && oh_get_package_architecture ${binpkg};} \ - >> ${control} - [ ${?} -eq 1 ] && missing_field Architecture - - # Optional fields. - copy_optional_field ${binpkg} Essential ${control} - copy_optional_field ${binpkg} Depends ${control} - copy_optional_field ${binpkg} Recommends ${control} - copy_optional_field ${binpkg} Suggests ${control} - copy_optional_field ${binpkg} Pre-Depends ${control} - copy_optional_field ${binpkg} Conflicts ${control} - copy_optional_field ${binpkg} Provides ${control} - copy_optional_field ${binpkg} Replaces ${control} - - # TODO: Calculate "Installed-Size". - copy_required_field Maintainer ${control} - copy_required_field ${binpkg} Description ${control} - copy_optional_field Homepage ${control} - - chmod 644 ${control} - - # Maintainer scripts. - for script in preinst postinst prerm postrm; do - if [ -L ../${binpkg}.pkg/${script} ]; then - target=$(ls -l "../${binpkg}.pkg/${script}" | \ - sed 's/^.* -> \(.*\)$/\1/') - ln -s ${target} ${control_dir}/${script} - elif [ -f ../${binpkg}.pkg/${script} ]; then - cp ../${binpkg}.pkg/${script} ${control_dir} - chmod 755 ${control_dir}/${script} - fi - done - - # Conffiles. - # Adapted from dh_installdeb of debhelper. - if [ -d ${data_dir}/etc ]; then - find ${data_dir}/etc -type f | sed "s@^${data_dir}@@" \ - >> ${control_dir}/conffiles - if [ -z "$(head -n 1 ${control_dir}/conffiles)" ]; then - rm -f ${control_dir}/conffiles - else - chmod 644 ${control_dir}/conffiles - fi - fi - - # MD5 checksums. - find ${data_dir} -type f | sort | xargs md5sum | sed "s@ ${data_dir}@ @" \ - > ${control_dir}/md5sums - if [ -z "$(head -n 1 ${control_dir}/md5sums)" ]; then - rm -f ${control_dir}/md5sums - else - chmod 644 ${control_dir}/md5sums - fi -} - -if [ ${#} -eq 0 ]; then - print_usage ${0} >&2 - exit 1 -fi - -is_src=false -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) - is_src=true - shift - ;; - --) - shift - break - ;; - *) - print_usage "${0}" >&2 - exit 1 - ;; - esac -done - -if ${is_src}; then - gen_control_src -else - if [ ${#} -eq 0 ]; then - print_usage "${0}" >&2 - exit 1 - fi - - while [ ${#} -gt 0 ]; do - gen_control_bin "${1}" - shift - done -fi |