summaryrefslogtreecommitdiffhomepage
path: root/subr/pkgtool_init.subr
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 /subr/pkgtool_init.subr
parent3e295f4e81f867fbd8b6c9c306bc1ca124e41d8b (diff)
downloadmidipix_build-b6a9a1a3c8b98077cce47d579069c42080d17da5.tar.bz2
midipix_build-b6a9a1a3c8b98077cce47d579069c42080d17da5.tar.xz
General cleanup.
Diffstat (limited to 'subr/pkgtool_init.subr')
-rw-r--r--subr/pkgtool_init.subr169
1 files changed, 32 insertions, 137 deletions
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