summaryrefslogtreecommitdiffhomepage
path: root/pkgtool.sh
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-03-15 09:14:23 +0000
committerLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-03-15 09:14:23 +0000
commitb6a9a1a3c8b98077cce47d579069c42080d17da5 (patch)
tree56301493a28e098de840c21b6d7e2776dd5574a1 /pkgtool.sh
parent3e295f4e81f867fbd8b6c9c306bc1ca124e41d8b (diff)
downloadmidipix_build-b6a9a1a3c8b98077cce47d579069c42080d17da5.tar.bz2
midipix_build-b6a9a1a3c8b98077cce47d579069c42080d17da5.tar.xz
General cleanup.
Diffstat (limited to 'pkgtool.sh')
-rwxr-xr-xpkgtool.sh238
1 files changed, 135 insertions, 103 deletions
diff --git a/pkgtool.sh b/pkgtool.sh
index e6768e85..c8dd2bb6 100755
--- a/pkgtool.sh
+++ b/pkgtool.sh
@@ -3,154 +3,186 @@
#
pkgtoolp_info() {
- local _group_name="" _pkg_name_uc="$(rtl_toupper "${PKG_NAME}")" _pkg_names="" \
- EX_PKG_DISABLED=""; EX_PKG_FINISHED=""; EX_PKG_NAMES="";
- if ! _group_name="$(ex_pkg_find_package "${BUILD_GROUPS}" "${PKG_NAME}")"; then
- rtl_log_msg failexit "Error: unknown package \`${PKG_NAME}'.";
+ local _pkg_name="${1}" _group_name="" _pkg_name_uc="$(rtl_toupper "${1}")" _pkg_names="" _rc=0\
+ EX_PKG_BUILD_GROUPS="" EX_PKG_DISABLED="" EX_PKG_FINISHED="" EX_PKG_NAMES=""; _status="";
+ if ! ex_pkg_load_groups; then
+ _rc=1; _status="Error: failed to load build groups.";
+ elif ! _group_name="$(ex_pkg_find_package "${EX_PKG_BUILD_GROUPS}" "${_pkg_name}")"; then
+ _rc=1; _status="Error: unknown package \`${_pkg_name}'.";
elif ! _pkg_names="$(ex_pkg_get_packages "${_group_name}")"; then
- rtl_log_msg failexit "Error: failed to expand package list of build group \`${_group_name}'.";
- elif ! ex_pkg_env "${DEFAULT_BUILD_STEPS}" "${DEFAULT_BUILD_VARS}" \
- "${_group_name}" 1 "${PKG_NAME}" "" "${BUILD_WORKDIR}"; then
- rtl_log_msg failexit "Error: failed to set package environment for \`${PKG_NAME}'.";
- else rtl_log_env_vars "package" $(set | awk -F= '/^PKG_'"${_pkg_name_uc}"'_/{print $1}' | sort);
+ _rc=1; _status="Error: failed to expand package list of build group \`${_group_name}'.";
+ elif ! ex_pkg_env "${DEFAULT_BUILD_STEPS}" "${DEFAULT_BUILD_VARS}"\
+ "${_group_name}" 1 "${_pkg_name}" "" "${BUILD_WORKDIR}"; then
+ _rc=1; _status="Error: failed to set package environment for \`${_pkg_name}'.";
+ else rtl_log_env_vars "package" $(rtl_get_vars_fast "^PKG_${_pkg_name_uc}");
if [ -z "${PKG_DEPENDS}" ]; then
- rtl_log_msg info "Package \`${PKG_NAME}' has no dependencies.";
- else rtl_log_msg info "Direct dependencies of \`${PKG_NAME}': ${PKG_DEPENDS}";
- if ! ex_pkg_unfold_depends "${_group_name}" "${_pkg_names}" "${PKG_NAME}" 2 0; then
- rtl_log_msg warn "Warning: failed to unfold dependency-expanded package name list for \`${PKG_NAME}'.";
- else EX_PKG_NAMES="$(rtl_lfilter "${EX_PKG_NAMES}" "${PKG_NAME}")";
+ rtl_log_msg info "Package \`%s' has no dependencies." "${_pkg_name}";
+ else rtl_log_msg info "Direct dependencies of \`%s': %s" "${_pkg_name}" "${PKG_DEPENDS}";
+ if ! ex_pkg_unfold_depends 1 1 "${_group_name}" "${_pkg_names}" "${_pkg_name}" 0; then
+ rtl_log_msg warning "Warning: failed to unfold dependency-expanded package name list for \`%s'." "${_pkg_name}";
+ else EX_PKG_NAMES="$(rtl_lfilter "${EX_PKG_NAMES}" "${_pkg_name}")";
if [ -n "${EX_PKG_NAMES}" ]; then
- rtl_log_msg info "Full dependencies of \`${PKG_NAME}': $(rtl_lsort "${EX_PKG_NAMES}")";
+ rtl_log_msg info "Full dependencies of \`%s': %s"\
+ "${_pkg_name}" "$(rtl_lsort "${EX_PKG_NAMES}")";
fi;
if [ -n "${EX_PKG_DISABLED}" ]; then
- rtl_log_msg info "Full dependencies of \`${PKG_NAME}' (disabled packages:) $(rtl_lsort "${EX_PKG_DISABLED}")";
+ rtl_log_msg info "Full dependencies of \`%s' (disabled packages:) %s"\
+ "${_pkg_name}" "$(rtl_lsort "${EX_PKG_DISABLED}")";
fi;
fi;
fi;
- fi;
+ fi; return "${_rc}";
};
pkgtoolp_restart_at() {
- case "${ARG_RESTART_AT}" in
- ALL) "${MIDIPIX_BUILD_PWD}/build.sh" -P -r "${PKG_NAME}" -v; ;;
- *) "${MIDIPIX_BUILD_PWD}/build.sh" -P -r "${PKG_NAME}:${ARG_RESTART_AT}" -v; ;;
- esac;
+ local _pkg_name="${1}" _rc=0; _status="";
+ if ! ex_pkg_load_dump "${_pkg_name}" "${BUILD_WORKDIR}"; then
+ _rc=1; _status="${_status}";
+ else case "${ARG_RESTART_AT}" in
+ ALL) if ! "${MIDIPIX_BUILD_PWD}/build.sh" -P -r "${_pkg_name}" -v; then
+ _rc=1; _status="Error: failed to run command line ${MIDIPIX_BUILD_PWD}/build.sh -P -r ${_pkg_name} -v";
+ fi; ;;
+ *) if ! "${MIDIPIX_BUILD_PWD}/build.sh" -P -r "${_pkg_name}:${ARG_RESTART_AT}" -v; then
+ _rc=1; _status="Error: failed to run command line ${MIDIPIX_BUILD_PWD}/build.sh -P -r ${_pkg_name}:${ARG_RESTART_AT} -v";
+ fi; ;;
+ esac;
+ fi; return "${_rc}";
};
pkgtoolp_rdepends() {
- local _group_name="" _pkg_names="" EX_PKG_DISABLED=""; EX_PKG_FINISHED=""; EX_PKG_NAMES="";
- if ! _group_name="$(ex_pkg_find_package "${BUILD_GROUPS}" "${PKG_NAME}")"; then
- rtl_log_msg failexit "Error: unknown package \`${PKG_NAME}'.";
+ local _pkg_name="${1}" _group_name="" _pkg_names="" _rc=0\
+ EX_PKG_BUILD_GROUPS="" EX_PKG_DISABLED="" EX_PKG_FINISHED="" EX_PKG_NAMES=""; _status="";
+ if ! ex_pkg_load_groups; then
+ _rc=1; _status="Error: failed to load build groups.";
+ elif ! _group_name="$(ex_pkg_find_package "${EX_PKG_BUILD_GROUPS}" "${_pkg_name}")"; then
+ _rc=1; _status="Error: unknown package \`${_pkg_name}'.";
elif ! _pkg_names="$(ex_pkg_get_packages "${_group_name}")"; then
- rtl_log_msg failexit "Error: failed to expand package list of build group \`${_group_name}'.";
- elif ! ex_pkg_unfold_rdepends "${_group_name}" "${_pkg_names}" "${PKG_NAME}" 0; then
- rtl_log_msg failexit "Error: failed to unfold reverse dependency-expanded package name list for \`${PKG_NAME}'.";
+ _rc=1; _status="Error: failed to expand package list of build group \`${_group_name}'.";
+ elif ! ex_pkg_unfold_rdepends "${_group_name}" "${_pkg_names}" "${_pkg_name}" 0; then
+ _rc=1; _status="Error: failed to unfold reverse dependency-expanded package name list for \`${_pkg_name}'.";
elif [ -z "${EX_PKG_NAMES}" ] && [ -z "${EX_PKG_DISABLED}" ]; then
- rtl_log_msg info "Package \`${PKG_NAME}' has no reverse dependencies.";
+ rtl_log_msg info "Package \`%s' has no reverse dependencies." "${_pkg_name}";
else if [ -n "${EX_PKG_NAMES}" ]; then
- rtl_log_msg info "Reverse dependencies of \`${PKG_NAME}': $(rtl_lsort "${EX_PKG_NAMES}")";
+ rtl_log_msg info "Reverse dependencies of \`%s': %s"\
+ "${_pkg_name}" "$(rtl_lsort "${EX_PKG_NAMES}")";
fi;
if [ -n "${EX_PKG_DISABLED}" ]; then
- rtl_log_msg info "Reverse dependencies of \`${PKG_NAME}' (disabled packages:) $(rtl_lsort "${EX_PKG_DISABLED}")";
+ rtl_log_msg info "Reverse dependencies of \`%s' (disabled packages:) %s"\
+ "${_pkg_name}" "$(rtl_lsort "${EX_PKG_DISABLED}")";
fi;
- fi;
+ fi; return "${_rc}";
};
pkgtoolp_shell() {
- rtl_log_env_vars "build" $(set | awk -F= '/^PKG_/{print $1}' | sort);
- rtl_log_msg info "Launching shell \`${SHELL}' within package environment and \`${PKG_BUILD_DIR}'.";
- rtl_log_msg info "Run \$R to rebuild \`${PKG_NAME}'.";
- rtl_log_msg info "Run \$RS <step> to restart the specified build step of \`${PKG_NAME}'";
- rtl_log_msg info "Run \$D to automatically regenerate the patch for \`${PKG_NAME}'.";
- export ARCH BUILD \
- BUILD_DLCACHEDIR BUILD_WORKDIR \
- MAKE="make LIBTOOL=${PKG_LIBTOOL:-slibtool}" \
- MIDIPIX_BUILD_PWD \
- PKG_NAME \
- PREFIX PREFIX_CROSS PREFIX_MINGW32 PREFIX_MINIPIX \
- PREFIX_NATIVE PREFIX_ROOT PREFIX_RPM;
- D="${MIDIPIX_BUILD_PWD}/${0##*/} --update-diff" \
- R="${MIDIPIX_BUILD_PWD}/${0##*/} --restart-at ALL" \
- RS="${MIDIPIX_BUILD_PWD}/${0##*/} --restart-at " \
- "${SHELL}";
+ local _pkg_name="${1}" _rc=0; _status="";
+ if ! ex_pkg_load_dump "${_pkg_name}" "${BUILD_WORKDIR}"; then
+ _rc=1; _status="${_status}";
+ else rtl_log_env_vars "package" $(rtl_get_vars_fast "^PKG_");
+ rtl_log_msg info "Launching shell \`%s' within package environment and \`%s'." "${SHELL}" "${PKG_BUILD_DIR}";
+ rtl_log_msg info "Run \$R to rebuild \`%s'." "${_pkg_name}";
+ rtl_log_msg info "Run \$RS <step> to restart the specified build step of \`%s'" "${_pkg_name}";
+ rtl_log_msg info "Run \$D to automatically regenerate the patch for \`%s'." "${_pkg_name}";
+ export ARCH BUILD \
+ BUILD_DLCACHEDIR BUILD_WORKDIR \
+ MAKE="make LIBTOOL=${PKG_LIBTOOL:-slibtool}" \
+ MIDIPIX_BUILD_PWD \
+ PKG_NAME \
+ PREFIX PREFIX_CROSS PREFIX_MINGW32 PREFIX_MINIPIX \
+ PREFIX_NATIVE PREFIX_ROOT PREFIX_RPM;
+ D="${MIDIPIX_BUILD_PWD}/${0##*/} --update-diff" \
+ R="${MIDIPIX_BUILD_PWD}/${0##*/} --restart-at ALL" \
+ RS="${MIDIPIX_BUILD_PWD}/${0##*/} --restart-at " \
+ "${SHELL}";
+ fi; return "${_rc}";
};
pkgtoolp_tarball() {
- local _date="" _group_name="" _hname="" _pkg_name_full="" _pkg_version="" _tarball_fname="";
- if ! _group_name="$(ex_pkg_find_package "${BUILD_GROUPS}" "${PKG_NAME}")"; then
- rtl_log_msg failexit "Error: unknown package \`${PKG_NAME}'.";
+ local _pkg_name="${1}" _date="" _group_name="" _hname="" _pkg_name_full=""\
+ _pkg_version="" _rc=0 _tarball_fname="" EX_PKG_BUILD_GROUPS=""; _status="";
+ if ! ex_pkg_load_groups; then
+ _rc=1; _status="Error: failed to load build groups.";
+ elif ! _group_name="$(ex_pkg_find_package "${EX_PKG_BUILD_GROUPS}" "${_pkg_name}")"; then
+ _rc=1; _status="Error: unknown package \`${_pkg_name}'.";
elif ! ex_pkg_env "${DEFAULT_BUILD_STEPS}" "${DEFAULT_BUILD_VARS}" \
- "${_group_name}" "${PKG_NAME}" "" "${BUILD_WORKDIR}"; then
- rtl_log_msg failexit "Error: failed to set package environment for \`${PKG_NAME}'.";
+ "${_group_name}" 0 "${_pkg_name}" "" "${BUILD_WORKDIR}"; then
+ _rc=1; _status="Error: failed to set package environment for \`${_pkg_name}'.";
elif ! _date="$(date +%Y%m%d_%H%M%S)"; then
- rtl_log_msg failexit "Error: failed to call date(1).";
+ _rc=1; _status="Error: failed to call date(1).";
elif ! _hname="$(hostname -f)"; then
- rtl_log_msg failexit "Error: failed to call hostname(1).";
+ _rc=1; _status="Error: failed to call hostname(1).";
else if [ -n "${PKG_VERSION}" ]; then
- _pkg_name_full="${PKG_NAME}-${PKG_VERSION}";
+ _pkg_name_full="${_pkg_name}-${PKG_VERSION}";
else
- _pkg_name_full="${PKG_NAME}";
+ _pkg_name_full="${_pkg_name}";
fi;
_tarball_fname="${_pkg_name_full}@${_hname}-${_date}.tbz2";
- rtl_log_msg info "Creating compressed tarball of \`${PKG_BASE_DIR}' and \`${PKG_NAME}_stderrout.log'...";
+ rtl_log_msg info "Creating compressed tarball of \`%s' and \`%s_stderrout.log'..."\
+ "${PKG_BASE_DIR}" "${_pkg_name}";
if ! tar -C "${BUILD_WORKDIR}" -cpf - \
"${PKG_BASE_DIR#${BUILD_WORKDIR%/}/}" \
- "${PKG_NAME}_stderrout.log" |\
+ "${_pkg_name}_stderrout.log" |\
bzip2 -c -9 - > "${_tarball_fname}"; then
- rtl_log_msg failexit "Error: failed to create compressed tarball of \`${PKG_BASE_DIR}' and \`${PKG_NAME}_stderrout.log'.";
+ _rc=1; _status="Error: failed to create compressed tarball of \`${PKG_BASE_DIR}' and \`${_pkg_name}_stderrout.log'.";
else
- rtl_log_msg info "Created compressed tarball of \`${PKG_BASE_DIR}' and \`${PKG_NAME}_stderrout.log'.";
+ rtl_log_msg info "Created compressed tarball of \`%s' and \`%s_stderrout.log'."\
+ "${PKG_BASE_DIR}" "${_pkg_name}";
fi;
- fi;
+ fi; return "${_rc}";
};
pkgtoolp_update_diff() {
- local _diff_fname_dst="" _diff_fname_src="" _fname="" _fname_base="";
- if [ -n "${PKG_VERSION}" ]; then
- _diff_fname_dst="${PKG_NAME}-${PKG_VERSION}.local.patch";
- else
- _diff_fname_dst="${PKG_NAME}.local.patch";
- fi;
- if ! _diff_fname_src="$(mktemp)"; then
- rtl_log_msg failexit "Error: failed to create temporary target diff(1) file.";
- else trap "rm -f \"${_diff_fname_src}\" >/dev/null 2>&1" EXIT HUP INT TERM USR1 USR2;
- (cd "${PKG_BASE_DIR}" && printf "" > "${_diff_fname_src}";
- for _fname in $(find "${PKG_SUBDIR}" -iname \*.orig); do
- _fname_base="${_fname##*/}"; _fname_base="${_fname_base%.orig}";
- case "${_fname_base}" in
- config.sub)
- continue; ;;
- *) diff -u "${_fname}" "${_fname%.orig}" >> "${_diff_fname_src}"; ;;
- esac;
- done);
- if [ "${?}" -ne 0 ]; then
- rtl_log_msg failexit "Error: failed to create diff(1).";
- elif ! rtl_fileop mv "${_diff_fname_src}" "${MIDIPIX_BUILD_PWD}/patches/${_diff_fname_dst}"; then
- rtl_log_msg failexit "Error: failed to rename diff(1) to \`${MIDIPIX_BUILD_PWD}/patches/${_diff_fname_dst}'.";
- else trap - EXIT HUP INT TERM USR1 USR2;
- rtl_log_msg info "Updated \`${MIDIPIX_BUILD_PWD}/patches/${_diff_fname_dst}'.";
+ local _pkg_name="${1}" _diff_fname_dst="" _diff_fname_src="" _fname=""\
+ _fname_base="" _rc=0; _status="";
+ if ! ex_pkg_load_dump "${_pkg_name}" "${BUILD_WORKDIR}"; then
+ _rc=1; _status="${_status}";
+ else if [ -n "${PKG_VERSION}" ]; then
+ _diff_fname_dst="${_pkg_name}-${PKG_VERSION}.local.patch";
+ else
+ _diff_fname_dst="${_pkg_name}.local.patch";
fi;
- fi;
+ if ! _diff_fname_src="$(mktemp)"; then
+ _rc=1; _status="Error: failed to create temporary target diff(1) file.";
+ else trap "rm -f \"${_diff_fname_src}\" >/dev/null 2>&1" EXIT HUP INT TERM USR1 USR2;
+ (cd "${PKG_BASE_DIR}" && printf "" > "${_diff_fname_src}";
+ for _fname in $(find "${PKG_SUBDIR}" -iname \*.orig); do
+ _fname_base="${_fname##*/}"; _fname_base="${_fname_base%.orig}";
+ case "${_fname_base}" in
+ config.sub)
+ continue; ;;
+ *) diff -u "${_fname}" "${_fname%.orig}" >> "${_diff_fname_src}"; ;;
+ esac;
+ done);
+ if [ "${?}" -ne 0 ]; then
+ _rc=1; _status="Error: failed to create diff(1).";
+ elif ! rtl_fileop mv "${_diff_fname_src}" "${MIDIPIX_BUILD_PWD}/patches/${_diff_fname_dst}"; then
+ _rc=1; _status="Error: failed to rename diff(1) to \`${MIDIPIX_BUILD_PWD}/patches/${_diff_fname_dst}'.";
+ else trap - EXIT HUP INT TERM USR1 USR2;
+ rtl_log_msg info "Updated \`%s/patches/%s'."\
+ "${MIDIPIX_BUILD_PWD}" "${_diff_fname_dst}";
+ fi;
+ fi;
+ fi; return "${_rc}";
};
pkgtool() {
- local _status="";
- if ! cd "$(dirname "${0}")"\
- || ! . ./subr/pkgtool_init.subr\
- || ! pkgtool_init "${@}"; then
- printf "Error: failed to setup environment.\n"; exit 1;
- elif [ -n "${ARG_RESTART_AT}" ]; then
- pkgtoolp_restart_at;
- elif [ "${ARG_UPDATE_DIFF:-0}" -eq 1 ]; then
- pkgtoolp_update_diff;
- elif [ "${ARG_INFO:-0}" -eq 1 ]; then
- pkgtoolp_info;
- elif [ "${ARG_RDEPENDS:-0}" -eq 1 ]; then
- pkgtoolp_rdepends;
- elif [ "${ARG_SHELL:-0}" -eq 1 ]; then
- pkgtoolp_shell;
- elif [ "${ARG_TARBALL:-0}" -eq 1 ]; then
- pkgtoolp_tarball;
+ local _rc=0 _status="" BUILD_GROUPS="" ARCH BUILD BUILD_WORKDIR PKGTOOL_PKGNAME PREFIX;
+ if ! . "${0%/*}/subr/pkgtool_init.subr"; then
+ _rc=1; printf "Error: failed to source \`${0%/*}/subr/pkgtool_init.subr'." >&2;
+ elif ! pkgtool_init "${@}"; then
+ _rc=1; _status="${_status}";
+ else case "1" in
+ "${ARG_INFO:-0}") pkgtoolp_info "${PKGTOOL_PKG_NAME}"; ;;
+ "${ARG_RDEPENDS:-0}") pkgtoolp_rdepends "${PKGTOOL_PKG_NAME}"; ;;
+ "${ARG_RESTART_AT:+1}") pkgtoolp_restart_at "${PKGTOOL_PKG_NAME}"; ;;
+ "${ARG_SHELL:-0}") pkgtoolp_shell "${PKGTOOL_PKG_NAME}"; ;;
+ "${ARG_TARBALL:-0}") pkgtoolp_tarball "${PKGTOOL_PKG_NAME}"; ;;
+ "${ARG_UPDATE_DIFF:-0}") pkgtoolp_update_diff "${PKGTOOL_PKG_NAME}"; ;;
+ esac; _rc="${?}";
+ fi;
+ if [ "${_rc}" -ne 0 ]; then
+ rtl_log_msg fatalexit "${_status}";
+ elif [ -n "${_status}" ]; then
+ rtl_log_msg info "${_status}";
fi;
};