summaryrefslogtreecommitdiffstats
path: root/src/ob-gencontrol.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/ob-gencontrol.sh')
-rw-r--r--src/ob-gencontrol.sh143
1 files changed, 91 insertions, 52 deletions
diff --git a/src/ob-gencontrol.sh b/src/ob-gencontrol.sh
index 172f50f..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,14 +67,17 @@ gen_control_src()
local binary=
local name=
local value=
+ local deps=
+ local dep=
local homepage=
- binary="src-${OPK_SOURCE}"
+ binary="src:${OPK_SOURCE}"
mkdir -p -- "${binary}.control"
+ exec 3>"${binary}.control/control"
- cat >"${binary}.control/control" <<-EOF
- Package: src-${OPK_SOURCE}
+ cat >&3 <<-EOF
+ Package: src:${OPK_SOURCE}
Source: ${OPK_SOURCE}
Binary:$(printf '%s\n' $(ob_get_binary_packages) | \
LC_ALL='C' sort | xargs printf ' %s')
@@ -90,23 +93,30 @@ 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
- Installed-Size: $(calc_inst_size "src-${OPK_SOURCE}")
+ cat >&3 <<-EOF
+ Installed-Size: $(calc_inst_size "src:${OPK_SOURCE}")
+ Format: $(ob_get_source_parameter 'Format')
Description: ${OPK_SOURCE} source package
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
}
@@ -118,67 +128,96 @@ gen_control_bin()
local plat="${4}"
local desc="${5}"
shift 5
- local name=
+ 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"
- cat >"${binary}.control/control" <<-EOF
- Package: ${binary}
+ binary_qual="$(ob_qualify_package_name "${binary}" "${OPK_HOST_ARCH}")"
+
+ cat >&3 <<-EOF
+ Package: ${binary_qual}
Source: ${OPK_SOURCE}
Version: ${version}
Architecture: ${arch}
Platform: ${plat}
+ EOF
+ value="$(ob_get_binary_parameter "${binary}" 'Section')"
+ if [ -n "${value}" ]; then
+ cat >&3 <<-EOF
+ Section: ${value}
+ EOF
+ fi
+ cat >&3 <<-EOF
Maintainer: $(ob_get_source_parameter 'Maintainer' | \
tr '\n' ' ')
EOF
- if :; then
- for name in Essential Depends Recommends Suggests Pre-Depends \
- Conflicts Provides Replaces; do
- value="$(ob_get_binary_parameter "${binary}" "${name}")"
- if [ -z "${value}" ]; then
- continue
- fi
- case "${name}" in
- 'Essential')
- ;;
- 'Depends' | 'Recommends' | \
- 'Suggests' | 'Pre-Depends')
- value="$(ob_reduce_deps \
- -a "${OPK_HOST_ARCH}" \
- -p "${OPK_HOST_PLAT}" \
- -- "${value}")"
- value="$(ob_substvars "${value}" \
- "${binary}")"
- ;;
- 'Conflicts' | 'Provides' | 'Replaces')
- 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"
- done
+ 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
+ case "${name}" in
+ 'Essential')
+ ;;
+ 'Depends' | 'Recommends' | 'Suggests' | 'Pre-Depends')
+ value="$(ob_substvars "${value}" "${binary}")"
+ value="$(ob_reduce_deps \
+ -a "${OPK_HOST_ARCH}" \
+ -p "${OPK_HOST_PLAT}" \
+ -- "${value}")"
+ ;;
+ 'Conflicts' | 'Provides' | 'Replaces')
+ value="$(ob_substvars "${value}" "${binary}")"
+ value="$(ob_reduce_deps \
+ -a "${OPK_HOST_ARCH}" \
+ -p "${OPK_HOST_PLAT}" \
+ -u -- "${value}")"
+ ;;
+ esac
+ 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
}
@@ -268,9 +307,9 @@ main()
ob_init_package '..' || return 1
if [ x"${OB_DO_SOURCE:+set}" = x'set' ]; then
- ob_info "$(ob_get_msg 'gen_control')" "src-${OPK_SOURCE}"
+ ob_info "$(ob_get_msg 'gen_control')" "src:${OPK_SOURCE}"
gen_control_src
- gen_md5sums "src-${OPK_SOURCE}"
+ gen_md5sums "src:${OPK_SOURCE}"
else
for pkg in ${OPK_PACKAGES_REDUCED}; do
ob_info "$(ob_get_msg 'gen_control')" "${pkg}"