diff options
Diffstat (limited to 'src/ob-gencontrol.sh')
-rw-r--r-- | src/ob-gencontrol.sh | 77 |
1 files changed, 56 insertions, 21 deletions
diff --git a/src/ob-gencontrol.sh b/src/ob-gencontrol.sh index b54c4b3..f88508c 100644 --- a/src/ob-gencontrol.sh +++ b/src/ob-gencontrol.sh @@ -1,6 +1,6 @@ # Generate a control directory with a control file and scripts # -# Copyright (C) 2012, 2019 Patrick McDermott +# Copyright (C) 2012, 2019, 2023-2024 Patrick McDermott # # This file is part of opkbuild. # @@ -67,13 +67,16 @@ gen_control_src() local binary= local name= local value= + local deps= + local dep= local homepage= binary="src:${OPK_SOURCE}" mkdir -p -- "${binary}.control" + exec 3>"${binary}.control/control" - cat >"${binary}.control/control" <<-EOF + cat >&3 <<-EOF Package: src:${OPK_SOURCE} Source: ${OPK_SOURCE} Binary:$(printf '%s\n' $(ob_get_binary_packages) | \ @@ -90,13 +93,18 @@ gen_control_src() if [ -z "${value}" ]; then continue fi - value="$(ob_substvars "${value}")" - printf '%s: %s\n' "${name}" "${value}" | \ - sed 's/[, ]*$//' \ - >>"${binary}.control/control" + deps='' + IFS=',' + for dep in ${value}; do + unset IFS + deps="${deps}$(ob_parse_dep "${dep}"), " + done + unset IFS + value="$(ob_substvars "${deps}")" + printf '%s: %s\n' "${name}" "${deps}" | sed 's/[, ]*$//' >&3 done - cat >>"${binary}.control/control" <<-EOF + cat >&3 <<-EOF Installed-Size: $(calc_inst_size "src:${OPK_SOURCE}") Format: $(ob_get_source_parameter 'Format') Description: ${OPK_SOURCE} source package @@ -104,10 +112,11 @@ gen_control_src() homepage="$(ob_get_source_parameter 'Homepage')" if [ -n "${homepage}" ]; then - printf '%s: %s\n' 'Homepage' "${homepage}" \ - >>"${binary}.control/control" + printf '%s: %s\n' 'Homepage' "${homepage}" >&3 fi + exec 3>&- + return 0 } @@ -119,15 +128,21 @@ gen_control_bin() local plat="${4}" local desc="${5}" shift 5 + local binary_qual= local value= + local doc_pkg= + local doc_pkg_q= + local doc_dep= local name= local homepage= mkdir -p -- "${binary}.control" + exec 3>"${binary}.control/control" + + binary_qual="$(ob_qualify_package_name "${binary}" "${OPK_HOST_ARCH}")" - cat >"${binary}.control/control" <<-EOF - Package: $(ob_qualify_package_name "${binary}" \ - "${OPK_HOST_ARCH}") + cat >&3 <<-EOF + Package: ${binary_qual} Source: ${OPK_SOURCE} Version: ${version} Architecture: ${arch} @@ -135,18 +150,38 @@ gen_control_bin() EOF value="$(ob_get_binary_parameter "${binary}" 'Section')" if [ -n "${value}" ]; then - cat >>"${binary}.control/control" <<-EOF + cat >&3 <<-EOF Section: ${value} EOF fi - cat >>"${binary}.control/control" <<-EOF + cat >&3 <<-EOF Maintainer: $(ob_get_source_parameter 'Maintainer' | \ tr '\n' ' ') EOF + if ! doc_pkg="$(ob_get_doc_package)"; then + ob_error "$(ob_get_msg 'cant_get_doc_pkg')" + return 1 + fi + doc_pkg_q="$(ob_qualify_package_name "${doc_pkg}" "${OPK_HOST_ARCH}")" + if [ x"$(ob_get_binary_parameter "${doc_pkg}" 'Architecture')" \ + = x'all' ]; then + doc_dep="${doc_pkg_q} (= ${OPK_SOURCE_VERSION})" + elif [ x"$(ob_get_binary_parameter "${binary}" 'Architecture')" \ + = x'all' ]; then + doc_dep="${doc_pkg_q} (>= ${OPK_SOURCE_VERSION}), $(: \ + )${doc_pkg_q} (<< ${OPK_SOURCE_VERSION}.~)" + else + doc_dep="${doc_pkg_q} (= ${OPK_BINARY_VERSION})" + fi + for name in Essential Depends Recommends Suggests Pre-Depends \ Conflicts Provides Replaces; do value="$(ob_get_binary_parameter "${binary}" "${name}")" + if [ x"${name}" = x'Depends' ] && + [ x"${binary_qual}" != x"${doc_pkg_q}" ]; then + value="${doc_dep}, ${value}" + fi if [ -z "${value}" ]; then continue fi @@ -154,35 +189,35 @@ gen_control_bin() 'Essential') ;; 'Depends' | 'Recommends' | 'Suggests' | 'Pre-Depends') + value="$(ob_substvars "${value}" "${binary}")" value="$(ob_reduce_deps \ -a "${OPK_HOST_ARCH}" \ -p "${OPK_HOST_PLAT}" \ -- "${value}")" - value="$(ob_substvars "${value}" "${binary}")" ;; 'Conflicts' | 'Provides' | 'Replaces') + value="$(ob_substvars "${value}" "${binary}")" value="$(ob_reduce_deps \ -a "${OPK_HOST_ARCH}" \ -p "${OPK_HOST_PLAT}" \ -u -- "${value}")" - value="$(ob_substvars "${value}" "${binary}")" ;; esac - printf '%s: %s\n' "${name}" "${value}" | sed 's/[, ]*$//' \ - >>"${binary}.control/control" + printf '%s: %s\n' "${name}" "${value}" | sed 's/[, ]*$//' >&3 done - cat >>"${binary}.control/control" <<-EOF + cat >&3 <<-EOF Installed-Size: $(calc_inst_size "${binary}") Description:$(printf '%s' "${desc}" | sed 's/^/ /') EOF homepage="$(ob_get_source_parameter 'Homepage')" if [ -n "${homepage}" ]; then - printf '%s: %s\n' 'Homepage' "${homepage}" \ - >>"${binary}.control/control" + printf '%s: %s\n' 'Homepage' "${homepage}" >&3 fi + exec 3>&- + return 0 } |