From b6a9a1a3c8b98077cce47d579069c42080d17da5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz?= Date: Sun, 15 Mar 2020 09:14:23 +0000 Subject: General cleanup. --- subr/pkgtool_init.subr | 169 ++++++++++--------------------------------------- 1 file changed, 32 insertions(+), 137 deletions(-) (limited to 'subr/pkgtool_init.subr') diff --git a/subr/pkgtool_init.subr b/subr/pkgtool_init.subr index ce3c6808..f92572fb 100644 --- a/subr/pkgtool_init.subr +++ b/subr/pkgtool_init.subr @@ -2,57 +2,35 @@ # set +o errexit -o noglob is assumed. # -pkgtoolp_init_defaults() { - : ${ARCH:="nt64"}; : ${BUILD:="debug"}; : ${PKG_NAME:=""}; - : ${BUILD_WORKDIR:=""}; : ${PREFIX=""}; - ARG_INFO=0; ARG_RESTART_AT=""; ARG_RDEPENDS=0; - ARG_UPDATE_DIFF=0; ARG_SHELL=0; ARG_TARBALL=0; - BUILD_GROUPS=""; -}; - -pkgtoolp_init_dump() { +pkgtoolp_init_args() { local _rc=0; _status=""; - if [ -n "${ARG_RESTART_AT}" ]\ - || [ "${ARG_UPDATE_DIFF:-0}" -eq 1 ]\ - || [ "${ARG_SHELL:-0}" -eq 1 ]; then - if [ ! -e "${BUILD_WORKDIR}/${PKG_NAME}.dump" ]; then - rtl_log_msg warn "Warning: failed to locate environment dump for package \`${PKG_NAME}' in \`${BUILD_WORKDIR}'."; - rtl_log_msg info "Rebuilding package \`${PKG_NAME}' w/ --dump-in build..."; - (export ARCH BUILD \ - BUILD_DLCACHEDIR BUILD_WORKDIR \ - PREFIX PREFIX_CROSS PREFIX_MINGW32 PREFIX_MINIPIX \ - PREFIX_NATIVE PREFIX_ROOT PREFIX_RPM; - ./build.sh -a "${ARCH}" -b "${BUILD}" --dump-in build -P -r "${PKG_NAME}" -v); - if [ ! -e "${BUILD_WORKDIR}/${PKG_NAME}.dump" ]; then - _rc=1; _status="Error: failed to locate environment dump for package \`${PKG_NAME}' in \`${BUILD_WORKDIR}'."; - fi; - else - _rc=0; - fi; - if [ "${_rc:-0}" -eq 0 ]\ - && ! . "${BUILD_WORKDIR}/${PKG_NAME}.dump"; then - _rc=1; _status="Error: failed to source environment dump for package \`${PKG_NAME}' from \`${BUILD_WORKDIR}'."; - elif [ "${_rc:-0}" -eq 0 ]\ - && ! rtl_fileop cd "${PKG_BUILD_DIR}"; then - _rc=1; _status="Error: failed to change working directory to \`${PKG_BUILD_DIR}'."; - fi; + if [ "$((${ARG_INFO:-0} + ${ARG_RDEPENDS:-0} + ${ARG_SHELL:-0} + ${ARG_TARBALL:-0}))" -gt 1 ]; then + cat etc/pkgtool.usage; _rc=1; _status="Error: only one of -i, -r, -s, or -t must be specified."; + elif [ "$((${ARG_INFO:-0} + ${ARG_RDEPENDS:-0} + ${ARG_SHELL:-0} + ${ARG_TARBALL:-0}))" -eq 0 ]\ + && [ -z "${ARG_RESTART_AT}" ]\ + && [ "${ARG_UPDATE_DIFF:-0}" -eq 0 ]; then + cat etc/pkgtool.usage; _rc=1; _status="Error: one of -i, -r, -s, or -t must be specified."; + else _rc=0; fi; return "${_rc}"; }; pkgtoolp_init_env() { local _fname="" _rc=0; _status=""; - if ! umask 022; then - printf "Error: failed to setup environment.\n"; exit 1; + if ! cd "${0%/*}"; then + printf "Error: failed to change working directory to \`${0%/*}'." >&2; exit 1; + elif ! umask 022; then + printf "Error: failed to set umask(2).\n" >&2; exit 1; else for _fname in $(find subr -name *.subr); do if ! . "${_fname}"; then - printf "Error: failed to source \`%s'.\n" "${_fname}"; exit 1; + printf "Error: failed to source \`%s'.\n" "${_fname}" >&2; exit 1; fi; - done; fi; - return "${_rc}"; + done; + fi; return "${_rc}"; }; pkgtoolp_init_getopts() { - local _opt="" _shiftfl=0 _rc=0 OPTIND=0; _status=""; + local _opt="" _shiftfl=0 _rc=0 OPTIND=0; _status=""; : ${ARCH:="nt64"}; : ${BUILD:="debug"}; + ARG_INFO=0; ARG_RESTART_AT=""; ARG_RDEPENDS=0; ARG_UPDATE_DIFF=0; ARG_SHELL=0; ARG_TARBALL=0; while [ "${#}" -gt 0 ]; do case "${1}" in --update-diff) @@ -86,78 +64,22 @@ pkgtoolp_init_getopts() { fi; done; if [ "${_rc}" -eq 0 ]; then - if [ "$((${ARG_INFO:-0} + ${ARG_RDEPENDS:-0} + ${ARG_SHELL:-0} + ${ARG_TARBALL:-0}))" -gt 1 ]; then - cat etc/pkgtool.usage; rtl_log_msg failexit "Error: only one of -i, -r, -s, or -t must be specified."; - elif [ "$((${ARG_INFO:-0} + ${ARG_RDEPENDS:-0} + ${ARG_SHELL:-0} + ${ARG_TARBALL:-0}))" -eq 0 ]; then - if [ -z "${ARG_RESTART_AT}" ]\ - && [ "${ARG_UPDATE_DIFF:-0}" -eq 0 ]; then - cat etc/pkgtool.usage; rtl_log_msg failexit "Error: one of -i, -r, -s, or -t must be specified."; - fi; - fi; while [ "${#}" -gt 0 ]; do - case "${1}" in - *=*) rtl_set_var_unsafe "${1%%=*}" "${1#*=}"; ;; - *) if [ "${#}" -ne 1 ]; then - _rc=1; _status="Error: invalid argument \`${1}'."; - fi; break; ;; - esac; shift; done; + case "${1}" in + *=*) rtl_set_var_unsafe "${1%%=*}" "${1#*=}"; ;; + *) if [ "${#}" -ne 1 ]; then + _rc=1; _status="Error: invalid argument \`${1}'."; + fi; break; ;; + esac; shift; + done; if [ "${_rc:-0}" -eq 0 ]; then if [ "${#}" -ne 1 ]\ - && [ -z "${PKG_NAME}" ]; then + && [ -z "${PKGTOOL_PKG_NAME}" ]; then _rc=1; _status="Error: missing package name."; elif [ "${#}" -eq 1 ]; then - PKG_NAME="${1}"; + PKGTOOL_PKG_NAME="${1}"; export PKGTOOL_PKG_NAME; fi; fi; - fi; - return "${_rc}"; -}; - -pkgtoolp_init_groups() { - local _default_build_groups="" _fname="" _group="" _groups="" _rc=0; _status=""; - if [ "${ARG_INFO:-0}" -eq 1 ]\ - || [ "${ARG_RDEPENDS:-0}" -eq 1 ]\ - || [ "${ARG_TARBALL:-0}" -eq 1 ]; then - for _fname in $(find ./groups -name *.group | sort); do - rtl_fileop source_opt "${_fname}"; - if [ -n "${GROUP_TARGET}" ]; then - _group="${GROUP_TARGET}"; unset GROUP_TARGET; - else - _group="${_fname##*/}"; _group="${_group%.group}"; _group="${_group#*.}"; - fi; - if ! rtl_lmatch "${_groups}" "${_group}"; then - _groups="$(rtl_lconcat "${_groups}" "${_group}")"; - if [ -n "${GROUP_AUTO}" ]; then - if [ "${GROUP_AUTO:-0}" -ne 0 ]; then - _default_build_groups="$(rtl_lconcat "${_default_build_groups}" "${_group}")"; - fi; - unset GROUP_AUTO; - else - _default_build_groups="$(rtl_lconcat "${_default_build_groups}" "${_group}")"; - fi; - fi; - done; - _default_build_groups="$(rtl_uniq "${_default_build_groups}")"; - BUILD_GROUPS="${_default_build_groups}"; - fi; return "${_rc}"; -}; - -pkgtoolp_init_package() { - local _foundfl=0 _group_name="" _pkg_names="" _rc=0; _status=""; - if [ "${ARG_INFO:-0}" -eq 1 ]\ - || [ "${ARG_RDEPENDS:-0}" -eq 1 ]\ - || [ "${ARG_TARBALL:-0}" -eq 1 ]; then - for _group_name in ${BUILD_GROUPS}; do - if ! _pkg_names="$(rtl_get_var_unsafe -u "${_group_name}_PACKAGES")"\ - || [ -z "${_pkg_names}" ]; then - rtl_log_msg warn "Warning: ignoring non-existent or invalid build group \`${_build_group}'."; - elif rtl_lmatch "${_pkg_names}" "${PKG_NAME}"; then - _foundfl=1; - fi; - done; - if [ "${_foundfl:-0}" -eq 0 ]; then - _rc=1; _status="Error: package \`${PKG_NAME}' unknown."; - fi; fi; return "${_rc}"; }; @@ -176,45 +98,18 @@ pkgtoolp_init_prereqs() { elif ! (FNAME="$(mktemp)" && { trap "rm -f \"\${FNAME}\"" EXIT; \ sed -i'' -e '' "${FNAME}" >/dev/null 2>&1; }); then _rc=1; _status="Error: sed(1) in \${PATH} does not support the \`-i' option."; - fi; - return "${_rc}"; -}; - -pkgtoolp_init_vars() { - local _rc=0; _status=""; - if ! rtl_lmatch "${ARCH}" "nt32 nt64"; then - _rc=1; _status="Error: invalid architecture \`${ARCH}'."; - elif ! rtl_lmatch "${BUILD}" "debug release"; then - _rc=1; _status="Error: unknown build type \`${BUILD}'."; - else case "${ARCH}" in - nt32) DEFAULT_TARGET="i686-nt32-midipix"; ;; - nt64) DEFAULT_TARGET="x86_64-nt64-midipix"; ;; - esac; - rtl_fileop source_opt \ - "${HOME}/midipix_build.vars" "${HOME}/.midipix_build.vars" \ - ../midipix_build.vars ./midipix.env; - if [ -z "${PREFIX}" ]; then - _rc=1; _status="Error: \${PREFIX} empty or unset."; - fi; fi; - return "${_rc}"; + fi; return "${_rc}"; }; pkgtool_init() { - local _fname="" _rc=0 _status=""; + local _fname="" _rc=0; _status=""; if ! pkgtoolp_init_env \ - || ! pkgtoolp_init_defaults \ || ! pkgtoolp_init_getopts "${@}" \ || ! pkgtoolp_init_prereqs \ - || ! pkgtoolp_init_vars \ - || ! pkgtoolp_init_dump \ - || ! pkgtoolp_init_groups \ - || ! pkgtoolp_init_package; then - _rc="${?}"; rtl_log_msg fail "${_status}"; exit "${_rc}"; - elif [ -n "${_status}" ]; then - rtl_log_msg info "${_status}"; exit 0; - else - return "${_rc}"; - fi; + || ! ex_pkg_load_vars \ + || ! pkgtoolp_init_args; then + _rc=1; _status="${_status}"; + fi; return "${_rc}"; }; # vim:filetype=sh -- cgit v1.2.3