summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ob-gencontrol.sh93
1 files changed, 59 insertions, 34 deletions
diff --git a/src/ob-gencontrol.sh b/src/ob-gencontrol.sh
index 9411ed4..eeb8e47 100644
--- a/src/ob-gencontrol.sh
+++ b/src/ob-gencontrol.sh
@@ -1,4 +1,4 @@
-# Generates a control directory with a control file and scripts
+# Generate a control directory with a control file and scripts
#
# Copyright (C) 2012 Patrick McDermott
#
@@ -21,17 +21,24 @@ set -eu
gen_control()
{
- binary="${1}"
- version="${2}"
- arch="${3}"
- plat="${4}"
- desc="${5}"
- gen_rel="${6}"
+ local binary="${1}"
+ local version="${2}"
+ local arch="${3}"
+ local plat="${4}"
+ local desc="${5}"
+ local gen_rel="${6}"
+ shift 6
+ local sizes=
+ local inst_size=
+ local size=
+ local name=
+ local value=
+ local homepage=
# Calculate installed size.
- # Don't use du, since that considers the allocated size of files, symbolic
- # links, and directories (i.e. actual file sizes plus the filesystem
- # overhead on the build system).
+ # Don't use du, since that considers the allocated size of files,
+ # symbolic links, and directories (i.e. actual file sizes plus the
+ # filesystem overhead on the build system).
# See the following for more information:
# <http://pubs.opengroup.org/onlinepubs/9699919799/utilities/du.html>
# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=630533>
@@ -43,17 +50,17 @@ gen_control()
inst_size=$((${inst_size} + ${size}))
done
# Convert bytes to kibibytes and round up.
- # Note: There is an inconsistency between the Debian Policy Manual and opkg
- # in the units of this field. Debian Policy defines this field in units of
- # kibibytes:
- # The disk space is given as the integer value of the estimated installed
- # size in bytes, divided by 1024 and rounded up.
+ # Note: There is an inconsistency between the Debian Policy Manual and
+ # opkg in the units of this field. Debian Policy defines this field in
+ # units of kibibytes:
+ # The disk space is given as the integer value of the estimated
+ # installed size in bytes, divided by 1024 and rounded up.
# However, opkg apparently attempts to convert this value from bytes to
- # kibibytes in its determination of whether the package's data will fit on
- # the system:
+ # kibibytes in its determination of whether the package's data will fit
+ # on the system:
# pkg_size_kbs = (pkg->installed_size + 1023)/1024;
- # TODO: Further investigate opkg's disk space calculation and, if necessary,
- # patch opkg and submit a bug report.
+ # TODO: Further investigate opkg's disk space calculation and, if
+ # necessary, patch opkg and submit a bug report.
inst_size=$(((${inst_size} + 1023) / 1024))
mkdir -p -- "${binary}.control"
@@ -76,15 +83,22 @@ gen_control()
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}")"
+ 'Depends' | 'Recommends' | \
+ 'Suggests' | 'Pre-Depends')
+ value="$(ob_reduce_deps \
+ -a "${OPK_HOST_ARCH}" \
+ -p "${OPK_HOST_PLAT}" \
+ "${value}")"
+ value="$(ob_substvars \
+ "${value}")"
;;
'Conflicts'|'Provides'|'Replaces')
- value="$(ob_reduce_deps -a "${OPK_HOST_ARCH}" \
- -p "${OPK_HOST_PLAT}" -u "${value}")"
- value="$(ob_substvars "${value}")"
+ value="$(ob_reduce_deps \
+ -a "${OPK_HOST_ARCH}" \
+ -p "${OPK_HOST_PLAT}" \
+ -u "${value}")"
+ value="$(ob_substvars \
+ "${value}")"
;;
esac
printf '%s: %s\n' "${name}" "${value}" | \
@@ -113,7 +127,10 @@ gen_control()
install_maintainer_scripts()
{
- binary="${1}"
+ local binary="${1}"
+ shift 1
+ local script=
+ local target=
for script in preinst postinst prerm postrm; do
if [ -L "../${binary}.pkg/${script}" ]; then
@@ -121,7 +138,8 @@ install_maintainer_scripts()
target="${target#* -> }"
ln -s -- "${target}" "${binary}.control/${script}"
elif [ -r "../${binary}.pkg/${script}" ]; then
- cp "../${binary}.pkg/${script}" "${binary}.control/${script}"
+ cp "../${binary}.pkg/${script}" \
+ "${binary}.control/${script}"
chmod 755 "${binary}.control/${script}"
fi
done
@@ -131,7 +149,8 @@ install_maintainer_scripts()
gen_conffiles()
{
- binary="${1}"
+ local binary="${1}"
+ shift 1
if [ -d "${binary}.data/etc" ]; then
find "${binary}.data/etc" -type f | sed "s@^${binary}.data@@" \
@@ -148,7 +167,8 @@ gen_conffiles()
gen_md5sums()
{
- binary="${1}"
+ local binary="${1}"
+ shift 1
find "${binary}.data" -type f | sort | xargs md5sum | \
sed "s@ ${binary}.data@ @" \
@@ -164,6 +184,11 @@ gen_md5sums()
main()
{
+ local pkg=
+ local arch=
+ local plat=
+ local desc=
+
if ! ob_set_text_domain 'opkbuild'; then
printf '%s: Error: Failed to load locale messages\n' \
"${0##*/}" >&2
@@ -173,8 +198,8 @@ main()
ob_init_package '..' || return 1
if [ x"${OB_DO_SOURCE:+set}" = x'set' ]; then
- gen_control "src-${OPK_SOURCE}" "${OPK_SOURCE_VERSION}" 'src' 'all' \
- "${OPK_SOURCE} source package" 'false'
+ gen_control "src-${OPK_SOURCE}" "${OPK_SOURCE_VERSION}" \
+ 'src' 'all' "${OPK_SOURCE} source package" 'false'
gen_md5sums "src-${OPK_SOURCE}"
else
for pkg in ${OPK_PACKAGES_REDUCED}; do
@@ -185,8 +210,8 @@ main()
[ x"${plat}" != x'all' ] && plat="${OPK_HOST_PLAT}"
desc="$(ob_get_binary_parameter "${pkg}" 'Description')"
desc="$(ob_substvars "${desc}")"
- gen_control "${pkg}" "${OPK_BINARY_VERSION}" "${arch}" "${plat}" \
- "${desc}" 'true'
+ gen_control "${pkg}" "${OPK_BINARY_VERSION}" \
+ "${arch}" "${plat}" "${desc}" 'true'
install_maintainer_scripts "${pkg}"
gen_conffiles "${pkg}"
gen_md5sums "${pkg}"