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.sh77
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
}