summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ob-buildenv.sh6
-rw-r--r--src/ob-buildopk.sh33
-rw-r--r--src/ob-genchanges.sh17
-rw-r--r--src/ob-gencontrol.sh143
-rw-r--r--src/ob-installdocs.sh7
-rw-r--r--src/opkbuild.sh23
6 files changed, 150 insertions, 79 deletions
diff --git a/src/ob-buildenv.sh b/src/ob-buildenv.sh
index 6d42851..0657d09 100644
--- a/src/ob-buildenv.sh
+++ b/src/ob-buildenv.sh
@@ -84,6 +84,12 @@ setup_build_flags()
if [ -r "${build_flags}" ]; then
. "${build_flags}"
fi
+ printf "CFLAGS='%s %s'\\n" "${CFLAGS:-}" \
+ "-ffile-prefix-map=${PWD}=."
+ printf "CXXFLAGS='%s %s'\\n" "${CXXFLAGS:-}" \
+ "-ffile-prefix-map=${PWD}=."
+ printf "TZ='UTC0'\\n"
+ printf "LC_ALL='C'\\n"
return 0
}
diff --git a/src/ob-buildopk.sh b/src/ob-buildopk.sh
index 598419f..dc88758 100644
--- a/src/ob-buildopk.sh
+++ b/src/ob-buildopk.sh
@@ -27,12 +27,20 @@ build_opk()
local plat="${4}"
local date="${5}"
shift 5
+ local binary_qual=
local find_not_link=
local touch_noderef=
local sort_r=
+ if [ "x${arch}" = 'xsrc' ]; then
+ binary_qual="${binary}"
+ else
+ binary_qual="$(ob_qualify_package_name "${binary}" \
+ "${OPK_HOST_ARCH}")"
+ fi
+
ob_info "$(ob_get_msg 'build_opk')" \
- "${binary}_${version}_${arch}_${plat}.opk"
+ "${binary_qual}_${version}_${arch}_${plat}.opk"
mkdir -p '.opkbuild'
@@ -57,7 +65,7 @@ build_opk()
# order.
touch '.opkbuild/a' '.opkbuild/b'
if [ x"$(printf '.opkbuild/a\n.opkbuild/b\n' | ${TAR} -c -T - | \
- ${TAR} -t | head -n 1)" = x'b' ]; then
+ ${TAR} -t | head -n 1)" = x'.opkbuild/b' ]; then
sort_r='-r'
else
sort_r=''
@@ -69,22 +77,27 @@ build_opk()
# This utility runs with (fake) privileges, so we can chown what we're
# about to tar.
- find "${binary}.control" "${binary}.data" | xargs chown -h 0:0
+ if [ "x${arch}" = 'xsrc' ]; then
+ find "${binary}.control" "${binary}.data" | xargs chown -h 0:0
+ else
+ find "${binary}.control" | xargs chown -h 0:0
+ fi
(cd -- "${binary}.control" && find '.' | LC_ALL=C sort ${sort_r} | \
${TAR} -cf '../control.tar' --no-recursion -T -)
(cd -- "${binary}.data" && find '.' | LC_ALL=C sort ${sort_r} | \
${TAR} -cf '../data.tar' --no-recursion -T -)
- ${TOUCH} -t "${date}" 'control.tar' 'data.tar'
${GZIP} 'control.tar' 'data.tar'
+ ${TOUCH} -t "${date}" 'control.tar.gz' 'data.tar.gz'
- ${TAR} -cf "../../${binary}_${version}_${arch}_${plat}.tar" \
+ ${TAR} -cf "../../${binary_qual}_${version}_${arch}_${plat}.tar" \
'debian-binary' 'control.tar.gz' 'data.tar.gz'
rm -Rf 'control.tar.gz' 'data.tar.gz'
- ${TOUCH} -t "${date}" "../../${binary}_${version}_${arch}_${plat}.tar"
- ${GZIP} "../../${binary}_${version}_${arch}_${plat}.tar"
- mv "../../${binary}_${version}_${arch}_${plat}.tar.gz" \
- "../../${binary}_${version}_${arch}_${plat}.opk"
+ ${TOUCH} -t "${date}" \
+ "../../${binary_qual}_${version}_${arch}_${plat}.tar"
+ ${GZIP} "../../${binary_qual}_${version}_${arch}_${plat}.tar"
+ mv "../../${binary_qual}_${version}_${arch}_${plat}.tar.gz" \
+ "../../${binary_qual}_${version}_${arch}_${plat}.opk"
return 0
}
@@ -108,7 +121,7 @@ main()
printf '2.0\n' >'debian-binary'
${TOUCH} -t "${date}" 'debian-binary'
if [ x"${OB_DO_SOURCE:+set}" = x'set' ]; then
- build_opk "src-${OPK_SOURCE}" "${OPK_SOURCE_VERSION}" \
+ build_opk "src:${OPK_SOURCE}" "${OPK_SOURCE_VERSION}" \
'src' 'all' "${date}"
else
for pkg in ${OPK_PACKAGES_REDUCED}; do
diff --git a/src/ob-genchanges.sh b/src/ob-genchanges.sh
index 9e8c75a..323f417 100644
--- a/src/ob-genchanges.sh
+++ b/src/ob-genchanges.sh
@@ -31,7 +31,10 @@ write_changes()
printf 'Format: 1.0\n' >&3
printf 'Source: %s\n' "${OPK_SOURCE}" >&3
- printf 'Binary: %s\n' "$(ob_get_binary_packages)" >&3
+ printf 'Binary:' >&3
+ printf '%s\n' $(ob_get_binary_packages) | LC_ALL='C' sort | \
+ xargs printf ' %s' >&3
+ printf '\n' >&3
printf 'Version: %s\n' "${version}" >&3
printf 'Architecture: %s\n' "${arch}" >&3
printf 'Platform: %s\n' "${plat}" >&3
@@ -63,10 +66,10 @@ write_files_src()
local file=
printf 'Files:\n' >&3
- file="src-${OPK_SOURCE}_${OPK_SOURCE_VERSION}_src_all.opk"
+ file="src:${OPK_SOURCE}_${OPK_SOURCE_VERSION}_src_all.opk"
printf ' %s %s %s\n' \
"$(wc -c "../../${file}" | cut -d ' ' -f 1)" \
- 'base' "${file}" >&3
+ 'src' "${file}" >&3
return 0
}
@@ -76,6 +79,7 @@ write_files_bin()
local pkg=
local arch=
local plat=
+ local sect=
local file=
printf 'Files:\n' >&3
@@ -84,10 +88,13 @@ write_files_bin()
[ x"${arch}" != x'all' ] && arch="${OPK_HOST_ARCH}"
plat="$(ob_get_binary_parameter "${pkg}" 'Platform')"
[ x"${plat}" != x'all' ] && plat="${OPK_HOST_PLAT}"
- file="${pkg}_${OPK_BINARY_VERSION}_${arch}_${plat}.opk"
+ sect="$(ob_get_binary_parameter "${pkg}" 'Section')"
+ [ x"${sect}" = x'' ] && sect='base'
+ file="$(ob_qualify_package_name "${pkg}" "${OPK_HOST_ARCH}")"
+ file="${file}_${OPK_BINARY_VERSION}_${arch}_${plat}.opk"
printf ' %s %s %s\n' \
"$(wc -c "../../${file}" | cut -d ' ' -f 1)" \
- 'base' "${file}" >&3
+ "${sect}" "${file}" >&3
done
return 0
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}"
diff --git a/src/ob-installdocs.sh b/src/ob-installdocs.sh
index f07bfb8..a662a94 100644
--- a/src/ob-installdocs.sh
+++ b/src/ob-installdocs.sh
@@ -79,11 +79,14 @@ main()
return 1
fi
doc_pkg_doc_dir="$(ob_get_system_path 'package-docs' \
- "${doc_pkg}" "${OPK_BINARY_VERSION}")"
+ "$(ob_qualify_package_name "${doc_pkg}" "${OPK_HOST_ARCH}")" \
+ "${OPK_BINARY_VERSION}")"
for pkg in ${OPK_PACKAGES_REDUCED}; do
doc_dir="$(ob_get_system_path 'package-docs' \
- "${pkg}" "${OPK_BINARY_VERSION}")"
+ "$(ob_qualify_package_name "${pkg}" \
+ "${OPK_HOST_ARCH}")" \
+ "${OPK_BINARY_VERSION}")"
data_doc_dir="${pkg}.data/${doc_dir%/}"
if [ x"${pkg}" = x"${doc_pkg}" ]; then
if [ -d "${data_doc_dir}" ]; then
diff --git a/src/opkbuild.sh b/src/opkbuild.sh
index e6dc730..5b368fc 100644
--- a/src/opkbuild.sh
+++ b/src/opkbuild.sh
@@ -253,7 +253,7 @@ build_source()
src="$(ob_get_source_parameter 'Source')"
ver="$(ob_get_source_parameter 'Version')"
- src_pkg_data_base="src-${src}.data$(ob_get_system_path \
+ src_pkg_data_base="src:${src}.data$(ob_get_system_path \
'package-source' "${src}" "${ver}")"
if ! mkdir -p -- "${src_pkg_data_base}"; then
@@ -287,7 +287,7 @@ build_source()
return 1
fi
- if ! rm -Rf "src-${src}.data"; then
+ if ! rm -Rf "src:${src}.data"; then
ob_error "$(ob_get_msg 'cant_rm_src_pkg_data')"
return 1
fi
@@ -351,13 +351,16 @@ build()
{
case "${opt_target}" in
'')
- ../build build &&
- ${opt_uid0_cmd} -- ../build install &&
- ${opt_uid0_cmd} -- "${bindir}/ob-installdocs" &&
- ${opt_uid0_cmd} -- "${bindir}/ob-gencontrol" &&
- ${opt_uid0_cmd} -- "${bindir}/ob-buildopk" &&
- ${opt_uid0_cmd} -- "${bindir}/ob-genchanges" ||
+ if ! ../build build || ! ${opt_uid0_cmd} -- ${SH} <<-EOF
+ ../build install &&
+ "${bindir}/ob-installdocs" &&
+ "${bindir}/ob-gencontrol" &&
+ "${bindir}/ob-buildopk" &&
+ "${bindir}/ob-genchanges"
+ EOF
+ then
return 1
+ fi
;;
'install'|'install-'*)
if ! ${opt_uid0_cmd} -- ../build -- "${opt_target}"
@@ -421,8 +424,8 @@ main()
if [ x"${opt_build}" != x'source' ]; then
print_arch_stats
- if "${opt_check_build_deps}"; then
- if ! "${bindir}/ob-checkbuilddeps"; then
+ if ! "${bindir}/ob-checkbuilddeps"; then
+ if "${opt_check_build_deps}"; then
return 1
fi
fi