diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ob-buildenv.sh | 6 | ||||
-rw-r--r-- | src/ob-buildopk.sh | 33 | ||||
-rw-r--r-- | src/ob-genchanges.sh | 17 | ||||
-rw-r--r-- | src/ob-gencontrol.sh | 143 | ||||
-rw-r--r-- | src/ob-installdocs.sh | 7 | ||||
-rw-r--r-- | src/opkbuild.sh | 23 |
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 |