From e9fa0774ed2e7e030a68f5b0ae51fe6dd69fe492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=C3=ADa=20Andrea=20Illanes=20Albornoz?= Date: Fri, 17 Feb 2023 19:29:28 +0100 Subject: Make everything a bit faster. 0) Issues several prayers and sacrifices to Enki under threat of a terrible deluge sent down by Ellil 1) Convert fork-write/read exprs to be non-forking 2) Pass mostly everything by reference 3) Don't bother cleaning the variable namespace because Bourne shell is an abomination 4) Removes broken ./pkgtool.sh -s, --restart-at, --update-diff & ./build.sh --dump-{in,on-abort} 5) Cleanup --- subr/build_init.subr | 323 -------------------------------------- subr/ex_pkg.subr | 287 --------------------------------- subr/ex_pkg_dispatch.subr | 255 ------------------------------ subr/ex_pkg_env.subr | 157 ------------------ subr/ex_pkg_exec.subr | 136 ---------------- subr/ex_pkg_restart.subr | 293 ---------------------------------- subr/pkg_build.subr | 54 ------- subr/pkg_build_clean.subr | 33 ---- subr/pkg_clean.subr | 29 ---- subr/pkg_configure.subr | 184 ---------------------- subr/pkg_configure_autotools.subr | 99 ------------ subr/pkg_configure_clean.subr | 20 --- subr/pkg_configure_patch.subr | 33 ---- subr/pkg_configure_patch_pre.subr | 38 ----- subr/pkg_fetch_clean.subr | 21 --- subr/pkg_fetch_download.subr | 67 -------- subr/pkg_fetch_extract.subr | 37 ----- subr/pkg_install.subr | 35 ----- subr/pkg_install_clean.subr | 12 -- subr/pkg_install_files.subr | 115 -------------- subr/pkg_install_libs.subr | 66 -------- subr/pkg_install_make.subr | 37 ----- subr/pkg_install_rpm.subr | 52 ------ subr/pkg_install_subdirs.subr | 21 --- subr/pkgtool_init.subr | 153 ------------------ 25 files changed, 2557 deletions(-) delete mode 100644 subr/build_init.subr delete mode 100644 subr/ex_pkg.subr delete mode 100644 subr/ex_pkg_dispatch.subr delete mode 100644 subr/ex_pkg_env.subr delete mode 100644 subr/ex_pkg_exec.subr delete mode 100644 subr/ex_pkg_restart.subr delete mode 100644 subr/pkg_build.subr delete mode 100644 subr/pkg_build_clean.subr delete mode 100644 subr/pkg_clean.subr delete mode 100644 subr/pkg_configure.subr delete mode 100644 subr/pkg_configure_autotools.subr delete mode 100644 subr/pkg_configure_clean.subr delete mode 100644 subr/pkg_configure_patch.subr delete mode 100644 subr/pkg_configure_patch_pre.subr delete mode 100644 subr/pkg_fetch_clean.subr delete mode 100644 subr/pkg_fetch_download.subr delete mode 100644 subr/pkg_fetch_extract.subr delete mode 100644 subr/pkg_install.subr delete mode 100644 subr/pkg_install_clean.subr delete mode 100644 subr/pkg_install_files.subr delete mode 100644 subr/pkg_install_libs.subr delete mode 100644 subr/pkg_install_make.subr delete mode 100644 subr/pkg_install_rpm.subr delete mode 100644 subr/pkg_install_subdirs.subr delete mode 100644 subr/pkgtool_init.subr (limited to 'subr') diff --git a/subr/build_init.subr b/subr/build_init.subr deleted file mode 100644 index 71e57e44..00000000 --- a/subr/build_init.subr +++ /dev/null @@ -1,323 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -buildp_init_args() { - local _foundfl=0 _group="" _pkg_names_unknown="" _rc=0 \ - EX_PKG_BUILD_GROUPS EX_PKG_BUILD_GROUPS_NOAUTO; _status=""; - - case "${ARG_FETCH_FORCE}" in - ipv4) DEFAULT_GIT_ARGS="$(rtl_lconcat "-4" "${DEFAULT_GIT_ARGS}")"; - DEFAULT_WGET_ARGS="$(rtl_lconcat "-4" "${DEFAULT_WGET_ARGS}")"; ;; - ipv6) DEFAULT_GIT_ARGS="$(rtl_lconcat "-6" "${DEFAULT_GIT_ARGS}")"; - DEFAULT_WGET_ARGS="$(rtl_lconcat "-6" "${DEFAULT_WGET_ARGS}")"; ;; - esac; - if [ "${BUILD_HNAME:+1}" != 1 ]\ - && ! BUILD_HNAME="$(hostname)"; then - _rc=1; _status="failed to obtain hostname."; - elif [ "${ARG_DUMP_ON_ABORT:-0}" -eq 1 ]\ - && [ "${ARG_RELAXED:-0}" -eq 1 ]; then - _rc=1; _status="--dump-on-abort excludes -R."; - elif [ "${ARG_AS_NEEDED:-0}" -eq 1 ]\ - && [ -e "${PREFIX}/build.gitref" ]\ - && [ "$(git rev-parse HEAD)" = "$(cat "${PREFIX}/build.gitref")" ]; then - _rc=0; _status="Git repository has not changed since last build and --as-needed was specified."; - elif ! ex_pkg_process_restart_spec \$ARG_RESTART \$ARG_RESTART_AT \$ARG_RESTART_RECURSIVE; then - _rc=1; _status="failed to process -r specification: ${_status}."; - elif ! ex_pkg_load_groups; then - _rc=1; _status="failed to load build groups."; - else if ! rtl_lmatch "${ARG_DIST:-}" "rpm" ","\ - && [ "${ARG_DUMP_IN:+1}" != 1 ]\ - && [ "${ARG_DUMP_ON_ABORT:-0}" -eq 0 ]; then - EX_PKG_BUILD_GROUPS="$(rtl_lfilter "${EX_PKG_BUILD_GROUPS}" "host_deps_rpm")"; - fi; - if [ "${BUILD_GROUPS:+1}" != 1 ]; then - BUILD_GROUPS="${EX_PKG_BUILD_GROUPS}"; - else _foundfl=0; for _group in ${BUILD_GROUPS}; do - if rtl_lmatch "${EX_PKG_BUILD_GROUPS}" "${_group}"; then - _foundfl=1; break; - fi; - done; - if [ "${_foundfl}" -eq 0 ]; then - _foundfl=0; for _group in ${BUILD_GROUPS}; do - if rtl_lmatch "${EX_PKG_BUILD_GROUPS}" "${_group}"; then - _rc=1; _status="unknown build group \`${_group}'."; break; - fi; - done; - fi; - fi; - if [ "${_rc:-0}" -eq 0 ]; then - if rtl_lmatch "${ARG_DIST}" "zipdist" ","\ - && ! rtl_lmatch "${ARG_DIST}" "minipix" ","; then - ARG_DIST="$(rtl_lconcat "${ARG_DIST}" "minipix" ",")"; - fi; - if [ "${ARG_DIST:+1}" = 1 ]; then - BUILD_GROUPS="$(rtl_lconcat "$(rtl_lfilter "${BUILD_GROUPS}" "dist")" "dist")"; - fi; - if [ "${ARG_RESTART:+1}" = 1 ]\ - && ! rtl_lmatch "${ARG_RESTART}" "ALL LAST"; then - for _pkg_name in ${ARG_RESTART}; do - if ! ex_pkg_find_package "${BUILD_GROUPS}" "${_pkg_name}" >/dev/null; then - _pkg_names_unknown="$(rtl_lconcat "${_pkg_names_unknown}" "${_pkg_name}")"; - fi; - done; - case "$(rtl_llength "${_pkg_names_unknown}")" in - 0) ;; - 1) _rc=1; _status="unknown package \`${_pkg_names_unknown}'."; ;; - *) _rc=1; _status="unknown packages: $(rtl_subst "${_pkg_names_unknown}" " " ", ")"; ;; - esac; - fi; - fi; - fi; return "${_rc}"; -}; - -buildp_init_env() { - local _fname="" _lang="${LANG:-C}" _lang_="" _name="" _rc=0; _status=""; _lang="${_lang%%_*}"; - - 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; - elif ! BUILD_USER="$(id -nu)"; then - printf "Error: failed to obtain username." >&2; exit 1; - else for _fname in \ - $(find subr.rtl -name *.subr) \ - $(find subr -name *.subr) \ - etc/build.theme \ - ; - do - if ! . "${_fname}"; then - printf "Error: failed to source \`%s'.\n" "${_fname}" >&2; exit 1; - fi; - done; - if [ -e "etc/build.theme.local" ]; then - if ! . "etc/build.theme.local"; then - printf "Error: failed to source \`%s'.\n" "etc/build.theme.local" >&2; exit 1; - fi; - fi; - for _name in build rtl; do - for _lang_ in ${_lang} C; do - _fname="etc/${_name}.msgs.${_lang_}"; - if [ -e "${_fname}" ]; then - if ! . "${_fname}"; then - printf "Error: failed to source \`%s'.\n" "${_fname}" >&2; exit 1; - fi; - if [ -e "${_fname}.local" ]; then - if ! . "${_fname}.local"; then - printf "Error: failed to source \`%s'.\n" "${_fname}.local" >&2; exit 1; - fi; - fi; break; - fi; - done; - done; - fi; export LANG=C LC_ALL=C; return "${_rc}"; -}; - -buildp_init_files() { - local _log_last_fname="" _log_last_num=1 _rc=0; _status="" - - if ! rtl_fileop mkdir "${BUILD_DLCACHEDIR}" "${BUILD_WORKDIR}"\ - || rtl_lmatch "${ARG_DIST}" "rpm" ","\ - && ! rtl_fileop mkdir "${PREFIX_RPM}"; then - _rc=1; _status="cannot create build directories."; - elif [ -e "${DEFAULT_BUILD_STATUS_IN_PROGRESS_FNAME}" ]; then - _rc=1; _status="another build targeting this architecture and build type is currently in progress."; - elif ! rtl_clean_env "${DEFAULT_CLEAR_ENV_VARS_EXCEPT}"; then - _rc=1; _status="failed to clean environment."; - elif ! rtl_check_path_vars "${DEFAULT_CHECK_PATH_VARS}"; then - _rc=1; _status="${_status}"; - else export TMP="${BUILD_WORKDIR}" TMPDIR="${BUILD_WORKDIR}"; - touch "${DEFAULT_BUILD_STATUS_IN_PROGRESS_FNAME}"; - if [ -e "${DEFAULT_BUILD_LOG_FNAME}" ]; then - while [ -e "${DEFAULT_BUILD_LOG_FNAME}.${_log_last_num}" ]; do - : $((_log_last_num+=1)); - done; - _log_last_fname="${DEFAULT_BUILD_LOG_FNAME}.${_log_last_num}"; - rtl_fileop mv "${DEFAULT_BUILD_LOG_FNAME}" "${_log_last_fname}"; - rtl_fileop ln_symbolic "${_log_last_fname}" "${DEFAULT_BUILD_LOG_LAST_FNAME}"; - fi; - rtl_fileop touch "${DEFAULT_BUILD_LOG_FNAME}"; rtl_log_set_fname "${DEFAULT_BUILD_LOG_FNAME}"; - if rtl_lmatch "${ARG_CLEAN_BUILDS}" "prefix" ","; then - trap "rm -f \"${DEFAULT_BUILD_STATUS_IN_PROGRESS_FNAME}\" 2>/dev/null; rtl_log_msg \"fatalexit\" \"${MSG_build_aborted}\"" HUP INT TERM USR1 USR2; - rtl_log_msg "info" "${MSG_build_clean_prefix}"; - for _pname in ${DEFAULT_CLEAR_PREFIX_PATHS}; do - if ! rtl_fileop rm "${PREFIX}/${_pname}"; then - _rc=1; _status="failed to remove \`${PREFIX}/${_pname}'."; break; - fi; - done; - trap - HUP INT TERM USR1 USR2; - fi; - export PATH="${PREFIX}/bin${PATH:+:${PATH}}"; - fi; - return "${_rc}"; -}; - -buildp_init_getopts() { - local _arg="" _opt="" _rc=0 _shiftfl=0 OPTIND=0; _status=""; - - : ${ARCH:="nt64"}; : ${BUILD_KIND:="debug"}; - ARG_AS_NEEDED=0; ARG_CLEAN_BUILDS=""; ARG_DEBUG_MINIPIX=0; ARG_DIST=""; ARG_DUMP_IN=""; - ARG_DUMP_ON_ABORT=0; ARG_FETCH_FORCE=""; ARG_PARALLEL=1; ARG_RELAXED=0; ARG_RESET_PKG=0; - ARG_RESTART=""; ARG_RESTART_AT=""; ARG_RESTART_RECURSIVE=""; ARG_VERBOSE=0; ARG_VERBOSE_TAGS=""; - - while [ "${#}" -gt 0 ]; do - case "${1}" in - --as-needed) ARG_AS_NEEDED=1; _shiftfl=1; ;; - --dump-in) if [ "${#}" -ge 2 ]; then - ARG_DUMP_IN="${2}"; ARG_DUMP_ON_ABORT=1; _shiftfl=2; - else - _rc=1; _status="missing argument to option --dump-in."; - fi; ;; - --dump-on-abort) - ARG_DUMP_ON_ABORT=1; _shiftfl=1; ;; - --debug-minipx) ARG_DEBUG_MINIPIX=1; _shiftfl=1; ;; - --help) - if [ -t 1 ]; then - cat etc/build.usage; - else - sed 's/\[[0-9]\+m//g' etc/build.usage; - fi; exit 0; ;; - --reset-state) ARG_RESET_PKG=1; _shiftfl=1; ;; - -v*) _opt="${1#-}"; while [ -n "${_opt}" ]; do - : $((ARG_VERBOSE+=1)); _opt="${_opt#?}"; - done; _shiftfl=1; ;; - # {{{ --roar - --roar) printf "%s\n" ' - ▃▃▃▃ - ▟ ▙ -▟▙▃▟▙  /\ /\  roar! -▜▒▓▒▛  ▛ """ ▜  / - ▜ ▛   ^ _ ^   / - ▀   (__y_)   - ▟▙ ▁▂▃▟▐▙▜`\_/▛▟▌ - ▟▙ ▟ ▓▓▓| |▍▓▓▓ - ▜\▙ ▟ ▓▓▓▓▓ |▓▓▓▓▓ - ▜\\ \ ▒▒▒| | ▒▒▒ - ▜\ ) ▒_| |▙ ▒ - ( / ))))))'; exit 0; ;; - # }}} - *) _shiftfl=0; ;; - esac; - if [ "${_rc}" -ne 0 ]; then - break; - elif [ "${_shiftfl}" -gt 0 ]; then - shift "${_shiftfl}"; continue; - elif getopts a:b:C:D:F:hp:Pr:RxV: _opt; then - case "${_opt}" in - a) ARCH="${OPTARG}"; ;; - b) BUILD_KIND="${OPTARG}"; ;; - C) ARG_CLEAN_BUILDS="${OPTARG}"; ;; - D) ARG_DIST="${OPTARG}"; ;; - F) ARG_FETCH_FORCE="${OPTARG}"; ;; - h) - if [ -t 1 ]; then - cat etc/build.usage.short; - else - sed 's/\[[0-9]\+m//g' etc/build.usage.short; - fi; exit 0; ;; - p) ARG_PARALLEL="${OPTARG}"; ;; - P) ARG_PARALLEL="auto"; - if [ -n "${2:-}" ]\ - && rtl_isnumber "${2}"; then - _rc=1; _status="maximum parallelisation job count is set with the \`-p jobs' option."; break - fi; ;; - r) ARG_RESTART="${OPTARG}"; ;; - R) ARG_RELAXED=1; ;; - x) ARG_VERBOSE_TAGS="${ARG_VERBOSE_TAGS:+${ARG_VERBOSE_TAGS},}xtrace"; ;; - V) ARG_VERBOSE_TAGS="${OPTARG}"; ;; - *) cat etc/build.usage.short; exit 1; ;; - esac; shift $((${OPTIND}-1)); OPTIND=1; - else if rtl_match "${1}" "=*"; then - BUILD_GROUPS_INHIBIT_DEPS=1; _arg="${1#=}"; - else - _arg="${1}"; - fi; - case "${_arg}" in - *=*) rtl_set_var_unsafe "${_arg%%=*}" "${_arg#*=}"; ;; - [!a-zA-Z]*) _rc=1; _status="build group names must start with [a-zA-Z] (in argument \`${_arg}'.)"; ;; - *[!_a-zA-Z]*) _rc=1; _status="build group names must not contain [!_a-zA-Z] (in argument \`${_arg}'.)"; ;; - *) BUILD_GROUPS="$(rtl_lconcat "${BUILD_GROUPS}" "${_arg}")"; ;; - esac; shift; - fi; - done; - if [ "${_rc:-0}" -eq 0 ]; then - case "${ARG_PARALLEL}" in - auto) if ! ARG_PARALLEL="$(rtl_get_cpu_count)"; then - _rc=1; _status="failed to get CPU count."; - else - ARG_PARALLEL=$((${ARG_PARALLEL}/2)); - fi; ;; - max) if ! ARG_PARALLEL="$(rtl_get_cpu_count)"; then - _rc=1; _status="failed to get CPU count."; - fi; ;; - "") ARG_PARALLEL=1; ;; - *) if ! rtl_isnumber "${ARG_PARALLEL}"; then - _rc=1; _status="invalid jobs count \`${ARG_PARALLEL}'."; - fi; ;; - esac; - if [ "${_rc:-0}" -eq 0 ]; then - DEFAULT_BUILD_CPUS="${ARG_PARALLEL}"; - fi; - fi; - return "${_rc}"; -}; - -buildp_init_logging() { - local _tag="" _tags="" _rc=0; _status=""; - - rtl_log_clear_tags; - case "${ARG_VERBOSE}" in - 0) [ "${#ARG_VERBOSE_TAGS}" -eq 0 ] && rtl_log_enable_tags "${LOG_TAGS_normal}"; ;; - 1) rtl_log_enable_tags "${LOG_TAGS_verbose}"; ;; - *) _rc=1; _status="invalid verbosity level (max. -v)"; ;; - esac; - if [ "${_rc}" -eq 0 ]; then - case "${ARG_VERBOSE_TAGS}" in - +*) rtl_log_enable_tags "${LOG_TAGS_normal}"; - ARG_VERBOSE_TAGS="${ARG_VERBOSE_TAGS#+}"; ;; - *) ;; - esac; - for _tag in $(rtl_llift "${ARG_VERBOSE_TAGS}" "," " "); do - case "${_tag}" in - all) rtl_log_enable_tags "${LOG_TAGS_all}"; ;; - clear|none) rtl_log_clear_tags; ;; - normal) rtl_log_enable_tags "${LOG_TAGS_normal}"; ;; - verbose) rtl_log_enable_tags "${LOG_TAGS_verbose}"; ;; - *) - _tags="$(rtl_lsearch_patternl "${LOG_TAGS_all}" "${_tag}" ",")"; - if [ "${#_tags}" -gt 0 ]; then - rtl_log_enable_tags "${_tags}"; - else - _rc=1; _status="invalid log tag or tag pattern \`${_tag}'"; break; - fi; ;; - esac; - done; - fi; - return "${_rc}"; -}; - -buildp_init_prereqs() { - if ! rtl_check_prereqs ${DEFAULT_PREREQS}; then - printf "%s\n" "${_status}" >&2; exit 1; - elif ! awk -V 2>/dev/null | grep -q "^GNU Awk "; then - printf "Error: awk(1) in \$PATH must be GNU Awk." >&2; exit 1; - elif ! (FNAME="$(mktemp)" && { trap "rm -f \"\${FNAME}\"" EXIT; \ - sed -i'' -e '' "${FNAME}" >/dev/null 2>&1; }); then - printf "Error: sed(1) in \${PATH} does not support the \`-i' option.\n" >&2; exit 1; - fi; -}; - -build_init() { - local _rc=0; _status=""; - if ! buildp_init_env \ - || ! buildp_init_getopts "${@}" \ - || ! buildp_init_logging \ - || ! ex_pkg_load_vars \ - || ! buildp_init_prereqs \ - || ! buildp_init_args \ - || ! buildp_init_files; then - _rc=1; _status="${_status}"; - fi; return "${_rc}"; -}; - -# vim:filetype=sh foldmethod=marker diff --git a/subr/ex_pkg.subr b/subr/ex_pkg.subr deleted file mode 100644 index ac03670c..00000000 --- a/subr/ex_pkg.subr +++ /dev/null @@ -1,287 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -# -# ex_pkg_check_depends() - check single named package for unsatisfied dependencies -# @_checkfl: enable (1) or inhibit (0) dependency expansion -# @_pkg_disabled: list of disabled packages -# @_pkg_finished: list of finished packages -# @_pkg_name: single package name -# @_pkg_names: list of package names -# -# Return: zero (0) given no outstanding dependencies, non-zero (>0) otherwise -# -ex_pkg_check_depends() { - local _checkfl="${1}" _pkg_disabled="${2}" _pkg_finished="${3}" _pkg_name="${4}" _pkg_names="${5}"\ - _dependfl=0 _pkg_depends="" _pkg_name_depend=""; - if [ "${_checkfl:-0}" -eq 1 ]\ - && _pkg_depends="$(rtl_uniq $(rtl_lunfold_depends 'PKG_${_name}_DEPENDS' $(rtl_get_var_unsafe -u "PKG_"${_pkg_name}"_DEPENDS")))"; then - for _pkg_name_depend in $(rtl_uniq ${_pkg_depends}); do - if ! rtl_lmatch "${_pkg_disabled}" "${_pkg_name_depend}"\ - && ! rtl_lmatch "${_pkg_finished}" "${_pkg_name_depend}"\ - && ! ex_pkg_state_test "${_pkg_name_depend}" finish; then - if ! rtl_lmatch "${_pkg_names}" "${_pkg_name_depend}"; then - rtl_log_msg "fatalexit" "${MSG_build_unknown_dep}" "${_pkg_name_depend}" "${_pkg_name}"; - else - _dependfl=1; break; - fi; - fi; - done; - fi; - return "${_dependfl}"; -}; - -# -# ex_pkg_find_package() - find build group a single named package belongs to -# @_group_names: build group names -# @_pkg_name: single named package -# -# Return: zero (0) on success, non-zero (>0) if package not found, group name on stdout if package was found. -# -ex_pkg_find_package() { - local _group_names="${1}" _pkg_name="${2}" _foundfl=0 _group_name="" _pkg_names=""; - for _group_name in ${_group_names}; do - if _pkg_names="$(rtl_get_var_unsafe -u "${_group_name}_PACKAGES")"\ - && [ -n "${_pkg_names}" ]\ - && rtl_lmatch "${_pkg_names}" "${_pkg_name}"; then - _foundfl=1; break; - fi; - done; - case "${_foundfl:-0}" in - 0) return 1; ;; - 1) printf "%s" "${_group_name}"; return 0; ;; - esac; -}; - -# -# ex_pkg_get_packages() - get list of packages belonging to single named build group -# @_group_name: build group name -# -# Return: zero (0) on success, non-zero (>0) on failure, list of package names on stdout on success. -# -ex_pkg_get_packages() { - local _group_name="${1}" _pkg_names=""; - if _pkg_names="$(rtl_get_var_unsafe -u "${_group_name}_PACKAGES")"\ - && [ -n "${_pkg_names}" ]; then - printf "%s" "${_pkg_names}"; return 0; - else - return 1; - fi; -}; - -# -# ex_pkg_load_dump() - load package dump -# @_pkg_name: package name -# -# Return: zero (0) on success, non-zero (>0) on failure, package dump post-return on success. -# -ex_pkg_load_dump() { - local _pkg_name="${1}" _workdir="${2}" _rc=0; _status=""; - if [ ! -e "${_workdir}/${_pkg_name}.dump" ]; then - rtl_log_msg "warning" "${MSG_pkgtool_no_env_dump}" "${_pkg_name}" "${_workdir}"; - rtl_log_msg "info" "${MSG_pkgtool_rebuilding_pkg}" "${_pkg_name}"; - (export ARCH BUILD_KIND BUILD_DLCACHEDIR BUILD_WORKDIR \ - PREFIX PREFIX_CROSS PREFIX_MINGW32 PREFIX_MINIPIX \ - PREFIX_NATIVE PREFIX_ROOT PREFIX_RPM; - ./build.sh --dump-in _build -P -r "${_pkg_name}" -v); - if [ ! -e "${_workdir}/${_pkg_name}.dump" ]; then - _rc=1; _status="Error: failed to locate environment dump for package \`${_pkg_name}' in \`${_workdir}'."; - fi; - else - _rc=0; - fi; - if [ "${_rc:-0}" -eq 0 ]\ - && ! . "${_workdir}/${_pkg_name}.dump"; then - _rc=1; _status="Error: failed to source environment dump for package \`${_pkg_name}' from \`${_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; return "${_rc}"; -}; - -# -# ex_pkg_load_vars() - load build variables -# -# Return: zero (0) on success, non-zero (>0) on failure, build variables post-return on success. -# -ex_pkg_load_vars() { - local _rc=0 _fname=""; _status=""; - if ! rtl_lmatch "${ARCH}" "nt32 nt64"; then - _rc=1; _status="Error: invalid architecture \`${ARCH}'."; - elif ! rtl_lmatch "${BUILD_KIND}" "debug release"; then - _rc=1; _status="Error: unknown build type \`${BUILD_KIND}'."; - else case "${ARCH}" in - nt32) DEFAULT_TARGET="i686-nt32-midipix"; ;; - nt64) DEFAULT_TARGET="x86_64-nt64-midipix"; ;; - esac; - for _fname in \ - "${HOME}/midipix_build.vars" \ - "${HOME}/.midipix_build.vars" \ - ../midipix_build.vars \ - ./midipix.env; do - if [ -r "${_fname}" ]; then - rtl_fileop source "${_fname}"; - fi; - done; - if [ -z "${PREFIX}" ]; then - _rc=1; _status="Error: \${PREFIX} empty or unset."; - fi; - fi; return "${_rc}"; -}; - -# -# ex_pkg_load_groups() - load all available build groups -# -# Return: zero (0) on success, non-zero (>0) on failure, build groups loaded and ${EX_PKG_BUILD_GROUPS} and ${EX_PKG_BUILD_GROUPS_NOAUTO} set post-return. -# -ex_pkg_load_groups() { - local _build_groups="" _build_groups_noauto="" _fname="" _group="" _groups=""; - 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 - _build_groups="$(rtl_lconcat "${_build_groups}" "${_group}")"; - else - _build_groups_noauto="$(rtl_lconcat "${_build_groups_noauto}" "${_group}")"; - fi; - unset GROUP_AUTO; - else - _build_groups="$(rtl_lconcat "${_build_groups}" "${_group}")"; - fi; - fi; - done; - EX_PKG_BUILD_GROUPS="$(rtl_uniq "${_build_groups}")"; - EX_PKG_BUILD_GROUPS_NOAUTO="$(rtl_uniq "${_build_groups_noauto}")"; -}; - -# -# ex_pkg_unfold_depends() - unfold list of package names into dependency-expanded set of complete, disabled, finished, and outstanding package names -# @_checkfl: enable (1) or inhibit (0) dependency expansion -# @_forcefl: enable (1) or inhibit (0) forcibly rebuilding finished packages -# @_group_name: build group name -# @_pkg_names: list of package names -# @_restart: optional whitespace-separated list of package names to rebuild -# @_test_finished: only exclude disabled packages from ${EX_PKG_NAMES} (0,) split finished packages into ${EX_PKG_FINISHED} -# -# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_DISABLED}, ${EX_PKG_FINISHED}, and ${EX_PKG_NAMES} set post-return. -# -ex_pkg_unfold_depends() { - local _checkfl="${1}" _forcefl="${2}" _group_name="${3}" _pkg_names="${4}" _restart="${5}" _test_finished="${6}"\ - _pkg_name="" _restartfl=0; - if [ -n "${_restart}" ] && ! rtl_lmatch "${_restart}" "ALL LAST"; then - _pkg_names="$(rtl_lsearch "${_pkg_names}" "${_restart}")"; - fi; - if [ -n "${_restart}" ] && [ "${_checkfl:-0}" -eq 1 ]; then - _pkg_names="$(rtl_uniq $(rtl_lunfold_depends 'PKG_${_name}_DEPENDS' ${_pkg_names}))"; - fi; - for _pkg_name in ${_pkg_names}; do - if [ "${_restart}" = "ALL" ]\ - || rtl_lmatch "${_restart}" "${_pkg_name}"; then - _restartfl=1; - else - _restartfl=0; - fi; - if [ "x$(rtl_get_var_unsafe -u "PKG_${_pkg_name}_DISABLED")" = "x1" ]; then - EX_PKG_DISABLED="$(rtl_lconcat "${EX_PKG_DISABLED}" "${_pkg_name}")"; - _pkg_names="$(rtl_lfilter "${_pkg_names}" "${_pkg_name}")"; - elif [ "${_test_finished:-1}" -eq 1 ]\ - && ex_pkg_state_test "${_pkg_name}" finish\ - && [ "${_restartfl:-0}" -eq 0 ]\ - && [ "${_forcefl:-0}" -ne 1 ]\ - && [ "x$(rtl_get_var_unsafe -u "${_group_name}_FORCE")" != "x1" ]; then - EX_PKG_FINISHED="$(rtl_lconcat "${EX_PKG_FINISHED}" "${_pkg_name}")"; - _pkg_names="$(rtl_lfilter "${_pkg_names}" "${_pkg_name}")"; - fi; - done; - EX_PKG_DISABLED="$(rtl_uniq ${EX_PKG_DISABLED})"; - EX_PKG_FINISHED="$(rtl_uniq ${EX_PKG_FINISHED})"; - EX_PKG_NAMES="$(rtl_uniq ${_pkg_names})"; -}; - -# -# ex_pkg_unfold_rdepends() - unfold list of package names into reverse dependency-expanded set of complete, disabled, finished, and outstanding package names -# @_group_name: build group name -# @_pkg_names: list of package names -# @_restart: optional whitespace-separated list of package names to rebuild -# @_test_finished: only exclude disabled packages from ${EX_PKG_NAMES} (0,) split finished packages into ${EX_PKG_FINISHED} -# -# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_DISABLED}, ${EX_PKG_FINISHED}, and ${EX_PKG_NAMES} set post-return. -# -ex_pkg_unfold_rdepends() { - local _group_name="${1}" _pkg_names="${2}" _restart="${3}" _test_finished="${4}"\ - _pkg_depends="" _pkg_name="" _pkg_name_depend="" _pkg_rdepends=""; - for _pkg_name_depend in ${_restart}; do - for _pkg_name in ${_pkg_names}; do - if [ "${_pkg_name}" != "${_pkg_name_depend}" ]\ - && [ "x$(rtl_get_var_unsafe -u "PKG_${_pkg_name}_DISABLED")" != "x1" ]\ - && _pkg_depends="$(rtl_lunfold_depends 'PKG_${_name}_DEPENDS' $(rtl_get_var_unsafe -u "PKG_"${_pkg_name}"_DEPENDS"))"\ - && [ -n "${_pkg_depends}" ]\ - && rtl_lmatch "${_pkg_depends}" "${_pkg_name_depend}"; then - _pkg_rdepends="$(rtl_lconcat "${_pkg_rdepends}" "${_pkg_name}")"; - fi; - done; - done; - _pkg_names=""; - for _pkg_name in ${_pkg_rdepends}; do - if _pkg_depends="$(rtl_lunfold_depends 'PKG_${_name}_DEPENDS' $(rtl_get_var_unsafe -u "PKG_"${_pkg_name}"_DEPENDS"))"\ - && [ -n "${_pkg_depends}" ]; then - for _pkg_name_depend in ${_pkg_depends}; do - if [ "x$(rtl_get_var_unsafe -u "PKG_${_pkg_name_depend}_DISABLED")" = "x1" ]; then - EX_PKG_DISABLED="$(rtl_lconcat "${EX_PKG_DISABLED}" "${_pkg_name_depend}")"; - elif [ "${_test_finished:-1}" -eq 1 ]\ - && ex_pkg_state_test "${_pkg_name_depend}" finish\ - && [ "x$(rtl_get_var_unsafe -u "${_group_name}_FORCE")" != "x1" ]\ - && ! rtl_lmatch "${_pkg_rdepends}" "${_pkg_name_depend}"; then - EX_PKG_FINISHED="$(rtl_lconcat "${EX_PKG_FINISHED}" "${_pkg_name_depend}")"; - elif [ "${_test_finished:-1}" -eq 0 ]\ - || ! ex_pkg_state_test "${_pkg_name_depend}" finish\ - || [ "x$(rtl_get_var_unsafe -u "${_group_name}_FORCE")" = "x1" ]; then - _pkg_names="$(rtl_lconcat "${_pkg_names}" "${_pkg_name_depend}")"; - fi; - done; - fi; - _pkg_names="$(rtl_lconcat "${_pkg_names}" "${_pkg_name}")"; - done; - EX_PKG_DISABLED="$(rtl_uniq ${EX_PKG_DISABLED})"; - EX_PKG_FINISHED="$(rtl_uniq ${EX_PKG_FINISHED})"; - EX_PKG_NAMES="$(rtl_uniq ${_pkg_names})"; -}; - -# -# ex_pkg_unfold_rdepends_direct() - unfold list of package names into direct reverse dependency-expanded set of disabled and outstanding package names -# @_group_name: build group name -# @_pkg_names: list of package names -# @_restart: optional whitespace-separated list of package names to rebuild -# -# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_DISABLED} and ${EX_PKG_RDEPENDS_DIRECT} set post-return. -# -ex_pkg_unfold_rdepends_direct() { - local _group_name="${1}" _pkg_names="${2}" _restart="${3}"\ - _pkg_depends="" _pkg_disabled="" _pkg_name="" _pkg_name_depend="" _pkg_rdepends=""; - for _pkg_name_depend in ${_restart}; do - for _pkg_name in ${_pkg_names}; do - if [ "${_pkg_name}" != "${_pkg_name_depend}" ]\ - && _pkg_depends="$(rtl_get_var_unsafe -u "PKG_${_pkg_name}_DEPENDS")"\ - && [ -n "${_pkg_depends}" ]\ - && rtl_lmatch "${_pkg_depends}" "${_pkg_name_depend}"; then - if [ "x$(rtl_get_var_unsafe -u "PKG_${_pkg_name}_DISABLED")" != "x1" ]; then - _pkg_rdepends="$(rtl_lconcat "${_pkg_rdepends}" "${_pkg_name}")"; - else - _pkg_disabled="$(rtl_lconcat "${_pkg_disabled}" "${_pkg_name}")"; - fi; - fi; - done; - done; - EX_PKG_DISABLED="$(rtl_uniq ${_pkg_disabled})"; - EX_PKG_RDEPENDS_DIRECT="$(rtl_uniq ${_pkg_rdepends})"; -}; - -# vim:filetype=sh textwidth=0 diff --git a/subr/ex_pkg_dispatch.subr b/subr/ex_pkg_dispatch.subr deleted file mode 100644 index 139cf94e..00000000 --- a/subr/ex_pkg_dispatch.subr +++ /dev/null @@ -1,255 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -# -# exp_pkg_dispatch_complete() - XXX -# @_dispatch_fn: top-level dispatch function name -# @_group_names: build group name(s) -# @_pkg_disabled: list of disabled packages -# @_pkg_finished: list of finished packages -# -# Return: zero (0) on success, non-zero (>0) on failure. -# -exp_pkg_dispatch_complete() { - local _dispatch_fn="${1}" _group_name="${2}" _pkg_disabled="${3}" _pkg_finished="${4}" _pkg_name=""; - for _pkg_name in ${_pkg_disabled}; do - "${_dispatch_fn}" disabled_pkg "${_group_name}" "${_pkg_name}"; - done; - for _pkg_name in ${_pkg_finished}; do - "${_dispatch_fn}" skipped_pkg "${_group_name}" "${_pkg_name}"; - done; -}; - -# -# exp_pkg_dispatch_expand_packages() - expand build group name to list of packages ordered and filtered according to dependency and restart constraints -# @_checkfl: enable (1) or inhibit (0) dependency expansion -# @_forcefl: enable (1) or inhibit (0) forcibly rebuilding finished packages -# @_group_name: build group name -# @_restart: optional whitespace-separated list of package names to rebuild -# @_reversefl: unfold reverse dependencies (1) or dependencies (0) -# -# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_DISABLED}, ${EX_PKG_FINISHED}, and ${EX_PKG_NAMES} set post-return. -# -exp_pkg_dispatch_expand_packages() { - local _checkfl="${1}" _forcefl="${2}" _group_name="${3}" _restart="${4}" _reversefl="${5}"\ - _pkg_names=""; EX_PKG_DISABLED=""; EX_PKG_FINISHED=""; EX_PKG_NAMES=""; - if _pkg_names="$(rtl_get_var_unsafe -u "${_group_name}_PACKAGES")"\ - && [ -n "${_pkg_names}" ]; then - if [ "${_reversefl:-0}" -eq 0 ]; then - ex_pkg_unfold_depends "${_checkfl}" "${_forcefl}" "${_group_name}" "${_pkg_names}" "${_restart}" 1; - else ex_pkg_unfold_rdepends "${_group_name}" "${_pkg_names}" "${_restart}" 1; - fi; - fi; - return 0; -}; - -# -# exp_pkg_dispatch_group() - dispatch a single build group -# @_build_steps_default: list of default build steps -# @_build_vars_default: list of default build variables -# @_checkfl: enable (1) or inhibit (0) dependency expansion -# @_dispatch_fn: top-level dispatch function name -# @_group_name: build group name -# @_njobs_max: maximum count of simultaneous jobs -# @_pipe_path: pathname to build FIFO -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# @_workdir: pathname to build-specific temporary directory -# -# Return: zero (0) on success, non-zero (>0) on failure, ${EXP_PKG_DISPATCH_COUNT_CUR} may be mutated post-return. -# -exp_pkg_dispatch_group() { - local _build_steps_default="${1}" _build_vars_default="${2}" _checkfl="${3}"\ - _dispatch_fn="${4}" _group_name="${5}" _njobs_max="${6}" _pipe_path="${7}"\ - _restart_at="${8}" _workdir="${9}" _perc_group=0 _perc_pkg=0 _pipe_msg=""\ - _pkg_name="" _rc=0; - rtl_fileop mkfifo "${_pipe_path}"; - while true; do - while [ "${EXP_PKG_DISPATCH_NJOBS:-0}" -gt 0 ] && read _pipe_msg; do - case "${_pipe_msg%% *}" in - done) _pkg_name="${_pipe_msg#done * }"; : $((EXP_PKG_DISPATCH_COUNT_CUR+=1)); : $((EXP_PKG_DISPATCH_NJOBS-=1)); - EX_PKG_FINISHED="$(rtl_lconcat "${EX_PKG_FINISHED}" "${_pkg_name}")"; - _perc_group="$(rtl_percentage "${EXP_PKG_DISPATCH_GROUP_CUR}" "${EXP_PKG_DISPATCH_GROUP_MAX}")"; - _perc_pkg="$(rtl_percentage "${EXP_PKG_DISPATCH_COUNT_CUR}" "${EXP_PKG_DISPATCH_COUNT_MAX}")"; - "${_dispatch_fn}" finish_pkg ${_pipe_msg#done } "${EXP_PKG_DISPATCH_COUNT_MAX}" "${_perc_group}" "${_perc_pkg}"; - EX_PKG_NAMES="$(rtl_lfilter "${EX_PKG_NAMES}" "${_pkg_name}")"; - EX_PKG_DISPATCH_WAIT="$(rtl_lfilter "${EX_PKG_DISPATCH_WAIT}" "${_pkg_name}")"; - if [ -n "${EX_PKG_NAMES}" ] && [ "${_rc}" -eq 0 ]; then - if [ "${EXP_PKG_DISPATCH_NJOBS}" -ne "${_njobs_max}" ]; then - exp_pkg_dispatch_packages "${_build_steps_default}" \ - "${_build_vars_default}" "${_checkfl}" \ - "${_dispatch_fn}" "${_group_name}" \ - "${_njobs_max}" "${_pipe_path}" \ - "${EX_PKG_DISABLED}" "${EX_PKG_FINISHED}" \ - "${_restart_at}" "${_workdir}"; - fi; - elif [ "${EXP_PKG_DISPATCH_NJOBS:-0}" -eq 0 ]; then - break; - fi; ;; - fail) : $((EXP_PKG_DISPATCH_NJOBS-=1)); _rc=1; - "${_dispatch_fn}" fail_pkg ${_pipe_msg#fail } "${EXP_PKG_DISPATCH_COUNT_MAX}"; ;; - msg_pkg) - "${_dispatch_fn}" msg_pkg ${_pipe_msg#msg_pkg }; ;; - step) "${_dispatch_fn}" step_pkg ${_pipe_msg#step }; ;; - esac; done <>"${_pipe_path}"; - if [ -n "${EX_PKG_NAMES}" ] && [ "${_rc}" -eq 0 ]; then - if [ "${EXP_PKG_DISPATCH_NJOBS}" -ne "${_njobs_max}" ]; then - exp_pkg_dispatch_packages "${_build_steps_default}" \ - "${_build_vars_default}" "${_checkfl}" \ - "${_dispatch_fn}" "${_group_name}" \ - "${_njobs_max}" "${_pipe_path}" \ - "${EX_PKG_DISABLED}" "${EX_PKG_FINISHED}" \ - "${_restart_at}" "${_workdir}"; - fi; - elif [ "${EXP_PKG_DISPATCH_NJOBS:-0}" -eq 0 ]; then - break; - fi; - done; - rtl_fileop rm "${_pipe_path}"; - return "${_rc}"; -}; - -# -# exp_pkg_dispatch_package() - dispatch single named packages -# @_build_steps_default: list of default build steps -# @_build_vars_default: list of default build variables -# @_dispatch_fn: top-level dispatch function name -# @_group_name: build group name -# @_pkg_name: single package name -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# @_workdir: pathname to build-specific temporary directory -# -# Return: zero (0) on success, non-zero (>0) on failure, ${EXP_PKG_DISPATCH_NJOBS}, ${EXP_PKG_DISPATCH_COUNT}, ${EX_PKG_NAMES}, and ${EX_PKG_DISPATCH_WAIT} may be mutated post-return. -# -exp_pkg_dispatch_package() { - local _build_steps_default="${1}" _build_vars_default="${2}" _dispatch_fn="${3}"\ - _group_name="${4}" _pkg_name="${5}" _restart_at="${6}" _workdir="${7}"\ - _perc_group=0 _perc_pkg=0; - _perc_group="$(rtl_percentage "${EXP_PKG_DISPATCH_GROUP_CUR}" "${EXP_PKG_DISPATCH_GROUP_MAX}")"; - _perc_pkg="$(rtl_percentage "${EXP_PKG_DISPATCH_COUNT_CUR}" "${EXP_PKG_DISPATCH_COUNT_MAX}")"; - if "${_dispatch_fn}" start_pkg "${_group_name}" "${_pkg_name}" "$((${EXP_PKG_DISPATCH_COUNT}+1))" "${EXP_PKG_DISPATCH_COUNT_MAX}" "${_perc_group}" "${_perc_pkg}"; then - : $((EXP_PKG_DISPATCH_NJOBS+=1)); : $((EXP_PKG_DISPATCH_COUNT+=1)); EX_PKG_DISPATCH_WAIT="$(rtl_lconcat "${EX_PKG_DISPATCH_WAIT}" "${_pkg_name}")"; - (trap "if [ \${?} -eq 0 ]; then \ - printf \"done %s %s %d\n\" \"${_group_name}\" \"${_pkg_name}\" \"${EXP_PKG_DISPATCH_COUNT}\" >&3; \ - else \ - printf \"fail %s %s %d\n\" \"${_group_name}\" \"${_pkg_name}\" \"${EXP_PKG_DISPATCH_COUNT}\" >&3; \ - pkill -U "${$}"; \ - fi;" EXIT HUP INT TERM USR1 USR2; - set +o errexit -o noglob -o nounset; BUILD_IS_PARENT=0; rtl_log_set_fname ""; rtl_log_set_no_attr 1; - if ex_pkg_env "${_build_steps_default}" "${_build_vars_default}" \ - "${_group_name}" 0 "${_pkg_name}" "${_restart_at}" "${_workdir}"; then - ex_pkg_exec "${_dispatch_fn}" "${_group_name}" "${_pkg_name}" "${_restart_at}"; - else - return 1; - fi;) 1>"${_workdir}/${_pkg_name}_stderrout.log" 2>&1 3>"${_pipe_path}" & - else - return 1; - fi; -}; - -# -# exp_pkg_dispatch_packages() - dispatch set of packages -# @_build_steps_default: list of default build steps -# @_build_vars_default: list of default build variables -# @_checkfl: enable (1) or inhibit (0) dependency expansion -# @_dispatch_fn: top-level dispatch function name -# @_group_name: build group name -# @_njobs_max: maximum count of simultaneous jobs -# @_pipe_path: pathname to parent-child process FIFO -# @_pkg_disabled: list of disabled packages -# @_pkg_finished: list of finished packages -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# @_workdir: pathname to build-specific temporary directory -# -# Return: zero (0) on success, non-zero (>0) on failure, ${EXP_PKG_DISPATCH_NJOBS}, ${EXP_PKG_DISPATCH_COUNT}, ${EX_PKG_NAMES}, and ${EX_PKG_DISPATCH_WAIT} may be mutated post-return. -# -exp_pkg_dispatch_packages() { - local _build_steps_default="${1}" _build_vars_default="${2}" _checkfl="${3}"\ - _dispatch_fn="${4}" _group_name="${5}" _njobs_max="${6}" _pipe_path="${7}"\ - _pkg_disabled="${8}" _pkg_finished="${9}" _restart_at="${10}" _workdir="${11}"\ - _foundfl=0 _njob=0 _pkg_depends="" _pkg_name=""; - while [ "${EXP_PKG_DISPATCH_NJOBS:-0}" -lt "${_njobs_max}" ]; do - _foundfl=0; - for _pkg_name in ${EX_PKG_NAMES}; do - if ! rtl_lmatch "${_pkg_disabled}" "${_pkg_name}"\ - && ! rtl_lmatch "${_pkg_finished}" "${_pkg_name}"\ - && ! rtl_lmatch "${EX_PKG_DISPATCH_WAIT}" "${_pkg_name}"\ - && ex_pkg_check_depends "${_checkfl}" "${_pkg_disabled}" "${_pkg_finished}" \ - "${_pkg_name}" "${EX_PKG_NAMES}"; then - exp_pkg_dispatch_package "${_build_steps_default}" \ - "${_build_vars_default}" "${_dispatch_fn}" \ - "${_group_name}" "${_pkg_name}" "${_restart_at}" \ - "${_workdir}"; _foundfl=1; break; - fi; - done; - if [ "${_foundfl:-0}" -eq 0 ]; then - break; - fi; - done; -}; - -# -# ex_pkg_dispatch() - dispatch a set of build group -# @_build_steps_default: list of default build steps -# @_build_vars_default: list of default build variables -# @_dispatch_fn: top-level dispatch function name -# @_group_names: build group name(s) -# @_groups_inhibit_deps: inhibit group-group dependency expansion -# @_njobs_max: maximum count of simultaneous jobs -# @_pipe_path: pathname to build FIFO -# @_restart: optional whitespace-separated list of package names to rebuild -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# @_restart_recursive: optional flag specifiying either no dependency expansion (0,) dependency expansion (1,) dependency expansion and forcibly rebuild (2,) forcibly rebuild reverse dependencies (3.) -# @_workdir: pathname to build-specific temporary directory -# -# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_DISPATCH_WAIT} mutated post-return. -# -ex_pkg_dispatch() { - local _build_steps_default="${1}" _build_vars_default="${2}" _dispatch_fn="${3}" \ - _group_names="${4}" _groups_inhibit_deps="${5}" _njobs_max="${6}" _pipe_path="${7}" \ - _restart="${8}" _restart_at="${9}" _restart_recursive="${10}" _workdir="${11}" \ - _checkfl=1 _forcefl=0 _perc_group=0 _pkg_name="" _pkg_names="" _rc=0 _reversefl=0 \ - EX_PKG_DISABLED EX_PKG_FINISHED EX_PKG_NAMES EXP_PKG_DISPATCH_COUNT \ - EXP_PKG_DISPATCH_COUNT_CUR EXP_PKG_DISPATCH_COUNT_MAX EXP_PKG_DISPATCH_GROUP_CUR \ - EXP_PKG_DISPATCH_GROUP_MAX EXP_PKG_DISPATCH_NJOBS; EX_PKG_DISPATCH_WAIT=""; - case "${_groups_inhibit_deps:-0}" in - 0) _group_names="$(rtl_uniq $(rtl_lunfold_depends '${_name}_GROUP_DEPENDS' ${_group_names}))"; - esac; - if [ -n "${_restart}" ]; then - case "${_restart_recursive:-0}" in - 0) _checkfl=0; _forcefl=0; _reversefl=0; ;; - 1) _checkfl=1; _forcefl=0; _reversefl=0; ;; - 2) _checkfl=1; _forcefl=1; _reversefl=0; ;; - 3) _checkfl=1; _forcefl=1; _reversefl=1; ;; - esac; - fi; - EXP_PKG_DISPATCH_GROUP_CUR=0; EXP_PKG_DISPATCH_GROUP_MAX="$(rtl_llength "${_group_names}")"; - for _group_name in ${_group_names}; do - EX_PKG_DISABLED=""; EX_PKG_DISPATCH_WAIT=""; EX_PKG_FINISHED=""; EX_PKG_NAMES=""; - EXP_PKG_DISPATCH_COUNT=0; EXP_PKG_DISPATCH_COUNT_CUR=0; EXP_PKG_DISPATCH_COUNT_MAX=0; EXP_PKG_DISPATCH_NJOBS=0; - _perc_group="$(rtl_percentage "${EXP_PKG_DISPATCH_GROUP_CUR}" "${EXP_PKG_DISPATCH_GROUP_MAX}")"; - if "${_dispatch_fn}" start_group "${_group_name}" "" "${EXP_PKG_DISPATCH_GROUP_CUR}" "${EXP_PKG_DISPATCH_GROUP_MAX}" "${_perc_group}"; then - if rtl_fileop mkdir "${_workdir}"\ - && rtl_log_msg "verbose" "${MSG_build_resolving_deps}" "${_group_name}"\ - && exp_pkg_dispatch_expand_packages "${_checkfl}" "${_forcefl}" "${_group_name}" "${_restart}" "${_reversefl}"\ - && exp_pkg_dispatch_complete "${_dispatch_fn}" "${_group_name}" "${EX_PKG_DISABLED}" "${EX_PKG_FINISHED}"\ - && rtl_log_msg "verbose" "${MSG_build_resolved_deps}" "${_group_name}"\ - && EXP_PKG_DISPATCH_COUNT_MAX="$(rtl_llength "${EX_PKG_NAMES}")"\ - && [ "${EXP_PKG_DISPATCH_COUNT_MAX}" -gt 0 ]; then - _pkg_names="$(rtl_lconcat "${_pkg_names}" "${EX_PKG_NAMES}")"; - exp_pkg_dispatch_group "${_build_steps_default}" \ - "${_build_vars_default}" "${_checkfl}" "${_dispatch_fn}" \ - "${_group_name}" "${_njobs_max}" "${_pipe_path}" \ - "${_restart_at}" "${_workdir}"; _rc="${?}"; - fi; - : $((EXP_PKG_DISPATCH_GROUP_CUR+=1)); - _perc_group="$(rtl_percentage "${EXP_PKG_DISPATCH_GROUP_CUR}" "${EXP_PKG_DISPATCH_GROUP_MAX}")"; - "${_dispatch_fn}" finish_group "${_group_name}" "" "${EXP_PKG_DISPATCH_GROUP_CUR}" "${EXP_PKG_DISPATCH_GROUP_MAX}" "${_perc_group}"; - if [ "${_rc}" -ne 0 ]; then - break; - fi; - fi; - done; return "${_rc}"; -}; - -# vim:filetype=sh textwidth=0 diff --git a/subr/ex_pkg_env.subr b/subr/ex_pkg_env.subr deleted file mode 100644 index c13cfdfc..00000000 --- a/subr/ex_pkg_env.subr +++ /dev/null @@ -1,157 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -# -# exp_pkg_env_defaults() - set package variable defaults for single named package -# @_build_steps_default: list of default build steps -# @_pkg_name: single package name -# @_workdir: pathname to build-specific temporary directory -# -# Return: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_env_defaults() { - local _build_steps_default="${1}" _pkg_name="${2}" _workdir="${3}"; - : ${PKG_NAME:="${_pkg_name}"}; - : ${MIDIPIX_BUILD_PWD:="$(pwd)"}; - : ${PKG_BASE_DIR:="${_workdir}/${_pkg_name}-${PKG_BUILD_TYPE}-${PKG_TARGET}"}; - if [ -n "${PKG_BUILD_STEPS_DISABLE:-}" ]; then - : ${PKG_BUILD_STEPS:="$(rtl_lfilter "${_build_steps_default}" "${PKG_BUILD_STEPS_DISABLE:-}")"}; - else - : ${PKG_BUILD_STEPS:="${_build_steps_default}"}; - fi; - if [ -n "${PKG_URL:-}" ]; then - : ${PKG_FNAME:="${PKG_URL##*/}"}; - fi; - if [ -z "${PKG_SUBDIR:-}" ]; then - if [ -n "${PKG_URLS_GIT:-}" ]\ - && [ -n "${PKG_FNAME:-}" ]; then - rtl_log_msg "fatalexit" "${MSG_pkg_fail_missing_vars}"; - elif [ -n "${PKG_URLS_GIT:-}" ]; then - PKG_SUBDIR="${PKG_URLS_GIT%%=*}"; - else case "${PKG_FNAME:-}" in - *.t*) PKG_SUBDIR="${PKG_FNAME%%.t*}"; ;; - *) PKG_SUBDIR="${_pkg_name}"; ;; - esac; fi; - fi; - if [ -z "${PKG_BUILD_DIR:-}" ]; then - case "${PKG_IN_TREE:-0}" in - 0) PKG_BUILD_DIR="obj"; ;; - 1) PKG_BUILD_DIR="${PKG_SUBDIR}"; ;; - esac; - fi; - PKG_BUILD_DIR="${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; - PKG_CONFIGURE="${PKG_BASE_DIR}/${PKG_CONFIGURE:-${PKG_SUBDIR}/configure}"; - PKG_DESTDIR="${PKG_BASE_DIR}/${PKG_DESTDIR:-destdir}"; - PKG_DESTDIR_HOST="${PKG_BASE_DIR}/${PKG_DESTDIR_HOST:-destdir_host}"; -}; - -# -# exp_pkg_env_set() - set package variables for single named package -# @_build_vars_default: list of default build variables -# @_group_name: build group name -# @_nounset: don't clear package variable namespace -# @_pkg_name: single package name -# -# Sets package variables from either defaults, defaults specific to build type, -# build group, package to inherit from if any, or package for a single named -# package, exports variables optionally named in ${PKG_ENV_VARS_EXTRA}, and -# clears the package variable namespace. -# -# Return: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_env_set() { - local _build_vars_default="${1}" _group_name="${2}" _nounset="${3}" \ - _pkg_name="${4}" _cmd_name="" _var_prefixes="" _vars_set="" \ - _vname="" IFS IFS0; - - rtl_set_vars _vars_set BUILD_TYPE "DEFAULT ${_group_name} PKG_${_pkg_name}"; - rtl_set_vars _vars_set INHERIT_FROM "PKG_${_pkg_name}"; - _var_prefixes="$(rtl_toupper "DEFAULT DEFAULT_${PKG_BUILD_TYPE} ${_group_name}")"; - for _vname in $(rtl_lfilter "${_build_vars_default}" BUILD_TYPE); do - if [ -n "${PKG_INHERIT_FROM:-}" ]; then - rtl_set_vars _vars_set "${_vname}" \ - "$(rtl_lconcat "${_var_prefixes}" \ - "$(rtl_toupper "PKG_${PKG_INHERIT_FROM} PKG_${PKG_INHERIT_FROM}_${BUILD_KIND} PKG_${_pkg_name} PKG_${_pkg_name}_${BUILD_KIND}")")"; - else - rtl_set_vars _vars_set "${_vname}" \ - "$(rtl_lconcat "${_var_prefixes}" \ - "$(rtl_toupper "PKG_${_pkg_name} PKG_${_pkg_name}_${BUILD_KIND}")")"; - fi; - done; - IFS0="${IFS:- }"; IFS=":"; for _vname in ${PKG_ENV_VARS_EXTRA:-}; do - export "${_vname}"; - done; IFS="${IFS0}"; - if [ "${_nounset:-0}" -eq 0 ]; then - rtl_unset_vars $(rtl_lfilter \ - "$(set | sed -ne '/^PKG_[^=]*=/s/=.*$//p' | paste -s -d " ")" \ - "${_vars_set}"); - fi; - - for _vname in AR CC CXX PKG_CONFIG RANLIB; do - if eval [ '"${PKG_'"${_vname}"':+1}"' = 1 ]\ - && eval [ '"${PKG_'"${_vname}"'#/}"' = '"${_cmd_name:=${PKG_'"${_vname}"'}}"' ]; then - eval PKG_${_vname}='$(which "${_cmd_name}")'; - fi; _cmd_name=""; - done; -}; - -# -# ex_pkg_env() - set package variables for single named package -# @_build_steps_default: list of default build steps -# @_build_vars_default: list of default build variables -# @_group_name: build group name -# @_nounset: don't clear package variable namespace -# @_pkg_name: single package name -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# @_workdir: pathname to build-specific temporary directory -# -# Return: zero (0) on success, non-zero (>0) on failure -# -ex_pkg_env() { - local _build_steps_default="${1}" _build_vars_default="${2}" _group_name="${3}" \ - _nounset="${4}" _pkg_name="${5}" _restart_at="${6}" _workdir="${7}" \ - _inherit_from="" _vars_file="" _vname=""; - - if _inherit_from="$(rtl_get_var_unsafe -u "PKG_${_pkg_name}_INHERIT_FROM")"\ - && [ "${#_inherit_from}" -gt 0 ]; then - _vars_file="$(rtl_get_var_unsafe -u "PKG_${_inherit_from}_VARS_FILE")"; - else - _vars_file="$(rtl_get_var_unsafe -u "PKG_${_pkg_name}_VARS_FILE")"; - fi; - if [ "${#_vars_file}" -eq 0 ]; then - _vars_file="vars/${_pkg_name}.vars"; - fi; - - rtl_fileop source_opt "${_vars_file}" "${_group_name}/${_pkg_name}.${_group_name}"; - if ! exp_pkg_env_set "${_build_vars_default}" "${_group_name}" "${_nounset}" "${_pkg_name}"\ - || ! exp_pkg_env_defaults "${_build_steps_default}" "${_pkg_name}" "${_workdir}"; then - return 1; - fi; -}; - -# -# ex_pkg_state_set() - update build step status for single named package -# @_pkg_name: single package name -# @_build_step: build step set status of -# [@${@}]: optional list of build steps to invalidate status of -# -# Return: zero (0) on success, non-zero (>0) on failure -# -ex_pkg_state_set() { - rtl_state_set "${_workdir}" "${@}"; -}; - -# -# ex_pkg_state_test() - test build step status of single named package -# @_pkg_name: single package name -# @_build_step: build step to test status of -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# -# Return: zero (0) on success, non-zero (>0) on failure -# -ex_pkg_state_test() { - rtl_state_test "${_workdir}" "${@}"; -}; - -# vim:filetype=sh diff --git a/subr/ex_pkg_exec.subr b/subr/ex_pkg_exec.subr deleted file mode 100644 index cd82756c..00000000 --- a/subr/ex_pkg_exec.subr +++ /dev/null @@ -1,136 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -exp_pkg_exec_filter_vars_fn() { - local _vname="${1}"; - case "${_vname}" in - DEFAULT|PKG_*) - return 0; ;; - BUILD_DLCACHEDIR|BUILD_WORKDIR|MIDIPIX_BUILD_PWD) - return 0; ;; - CONFIG_CACHE_GNULIB) - return 0; ;; - PREFIX|PREFIX_CROSS|PREFIX_MINGW32|PREFIX_MINIPIX|PREFIX_NATIVE|PREFIX_RPM) - return 0; ;; - *) return 1; ;; - esac; -}; - -# -# exp_pkg_exec_pre() - XXX -# @_group_name: build group name -# @_pkg_name: single package name -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# -# Return: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_exec_pre() { - local _group_name="${1}" _pkg_name="${2}" _restart_at="${3}"; - if [ -z "${PKG_URL:-}" ]\ - && [ -z "${PKG_URLS_GIT:-}" ]\ - && [ -z "${PKG_VERSION:-}" ]\ - && [ -z "${PKG_INSTALL_FILES:-}" ]\ - && [ -z "${PKG_INSTALL_FILES_V2:-}" ]\ - && ! rtl_test_cmd "pkg_${_pkg_name}_all"; then - "${_dispatch_fn}" missing_pkg "${_group_name}" "${_pkg_name}"; - return 1; - elif ! ex_pkg_state_test "${_pkg_name}" "start" "${_restart_at}"; then - if [ "${PKG_NO_CLEAN_BASE_DIR:-0}" -eq 0 ]\ - && ! rtl_fileop rm "${PKG_BASE_DIR}" "${PKG_BUILD_DIR}" "${PKG_DESTDIR}" "${PKG_DESTDIR_HOST}"\ - || ! rtl_fileop mkdir "${PKG_BASE_DIR}"; then - return 1; - fi; - if ! rtl_fileop mkdir "${PKG_BUILD_DIR}" "${PKG_DESTDIR}"\ - || ! ex_pkg_state_set "${_pkg_name}" "start"; then - return 1; - fi; - elif ! rtl_exists_any "${PKG_BASE_DIR}" "${PKG_BUILD_DIR}" "${PKG_DESTDIR}" "${PKG_DESTDIR_HOST}"\ - && ! rtl_fileop mkdir "${PKG_BASE_DIR}" "${PKG_BUILD_DIR}" "${PKG_DESTDIR}" "${PKG_DESTDIR_HOST}"; then - return 1 - fi; - rtl_fileop cd "${PKG_BUILD_DIR}"; -}; - -# -# exp_pkg_exec_step() - XXX -# @_group_name: build group name -# @_pkg_name: single package name -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# @_step: build step to execute -# -# Return: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_exec_step() { - local _group_name="${1}" _pkg_name="${2}" _restart_at="${3}" _step="${4}" \ - _fn_name="" _pkg_step_fn="" _rc=0; - if rtl_test_cmd "pkg_${_pkg_name}_${_step}"; then - _pkg_step_fn="pkg_${_pkg_name}_${_step}"; - else - _pkg_step_fn="pkg_${_step}"; - fi; - for _fn_name in \ - "pkg_${_pkg_name}_${_step}_pre" \ - "${_pkg_step_fn}" \ - "pkg_${_pkg_name}_${_step}_post"; do - if rtl_test_cmd "${_fn_name}"\ - && ! "${_fn_name}" "${_group_name}" "${_pkg_name}" "${_restart_at}"; then - _rc=1; break; - fi; - done; - return "${_rc}"; -}; - -# -# exp_pkg_exec() - XXX -# @_dispatch_fn: top-level dispatch function name -# @_group_name: build group name -# @_pkg_name: single package name -# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST -# -# Return: zero (0) on success, non-zero (>0) on failure -# -ex_pkg_exec() { - local _dispatch_fn="${1}" _group_name="${2}" _pkg_name="${3}" _restart_at="${4}" \ - _build_step_last="" _rc=0 _step=""; - - if ! exp_pkg_exec_pre "${_group_name}" "${_pkg_name}" "${_restart_at}"\ - || ! "${_dispatch_fn}" start_pkg_child "${_group_name}" "${_pkg_name}"; then - _rc=1; - elif rtl_test_cmd "pkg_${_pkg_name}_all"; then - "pkg_${_pkg_name}_all" "${_restart_at}"; _rc="${?}"; - else set -- ${PKG_BUILD_STEPS}; - while [ ${#} -gt 0 ]; do - _step="${1}"; shift; - if [ "${#_restart_at}" -gt 0 ]\ - && [ "${_restart_at}" != "ALL" ]\ - && [ "${_restart_at}" != "LAST" ]\ - && ! rtl_lmatch "${_restart_at}" "${_step}" ","; then - continue; - fi; - if [ "${_step}" = "${ARG_DUMP_IN}" ]; then - printf "" > "${BUILD_WORKDIR}/${_pkg_name}.dump"; - rtl_filter_vars exp_pkg_exec_filter_vars_fn >> "${BUILD_WORKDIR}/${_pkg_name}.dump"; - export >> "${BUILD_WORKDIR}/${_pkg_name}.dump"; exit 1; - elif [ "${_step}" = "finish" ]; then - ex_pkg_state_set "${_pkg_name}" finish; break; - elif [ "${PKG_FORCE:-0}" -eq 0 ]\ - && ex_pkg_state_test "${_pkg_name}" "${_step}" "${_restart_at}"; then - continue; - elif ! exp_pkg_exec_step "${_group_name}" "${_pkg_name}" "${_restart_at}" "${_step}"; then - _rc=1; break; - else printf "step %s %s %s\n" "${_group_name}" "${_pkg_name}" "${_step}" >&3; - ex_pkg_state_set "${_pkg_name}" "${_step}" "${@}"; - fi; - done; - fi; - if [ "${_rc:-0}" -ne 0 ]\ - && [ "${ARG_DUMP_ON_ABORT:-0}" -eq 1 ]; then - printf "" > "${BUILD_WORKDIR}/${_pkg_name}.dump"; - rtl_filter_vars exp_pkg_exec_filter_vars_fn >> "${BUILD_WORKDIR}/${_pkg_name}.dump"; - export >> "${BUILD_WORKDIR}/${_pkg_name}.dump"; - fi; - return "${_rc}"; -}; - -# vim:filetype=sh diff --git a/subr/ex_pkg_restart.subr b/subr/ex_pkg_restart.subr deleted file mode 100644 index 9e51df8b..00000000 --- a/subr/ex_pkg_restart.subr +++ /dev/null @@ -1,293 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -# -# exp_pkg_check_restart_at() - XXX -# @_rspec_at: in reference to restart build step list -# -# Calling convention: in ref. @_rspec_at -# Returns: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_check_restart_at() { - local _epcra_rspec_at="${1#\$}" _epcra_len="" _epcra_rc=0 _epcra_spec_at=""; _status="" - - if ! rtl_llift2 "${_epcra_rspec_at}" \$_epcra_spec_at "," " "\ - || ! rtl_lfilter3 \$_epcra_spec_at "${DEFAULT_BUILD_STEPS} ALL LAST"\ - || ! rtl_llength2 \$_epcra_spec_at \$_epcra_len; then - _epcra_rc=1; - elif [ "${_epcra_len}" -gt 0 ]; then - _status="unknown build step(s) \`${_epcra_spec_at}'"; _epcra_rc=1; - fi; return "${_epcra_rc}"; -}; - -# -# exp_pkg_expand_restart_at_spec() - XXX -# @_rset: in reference to restart virtual build step set -# @_rspec_at: inout reference to restart build step list -# -# Calling convention: in ref. @_rset, inout ref. @_rspec_at -# Returns: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_expand_restart_at_spec() { - local _eperas_rset="${1#\$}" _eperas_rspec_at="${2#\$}" _eperas_at="" \ - _eperas_rc=0 _eperas_spec_at="" _eperas_spec_at_=""; _status=""; - eval _eperas_spec_at='${'"${_eperas_rspec_at}"'}'; - - case "${_eperas_spec_at}" in - ALL|LAST|"") - ;; - - ^*) - _eperas_spec_at="${_eperas_spec_at#^}"; - if exp_pkg_expand_restart_at_virtual \ - "${_eperas_spec_at}" \$_eperas_spec_at \ - "${_eperas_rset}" \ - && exp_pkg_check_restart_at \$_eperas_spec_at; then - rtl_llift2 \$DEFAULT_BUILD_STEPS "${_eperas_rspec_at}" " " ","; - rtl_llift2 \$_eperas_spec_at \$_eperas_spec_at_ "," " "; - for _eperas_at in ${_eperas_spec_at_}; do - rtl_lfilter3 "${_eperas_rspec_at}" "${_eperas_at}" ","; - done; rtl_lfilter3 "${_eperas_rspec_at}" "finish" ","; - else - _eperas_rc=1; - fi; ;; - - \<=*|\<*|\>=*|\>*) - exp_pkg_expand_restart_at_spec_cmp \ - "${_eperas_rset}" "${_eperas_rspec_at}"; _eperas_rc="${?}"; ;; - - *) - if ! exp_pkg_expand_restart_at_virtual \ - "${_eperas_spec_at}" "${_eperas_rspec_at}" \ - "${_eperas_rset}"; then - _eperas_rc=1; - fi; ;; - esac; - - if [ "${_eperas_rc}" -eq 0 ]; then - if ! exp_pkg_check_restart_at "${_eperas_rspec_at}"; then - _epprs_rc=1; - elif eval [ '"${'"${_eperas_rspec_at}"':+1}"' != 1 ]; then - _status="zero-length build step list"; _epprs_rc=1; - fi; - fi; - return "${_eperas_rc}"; -}; - -# -# exp_pkg_expand_restart_at_spec_cmp() - XXX -# @_rset: in reference to restart virtual build step set -# @_rspec_at: inout reference to restart build step list -# -# Calling convention: in ref. @_rset, inout ref. @_rspec_at -# Returns: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_expand_restart_at_spec_cmp() { - local _eperasc_rset="${1#\$}" _eperasc_rspec_at="${2#\$}" _eperasc_at="" \ - _eperasc_eqfl="" _eperasc_foundfl="" _eperasc_ltfl="" _eperasc_rc=0 \ - _eperasc_spec_at="" _eperasc_spec_at0=""; - eval _eperasc_spec_at0='${'"${_eperasc_rspec_at}"'}'; - - [ "${_eperasc_spec_at0#<}" = "${_eperasc_spec_at0}" ]; _eperasc_ltfl="${?}"; - if [ "${_eperasc_spec_at0#[<>]=}" != "${_eperasc_spec_at0}" ]; then - _eperasc_spec_at0="${_eperasc_spec_at0#[<>]=}"; _eperasc_eqfl=1; - else - _eperasc_spec_at0="${_eperasc_spec_at0#[<>]}"; _eperasc_eqfl=0; - fi; _eperasc_spec_at=""; - - if exp_pkg_expand_restart_at_virtual \ - "${_eperasc_spec_at0%%,*}" \$_eperasc_spec_at0 \ - "${_eperasc_rset}" \ - && exp_pkg_check_restart_at \$_eperasc_spec_at0; then - if [ \( "${_eperasc_eqfl}" -eq 1 \) -a \( "${_eperasc_ltfl}" -eq 1 \) ]\ - || [ \( "${_eperasc_eqfl}" -eq 0 \) -a \( "${_eperasc_ltfl}" -eq 0 \) ]; then - _eperasc_spec_at0="${_eperasc_spec_at0##*,}"; - elif [ \( "${_eperasc_eqfl}" -eq 1 \) -a \( "${_eperasc_ltfl}" -eq 0 \) ]\ - || [ \( "${_eperasc_eqfl}" -eq 0 \) -a \( "${_eperasc_ltfl}" -eq 1 \) ]; then - _eperasc_spec_at0="${_eperasc_spec_at0%%,*}"; - fi; - - _eperasc_foundfl=0; for _eperasc_at in ${DEFAULT_BUILD_STEPS}; do - if [ "${_eperasc_ltfl}" -eq 1 ]; then - if [ "${_eperasc_at}" = "${_eperasc_spec_at0%%,*}" ]; then - if [ "${_eperasc_eqfl}" -eq 1 ]; then - _eperasc_spec_at="${_eperasc_spec_at:+${_eperasc_spec_at},}${_eperasc_at}"; - fi; break; - fi; - else - if [ "${_eperasc_at}" = "${_eperasc_spec_at0%%,*}" ]; then - _eperasc_foundfl=1; [ "${_eperasc_eqfl}" -eq 0 ] && continue; - fi; [ "${_eperasc_foundfl}" -eq 0 ] && continue; - fi; - _eperasc_spec_at="${_eperasc_spec_at:+${_eperasc_spec_at},}${_eperasc_at}"; - done; - else - _eperasc_rc=1; - fi; - - eval ${_eperasc_rspec_at}='${_eperasc_spec_at}'; - return "${_eperasc_rc}"; -}; - -# -# exp_pkg_expand_restart_at_virtual() - XXX -# @_spec_at: restart build step list -# @_rspec_at_new: out reference to new restart build step list -# @_rset: inout reference to restart virtual build step set -# -# Calling convention: inout ref. @_rspec_recursive -# Returns: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_expand_restart_at_virtual() { - local _epera_spec_at="${1}" _epera_rspec_at_new="${2#\$}" _epera_rset="${3#\$}" \ - _epera_at="" _epera_IFS0="${IFS:- }" _epera_rc=0 _epera_spec_at_new="" \ - IFS; _status=""; - - eval ${_epera_rspec_at_new}=; - IFS=","; set -- ${_epera_spec_at}; IFS="${_epera_IFS0}"; - while [ "${#}" -gt 0 ]; do - _epera_at="${1}"; shift; - if [ "${_epera_at#@}" != "${_epera_at}" ]; then - _epera_at="${_epera_at#@}"; - if [ "${_epera_at%[!0-9a-zA-Z_]*}" != "${_epera_at}" ]; then - _status="invalid virtual build step \`${_epera_at}'"; _epera_rc=1; - elif eval [ '"${'"${_epera_rset}${_epera_at}"':+1}"' = 1 ]; then - eval _epera_at='${'"${_epera_rset}${_epera_at}"'}'; - else - _status="unknown virtual build step \`${_epera_at}'"; _epera_rc=1; - fi; - fi; - eval ${_epera_rspec_at_new}='${'"${_epera_rspec_at_new}"':+${'"${_epera_rspec_at_new}"'},}${_epera_at}'; - done; - return "${_epera_rc}"; -}; - -# -# exp_pkg_expand_restart_recursive() - XXX -# @_rspec: inout reference to restart {specification,package name list} -# @_rrecursive: out reference to recursion flag -# -# Calling convention: inout ref. @_rspec, out ref. @_rrecursive -# Returns: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_expand_restart_recursive() { - local _eperr_rspec="${1#\$}" _eperr_rrecursive="${2#\$}" _eperr_spec=""; _status="" - eval _eperr_spec='${'"${_eperr_rspec}"'}'; - - case "${_eperr_spec}" in - \*\*\*[a-zA-Z]*) - eval ${_eperr_rspec}='${_eperr_spec#\*\*\*}' ${_eperr_rrecursive}=3; ;; - \*\*[a-zA-Z]*) eval ${_eperr_rspec}='${_eperr_spec#\*\*}' ${_eperr_rrecursive}=2; ;; - \*[a-zA-Z]*) eval ${_eperr_rspec}='${_eperr_spec#\*}' ${_eperr_rrecursive}=1; ;; - ALL) eval ${_eperr_rrecursive}=2; ;; - LAST) eval ${_eperr_rrecursive}=0; ;; - esac; - return 0; -}; - -# -# exp_pkg_expand_restart_spec() - XXX -# @_rspec: inout reference to restart {specification,package name list} -# @_rspec_at: out reference to restart build step list -# -# Calling convention: inout ref. @_rspec, out ref. @_rspec_at, out ref. @_rrecursive -# Returns: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_expand_restart_spec() { - local _epers_rspec="${1#\$}" _epers_rspec_at="${2#\$}" _epers_last_pkg="" \ - _epers_rc=0 _epers_spec="" _epers_spec_at="" _epers_spec_at0=""; - eval _epers_spec='${'"${_epers_rspec}"'}'; - - case "${_epers_spec}" in - "") eval ${_epers_rspec_at}=; ;; - ALL) eval ${_epers_rspec_at}=ALL; ;; - LAST|LAST:*) - case "${_epers_spec}" in - LAST) eval ${_epers_rspec_at}=LAST; ;; - LAST:*) eval ${_epers_rspec_at}='${_epers_spec#LAST:}'; ;; - esac; - if [ "${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME:+1}" = 1 ]\ - && [ -e "${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME}" ]; then - if read -r _epers_last_pkg <"${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME}"\ - && rtl_fileop rm "${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME}"; then - eval ${_epers_rspec}='${_epers_last_pkg}'; - else - _status="failed to read or clear status of last failed package \`${_epers_last_pkg}'"; _epers_rc=1; - fi; - else - _status="cannot rebuild last failed package"; _epers_rc=1; - fi; ;; - - *:*) eval ${_epers_rspec}='${_epers_spec%:*}' ${_epers_rspec_at}='${_epers_spec#*:}'; ;; - *) eval ${_epers_rspec_at}= ${_epers_rspec_at}=ALL; ;; - esac; - return "${_epers_rc}"; -}; - -# -# exp_pkg_init_restart_at_virtual() - XXX -# @_rset: out reference to restart virtual build step set -# -# Calling convention: out ref. @_rset -# Returns: zero (0) on success, non-zero (>0) on failure -# -exp_pkg_init_restart_at_virtual() { - local _eperav_rset="${1#\$}" _eperav_step="" _eperav_step_virtual="" _epera_steps=""; - - rtl_lfilter2 \$DEFAULT_BUILD_STEPS \$_epera_steps "finish"; - for _eperav_step in ${_epera_steps}; do - _eperav_step_virtual="${_eperav_step%%_*}"; - if eval [ '"${'"${_eperav_rset}${_eperav_step_virtual}"':+1}"' != 1 ]; then - eval ${_eperav_rset}='"${'"${_eperav_rset}"':+${'"${_eperav_rset}"'},}${_eperav_step_virtual}"'; - fi; - eval ${_eperav_rset}${_eperav_step_virtual}='"${'"${_eperav_rset}${_eperav_step_virtual}"':+${'"${_eperav_rset}${_eperav_step_virtual}"'},}${_eperav_step}"'; - done; return 0; -}; - -# -# ex_pkg_process_restart_spec() - XXX -# @_rspec: inout reference to restart {specification,package name list} -# @_rspec_at: out reference to restart build step list -# @_rrecursive: out reference to restart recursion flag -# -# Calling convention: inout ref. @_rspec, out ref. @_rspec_at -# Returns: zero (0) on success, non-zero (>0) on failure -# -ex_pkg_process_restart_spec() { - local _epprs_rspec="${1#\$}" _epprs_rspec_at="${2#\$}" _epprs_rrecursive="${3#\$}" \ - _epprs_at="" _epprs_rc=0 _epprs_spec_at_new="" _epprs_step="" _epprs_step1="" \ - _epprs_virtual_set=""; _status=""; - - if eval [ '"${'"${_epprs_rspec}"':+1}"' = 1 ]; then - if exp_pkg_init_restart_at_virtual \$_epprs_virtual_set \ - && exp_pkg_expand_restart_spec "${_epprs_rspec}" \$_epprs_spec_at_new \ - && exp_pkg_expand_restart_recursive "${_epprs_rspec}" "${_epprs_rrecursive}" \ - && exp_pkg_expand_restart_at_spec \$_epprs_virtual_set \$_epprs_spec_at_new; then - eval ${_epprs_rspec_at}=; - case "${_epprs_spec_at_new}" in - ALL|LAST) - eval ${_epprs_rspec_at}='${_epprs_spec_at_new}'; ;; - *) - for _epprs_at in ${DEFAULT_BUILD_STEPS}; do - if rtl_lmatch "${_epprs_at}" "${_epprs_spec_at_new}" ","; then - eval ${_epprs_rspec_at}='${'"${_epprs_rspec_at}"':+${'"${_epprs_rspec_at}"'},}${_epprs_at}'; - fi; - done; - if eval [ '"${'"${_epprs_rspec_at}"'##*,}"' != "finish" ]; then - rtl_lfilter2 "${_epprs_rspec_at}" \$_epprs_step "clean,finish" ","; _epprs_step="${_epprs_step##*,}"; - rtl_lfilter2 \$DEFAULT_BUILD_STEPS \$_epprs_step1 "clean finish"; _epprs_step1="${_epprs_step1##* }"; - if [ "${_epprs_step}" = "${_epprs_step1}" ]; then - eval ${_epprs_rspec_at}='${'"${_epprs_rspec_at}"':+${'"${_epprs_rspec_at}"'},}finish'; - fi; - fi; ;; - esac; rtl_llift3 "${_epprs_rspec}" "," " " || _epprs_rc=1; - else - _epprs_rc=1; - fi; - rtl_sunset \$_epprs_virtual_set; - fi; - return "${_epprs_rc}"; -}; - -# vim:filetype=sh diff --git a/subr/pkg_build.subr b/subr/pkg_build.subr deleted file mode 100644 index 1c6712f7..00000000 --- a/subr/pkg_build.subr +++ /dev/null @@ -1,54 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_build() { - local _libtool="" _makeflags_verbosity="${PKG_MAKEFLAGS_VERBOSITY:-none}" _no_autoconf="" _rc=0 _subdir=""; - case "${PKG_LIBTOOL:-}" in - "") _libtool=""; ;; - none) _libtool=""; ;; - *) _libtool="${PKG_LIBTOOL}"; ;; - esac; - if [ "${_makeflags_verbosity}" = "none" ]; then - _makeflags_verbosity=""; - fi; - if [ ! -x "${PKG_CONFIGURE:-}" ]; then - _no_autoconf=1; - fi; - for _subdir in ${PKG_MAKE_SUBDIRS:-:}; do - if [ "${_subdir}" = ":" ]; then - _subdir=""; - fi; - if [ "${#_libtool}" -gt 0 ]; then - export MAKE="make LIBTOOL=${_libtool}"; - fi; - # N.B. We only specify CC= here if the current package does not use GNU - # autoconf as it often abuses it by appending -std={gnu99,...} to it - # instead of amending CFLAGS. - rtl_run_cmd_unsplit "${PKG_MAKE}" \ - ${PKG_MAKEFLAGS_BUILD:-} \ - ${PKG_MAKEFLAGS_BUILD_EXTRA:-} \ - "AR=${PKG_AR}" "${_no_autoconf:+CC=${PKG_CC}}" "RANLIB=${PKG_RANLIB}" \ - "${PKG_CFLAGS_BUILD:+CFLAGS=${PKG_CFLAGS_BUILD}}" \ - "${PKG_CFLAGS_BUILD_EXTRA:+CFLAGS+=${PKG_CFLAGS_BUILD_EXTRA}}" \ - "${PKG_CPPFLAGS_BUILD:+CPPFLAGS=${PKG_CPPFLAGS_BUILD}}" \ - "${PKG_CPPFLAGS_BUILD_EXTRA:+CPPFLAGS+=${PKG_CPPFLAGS_BUILD_EXTRA}}" \ - "${PKG_CXXFLAGS_BUILD:+CXXFLAGS=${PKG_CXXFLAGS_BUILD}}" \ - "${PKG_CXXFLAGS_BUILD_EXTRA:+CXXFLAGS+=${PKG_CXXFLAGS_BUILD_EXTRA}}" \ - "${PKG_LDFLAGS_BUILD:+LDFLAGS=${PKG_LDFLAGS_BUILD}}" \ - "${PKG_LDFLAGS_BUILD_EXTRA:+LDFLAGS+=${PKG_LDFLAGS_BUILD_EXTRA}}" \ - "${PKG_PKG_CONFIG:+PKG_CONFIG=${PKG_PKG_CONFIG}}" \ - "${PKG_PKG_CONFIG_LIBDIR:+PKG_CONFIG_LIBDIR=${PKG_PKG_CONFIG_LIBDIR}}" \ - ${_libtool:+"LIBTOOL=${_libtool}"} \ - ${_makeflags_verbosity} \ - ${_subdir:+-C "${_subdir}"}; _rc="${?}"; - if [ "${#_libtool}" -gt 0 ]; then - unset MAKE; - fi; - if [ "${_rc}" -ne 0 ]; then - return 1; - fi; - done; -}; - -# vim:filetype=sh diff --git a/subr/pkg_build_clean.subr b/subr/pkg_build_clean.subr deleted file mode 100644 index 55dc19c5..00000000 --- a/subr/pkg_build_clean.subr +++ /dev/null @@ -1,33 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_build_clean() { - local _libtool="" _makeflags_verbosity="${PKG_MAKEFLAGS_VERBOSITY:-}" \ - _no_autoconf="" _rc=0 _subdir=""; - - if ex_pkg_state_test "${_pkg_name}" "build" "${_restart_at}"; then - case "${PKG_LIBTOOL:-}" in - "") _libtool=""; ;; - none) _libtool=""; ;; - *) _libtool="${PKG_LIBTOOL}"; ;; - esac; - [ ! -x "${PKG_CONFIGURE:-}" ] && _no_autoconf=1; - - for _subdir in ${PKG_MAKE_SUBDIRS:-:}; do - [ "${_subdir}" = ":" ] && _subdir=""; - [ "${#_libtool}" -gt 0 ] && export MAKE="make LIBTOOL=${_libtool}"; - rtl_run_cmd_unsplit "${PKG_MAKE}" \ - ${PKG_MAKEFLAGS_BUILD:-} \ - ${PKG_MAKEFLAGS_BUILD_EXTRA:-} \ - ${_libtool:+"LIBTOOL=${_libtool}"} \ - ${_makeflags_verbosity} \ - ${_subdir:+-C "${_subdir}"} \ - clean; _rc="${?}"; - [ "${#_libtool}" -gt 0 ] && unset MAKE; - [ "${_rc}" -ne 0 ] && return 1; - done; return 0; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_clean.subr b/subr/pkg_clean.subr deleted file mode 100644 index e8f1899d..00000000 --- a/subr/pkg_clean.subr +++ /dev/null @@ -1,29 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_clean() { - if [ "${PKG_NO_CLEAN:-0}" -eq 0 ]; then - if rtl_lmatch "${ARG_CLEAN_BUILDS}" "build" ","\ - && [ "${PKG_NO_CLEAN_BUILD_DIR:-0}" -eq 0 ]; then - if ! rtl_fileop rm "${PKG_BUILD_DIR}"; then - return 1; - fi; - fi; - if rtl_lmatch "${ARG_CLEAN_BUILDS}" "dest" ","; then - if ! rtl_fileop rm "${PKG_DESTDIR}"; then - return 1; - elif [ -e "${PKG_DESTDIR_HOST}" ]\ - && ! rtl_fileop rm "${PKG_DESTDIR_HOST}"; then - return 1; - fi; - fi; - if rtl_lmatch "${ARG_CLEAN_BUILDS}" "src" ","; then - if ! rtl_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}"; then - return 1; - fi; - fi; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_configure.subr b/subr/pkg_configure.subr deleted file mode 100644 index ea265076..00000000 --- a/subr/pkg_configure.subr +++ /dev/null @@ -1,184 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkgp_configure_autotools() { - local _libtool="" _rc=0; - - if ! [ -x "${PKG_CONFIGURE:-}" ]; then - return 2; - elif [ -d "${PKG_BASE_DIR}/${PKG_SUBDIR}/sofort" ]\ - || [ "${PKG_CONFIGURE_TYPE:-}" = "sofort" ]; then - return 2; - else - case "${PKG_LIBTOOL:-}" in - "") _libtool=""; ;; - none) _libtool=""; ;; - *) _libtool="${PKG_LIBTOOL}"; ;; - esac; - - rtl_export_vars \ - PKG_CONFIG "${PKG_PKG_CONFIG:-}" \ - PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}" \ - PYTHON "${PKG_PYTHON:-}" \ - ${_libtool:+MAKE} ${_libtool:+"make LIBTOOL=${_libtool}"}; - - AR="${PKG_AR}" \ - CC="${PKG_CC}" \ - RANLIB="${PKG_RANLIB}" \ - CFLAGS="${PKG_CFLAGS_CONFIGURE:-}${PKG_CFLAGS_CONFIGURE_EXTRA:+ ${PKG_CFLAGS_CONFIGURE_EXTRA}}" \ - CPPFLAGS="${PKG_CFLAGS_CONFIGURE:-}${PKG_CFLAGS_CONFIGURE_EXTRA:+ ${PKG_CFLAGS_CONFIGURE_EXTRA}}" \ - CXXFLAGS="${PKG_CXXFLAGS_CONFIGURE:-}${PKG_CXXFLAGS_CONFIGURE_EXTRA:+ ${PKG_CXXFLAGS_CONFIGURE_EXTRA}}" \ - LDFLAGS="${PKG_LDFLAGS_CONFIGURE:-}${PKG_LDFLAGS_CONFIGURE_EXTRA:+ ${PKG_LDFLAGS_CONFIGURE_EXTRA}}" \ - "${PKG_CONFIGURE}" ${PKG_CONFIGURE_ARGS:-} ${PKG_CONFIGURE_ARGS_EXTRA:-} ${PKG_CONFIGURE_ARGS_EXTRA_DEBUG:-}; - _rc=$((${?} ? 1 : ${_rc})); - - rtl_export_vars -u \ - PKG_CONFIG "${PKG_PKG_CONFIG:-}" \ - PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}" \ - PYTHON "${PKG_PYTHON:-}" \ - ${_libtool:+MAKE} ${_libtool:+"make LIBTOOL=${_libtool}"}; - return "${_rc}"; - fi; -}; - -pkgp_configure_cmake() { - local _cmake_args_auto"" _build_type="" _IFS0="${IFS:- }" _rc=0 IFS; - - if [ "${PKG_CMAKE_LISTFILE:+1}" != 1 ]\ - || ! [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/${PKG_CMAKE_LISTFILE}" ]; then - _rc=2; - else - rtl_fileop rm config.cache || return 1; - rtl_export_vars \ - PKG_CONFIG "${PKG_PKG_CONFIG:-}" \ - PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}" \ - PYTHON "${PKG_PYTHON:-}"; - - case "${BUILD_KIND}" in - debug) _build_type="debug"; ;; - release|*) _build_type="release"; ;; - esac; - - _cmake_args_auto=" - -DCMAKE_AR=${PKG_AR} - -DCMAKE_BUILD_TYPE=${_build_type} - -DCMAKE_C_COMPILER=${PKG_CC} - -DCMAKE_C_FLAGS=${PKG_CFLAGS_CONFIGURE:-}${PKG_CFLAGS_CONFIGURE_EXTRA:+ ${PKG_CFLAGS_CONFIGURE_EXTRA}} - -DCMAKE_CPP_FLAGS=${PKG_CPPFLAGS_CONFIGURE:-}${PKG_CPPFLAGS_CONFIGURE_EXTRA:+ ${PKG_CPPFLAGS_CONFIGURE_EXTRA}} - -DCMAKE_CXX_COMPILER=${PKG_CXX} - -DCMAKE_CXX_FLAGS=${PKG_CXXFLAGS_CONFIGURE:-}${PKG_CXXFLAGS_CONFIGURE_EXTRA:+ ${PKG_CXXFLAGS_CONFIGURE_EXTRA}} - -DCMAKE_EXE_LINKER_FLAGS=${PKG_LDFLAGS_CONFIGURE:-}${PKG_LDFLAGS_CONFIGURE_EXTRA:+ ${PKG_LDFLAGS_CONFIGURE_EXTRA}} - -DCMAKE_FIND_ROOT_PATH=${PKG_PREFIX} - -DCMAKE_INSTALL_PREFIX= - -DCMAKE_LINKER=$(which "ld") - -DCMAKE_MODULE_LINKER_FLAGS=${PKG_LDFLAGS_CONFIGURE:-}${PKG_LDFLAGS_CONFIGURE_EXTRA:+ ${PKG_LDFLAGS_CONFIGURE_EXTRA}} - -DCMAKE_RANLIB=${PKG_RANLIB} - -DCMAKE_SHARED_LINKER_FLAGS=${PKG_LDFLAGS_CONFIGURE:-}${PKG_LDFLAGS_CONFIGURE_EXTRA:+ ${PKG_LDFLAGS_CONFIGURE_EXTRA}} - -DPKG_CONFIG_EXECUTABLE=${PKG_PKG_CONFIG}" || return 1; - - case "${PKG_BUILD_TYPE}" in - host|cross) - ;; - native) - _cmake_args_auto="${_cmake_args_auto:+${_cmake_args_auto}} - -DCMAKE_LINKER=$(which "${PKG_TARGET}-ld") - -DCMAKE_SYSROOT=${PKG_PREFIX} - -DCMAKE_SYSTEM_NAME=Midipix" || return 1; - - case "${ARCH}" in - nt32) _cmake_args_auto="${_cmake_args_auto:+${_cmake_args_auto}} - -DCMAKE_SYSTEM_PROCESSOR=i686"; ;; - nt64) _cmake_args_auto="${_cmake_args_auto:+${_cmake_args_auto}} - -DCMAKE_SYSTEM_PROCESSOR=x86_64"; ;; - esac; ;; - esac; - - IFS=" - "; "${PKG_CMAKE}" \ - ${_cmake_args_auto} \ - ${PKG_CMAKE_ARGS:-} \ - ${PKG_CMAKE_ARGS_EXTRA:-} \ - "${PKG_BASE_DIR}/${PKG_SUBDIR}"; - _rc=$((${?} ? ${?} : ${_rc})); IFS="${_IFS0}"; - - rtl_export_vars -u \ - PKG_CONFIG "${PKG_PKG_CONFIG:-}" \ - PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}" \ - PYTHON "${PKG_PYTHON:-}"; - fi; - return "${_rc}"; -}; - -pkgp_configure_sofort() { - local _rc=0 _vname="" _vnames="" _vval=""; - - if ! [ -x "${PKG_CONFIGURE:-}" ]; then - return 2; - elif ! [ -d "${PKG_BASE_DIR}/${PKG_SUBDIR}/sofort" ]\ - && ! [ "${PKG_CONFIGURE_TYPE:-}" = "sofort" ]; then - return 2; - else - for _vname in AR CC CXX LD RANLIB; do - if eval [ '"${PKG_'"${_vname}"':+1}"' = 1 ]; then - _vnames="${_vnames:+${_vnames} }${_vname}"; - eval ${_vname}='${PKG_'"${_vname}"'}'; export ${_vname}; - fi; - if eval [ '"${PKG_SOFORT_NATIVE_'"${_vname}"':+1}"' = 1 ]; then - _vnames="${_vnames:+${_vnames} }NATIVE_${_vname}"; - eval NATIVE_${_vname}='${PKG_SOFORT_NATIVE_'"${_vname}"'}'; export NATIVE_${_vname}; - fi; - done; - for _vname in CFLAGS CPPFLAGS CXXFLAGS LDFLAGS; do - if eval [ '"${PKG_'"${_vname}"'_CONFIGURE:+1}"' = 1 ]; then - eval _vval='${PKG_'"${_vname}"'_CONFIGURE}'; - if eval [ '"${PKG_'"${_vname}"'_CONFIGURE_EXTRA:+1}"' = 1 ]; then - eval _vval='${_vval:+${_vval} }${PKG_'"${_vname}"'_CONFIGURE_EXTRA}'; - fi; - _vnames="${_vnames:+${_vnames} }${_vname} ${_vname}_SHARED ${_vname}_STATIC"; - eval ${_vname}='${_vval}'\; ${_vname}_SHARED='${_vval}'\; ${_vname}_STATIC='${_vval}'; - export ${_vname} ${_vname}_SHARED ${_vname}_STATIC; - fi; - if eval [ '"${PKG_SOFORT_NATIVE_'"${_vname}"':+1}"' = 1 ]; then - eval _vval='${PKG_SOFORT_NATIVE_'"${_vname}"'}'; - if eval [ '"${PKG_SOFORT_NATIVE_'"${_vname}"'_EXTRA:+1}"' = 1 ]; then - eval _vval='${_vval:+${_vval} }${PKG_SOFORT_NATIVE_'"${_vname}"'_EXTRA}'; - fi; - _vnames="${_vnames:+${_vnames} }NATIVE_${_vname}"; - eval NATIVE_${_vname}='${_vval}'; export NATIVE_${_vname}; - fi; - done; - - RANLIB="${PKG_RANLIB}" \ - "${PKG_CONFIGURE}" \ - ${PKG_CONFIGURE_ARGS:-} \ - ${PKG_CONFIGURE_ARGS_EXTRA:-} \ - ${PKG_CONFIGURE_ARGS_EXTRA_DEBUG:-}; - _rc=$((${?} ? 1 : ${_rc})); - - for _vname in ${_vnames}; do - unset "${_vname}"; - done; - return "${_rc}"; - fi; -}; - -pkg_configure() { - local _rc=0 _type=""; - - for _type in autotools sofort cmake; do - if [ "${PKG_CONFIGURE_TYPE:+1}" = 1 ]\ - && [ "${PKG_CONFIGURE_TYPE}" != "${_type}" ]; then - continue; - else - pkgp_configure_${_type} "${@}"; _rc="${?}"; - case "${_rc}" in - 0|1) return "${_rc}"; ;; - 2) _rc=0; continue; ;; - esac; - fi; - done; - return "${_rc}"; -}; - -# vim:filetype=sh textwidth=0 diff --git a/subr/pkg_configure_autotools.subr b/subr/pkg_configure_autotools.subr deleted file mode 100644 index 15d76566..00000000 --- a/subr/pkg_configure_autotools.subr +++ /dev/null @@ -1,99 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_configure_autotools() { - local _config_cache="" _config_guest_fname="" _fname="" _subdir_tgt=""; - - if [ "${PKG_CONFIGURE_TYPE:+1}" = 1 ]\ - && [ "${PKG_CONFIGURE_TYPE}" != "autotools" ]; then - return 0; - fi; - - if [ "${PKG_AUTOCONF_CONFIG_GUESS:-midipix}" = "midipix" ]; then - _config_guest_fname="config.guess"; - else - _config_guest_fname=""; - fi; - - if rtl_exists_any "${PKG_BASE_DIR}/${PKG_SUBDIR}" \ - ${_config_guest_fname:+"${_config_guest_fname}"} \ - "configure.ac" "configure.in" "configure"; - then rtl_export_vars PKG_CONFIG "${PKG_PKG_CONFIG:-}" PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}"; - if [ "${PKG_FORCE_AUTORECONF:-0}" -eq 1 ]\ - && ! (cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && autoreconf -fiv); then - return 1; - fi; - if [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure.ac" ]\ - && [ ! -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure" ]; then - for _fname in bootstrap bootstrap.sh autogen.sh; do - if [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/${_fname}" ]; then - for _subdir_tgt in \ - "${PKG_BASE_DIR}/${PKG_SUBDIR}/build-aux" \ - "${PKG_BASE_DIR}/${PKG_SUBDIR}"; - do if [ -e "${_subdir_tgt}" ]; then - if ! rtl_fileop install -m 0700 \ - "${MIDIPIX_BUILD_PWD}/etc/config.sub" \ - "${_subdir_tgt}/config.sub"; then - return 1; - fi; - if [ "${PKG_AUTOCONF_CONFIG_GUESS:-midipix}" = "midipix" ]; then - if ! rtl_fileop install -m 0700 \ - "${MIDIPIX_BUILD_PWD}/etc/config.guess"\ - "${_subdir_tgt}/config.guess"; then - return 1; - else - break; - fi; - fi; - fi; - done; - if ! (rtl_fileop cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && \ - /bin/sh "${_fname}"); then - return 1; - else - break; - fi; - fi; - done; - if ! (rtl_fileop cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && autoconf); then - return 1; - fi; - fi; - for _fname in $(find "${PKG_BASE_DIR}/${PKG_SUBDIR}" -name config.sub); do - if ! rtl_fileop mv "${_fname}" "${_fname}.orig"\ - || ! rtl_fileop install -m 0700 "${MIDIPIX_BUILD_PWD}/etc/config.sub" "${_fname}"; then - return 1; - fi; - done; - if [ "${PKG_AUTOCONF_CONFIG_GUESS:-midipix}" = "midipix" ]; then - for _fname in $(find "${PKG_BASE_DIR}/${PKG_SUBDIR}" -name config.guess); do - if ! rtl_fileop mv "${_fname}" "${_fname}.orig"\ - || ! rtl_fileop install -m 0700 "${MIDIPIX_BUILD_PWD}/etc/config.guess" "${_fname}"; then - return 1; - fi; - done; - fi; - if [ "${PKG_BUILD_TYPE}" != host ]; then - if ! rtl_fileop touch "${PKG_BUILD_DIR}/config.cache"; then - return 1; - else for _config_cache in \ - "${PKG_CONFIG_CACHE:-}" \ - "${PKG_CONFIG_CACHE_LOCAL:-}" \ - "${PKG_CONFIG_CACHE_EXTRA:-}"; - do if [ -n "${_config_cache}" ]\ - && ! printf "%s\n" "${_config_cache}" |\ - tr " " "\n" >> "${PKG_BUILD_DIR}/config.cache"; then - return 1; - fi; - done; - if ! sed -i"" "s,%PREFIX%,${PKG_PREFIX},g" "${PKG_BUILD_DIR}/config.cache"; then - return 1; - fi; - fi; - fi; - rtl_export_vars -u PKG_CONFIG "${PKG_PKG_CONFIG:-}" PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}"; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_configure_clean.subr b/subr/pkg_configure_clean.subr deleted file mode 100644 index 48549a90..00000000 --- a/subr/pkg_configure_clean.subr +++ /dev/null @@ -1,20 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_configure_clean() { - local _group_name="${1}" _pkg_name="${2}" _restart_at="${3}"; - - if ex_pkg_state_test \ - "${_pkg_name}" \ - "configure_patch_pre,configure_autotools,configure_patch,configure" \ - "${_restart_at}"; then - if [ "${PKG_BUILD_DIR:-}" != "${PKG_SUBDIR:-}" ]; then - rtl_fileop rm "${PKG_BUILD_DIR}" || return 1; - rtl_fileop mkdir "${PKG_BUILD_DIR}" || return 1; - rtl_fileop cd "${PKG_BUILD_DIR}" || return 1; - fi; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_configure_patch.subr b/subr/pkg_configure_patch.subr deleted file mode 100644 index d7c84011..00000000 --- a/subr/pkg_configure_patch.subr +++ /dev/null @@ -1,33 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_configure_patch() { - local _patch_cwd="" _patch_dir="${MIDIPIX_BUILD_PWD}/patches" _patch_fname=""\ - _patches_done="" _pkg_name_full="${PKG_NAME}${PKG_VERSION:+-${PKG_VERSION}}"\ - _strip_count=0; - - if [ -n "${PKG_FNAME:-}" ]\ - && [ -n "${PKG_URLS_GIT:-}" ]; then - _patch_cwd="${PKG_BASE_DIR}"; _strip_count=0; - else - _patch_cwd="${PKG_BASE_DIR}/${PKG_SUBDIR}"; _strip_count=1; - fi; - set +o noglob; - for _patch_fname in \ - "${_patch_dir}/${_pkg_name}/"*.patch \ - "${_patch_dir}/${_pkg_name_full}.local.patch" \ - "${_patch_dir}/${_pkg_name_full}.local@${BUILD_HNAME}.patch" \ - ${PKG_PATCHES_EXTRA:-}; do - if [ -r "${_patch_fname}" ]\ - && ! rtl_lmatch "${_patches_done}" "${_patch_fname}"; then - if ! patch -b -d "${_patch_cwd}" "-p${_strip_count}" < "${_patch_fname}"; then - set -o noglob; return 1; - else - _patches_done="$(rtl_lconcat "${_patches_done}" "${_patch_fname}")"; - fi; - fi; - done; set -o noglob; -}; - -# vim:filetype=sh diff --git a/subr/pkg_configure_patch_pre.subr b/subr/pkg_configure_patch_pre.subr deleted file mode 100644 index c78b65b2..00000000 --- a/subr/pkg_configure_patch_pre.subr +++ /dev/null @@ -1,38 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkgp_configure_patch_pre() { - local _patch_path=""; - for _patch_path in \ - "${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}${PKG_VERSION:+-${PKG_VERSION}}_pre.local.patch" \ - "${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}${PKG_VERSION:+-${PKG_VERSION}}_pre.local@${BUILD_HNAME}.patch"; do - if [ -r "${_patch_path}" ]\ - && ! patch -b -d "${PKG_BASE_DIR}/${PKG_SUBDIR}" -p1 < "${_patch_path}"; then - return 1; - fi; - done; -}; - -pkgp_configure_patch_pre_chainport() { - local _chainport_patch_dname="" _chainport_patch_fname="" _oldpwd=""; - _chainport_patch_dname="${PKG_BASE_DIR}/${PKG_SUBDIR}/patches/${PKG_NAME%%_*}"; - if [ -n "${PKG_VERSION:-}" ]; then - _chainport_patch_fname="${BUILD_WORKDIR}/chainport/patches/${PKG_NAME%%_*}/${PKG_NAME%%_*}-${PKG_VERSION}.midipix.patch"; - fi; - if [ -e "${_chainport_patch_fname}" ]; then - if ! rtl_fileop mkdir "${_chainport_patch_dname}"\ - || ! rtl_fileop cp "${_chainport_patch_fname}" "${_chainport_patch_dname}"; then - return 1; - fi; - fi; -}; - -pkg_configure_patch_pre() { - if ! pkgp_configure_patch_pre_chainport\ - || ! pkgp_configure_patch_pre; then - return 1; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_fetch_clean.subr b/subr/pkg_fetch_clean.subr deleted file mode 100644 index 52797068..00000000 --- a/subr/pkg_fetch_clean.subr +++ /dev/null @@ -1,21 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_fetch_clean() { - local _dname=""; - - if [ -n "${PKG_URLS_GIT:-}" ]; then - if [ -n "${PKG_SUBDIR:-}" ]\ - && [ "${PKG_SUBDIR}" != "${PKG_URLS_GIT%%=*}" ]; then - rtl_fileop rm "${PKG_SUBDIR}"; - fi; - for _dname in ${PKG_URLS_GIT}; do - _dname="${_dname%%=*}"; rtl_fileop rm "${_dname}"; - done; - elif [ -n "${PKG_SUBDIR}" ]; then - rtl_fileop rm "${PKG_SUBDIR}"; - fi; return 0; -}; - -# vim:filetype=sh diff --git a/subr/pkg_fetch_download.subr b/subr/pkg_fetch_download.subr deleted file mode 100644 index 7a333947..00000000 --- a/subr/pkg_fetch_download.subr +++ /dev/null @@ -1,67 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_fetch_download_clean_dlcache() { - local _dlcachedir="${1}" _pkg_name="${2}" _pkg_fname="${3}" _pkg_urls_git="${4}"\ - _fname="" _skipfl=0 _url_spec="" _url_subdir=""; - - for _fname in $(cd "${_dlcachedir}/${_pkg_name}" 2>/dev/null && find \ - -maxdepth 1 \ - -mindepth 1 \ - ${_pkg_fname:+-not -name "${_pkg_fname}"} \ - ${_pkg_fname:+-not -name "${_pkg_fname}.fetched"}); do - _fname="${_fname#./}"; _skipfl=0; - for _url_spec in ${_pkg_urls_git}; do - _url_subdir="${_url_spec%%=*}"; _url_subdir="${_url_subdir##*/}"; - if [ "${_fname%.git}" = "${_url_subdir}" ]; then - _skipfl=1; break; - fi; - done; - if [ "${_skipfl}" -eq 0 ]; then - _fname="${_dlcachedir}/${_pkg_name}/${_fname}"; - rtl_log_msg "verbose" "${MSG_rtl_fetch_rm_redundant}" "${_fname}" "${_pkg_name}"; - rtl_fileop rm "${_fname}"; - fi; - done; -}; - -pkg_fetch_download_dlcache_subdir() { - if [ -n "${PKG_INHERIT_FROM:-}" ]\ - && ! [ -e "${BUILD_DLCACHEDIR}/${PKG_NAME}" ]\ - && ! rtl_fileop ln_symbolic "${PKG_INHERIT_FROM}" "${BUILD_DLCACHEDIR}/${PKG_NAME}"; then - return 1; - elif [ -z "${PKG_INHERIT_FROM:-}" ]\ - && ! [ -e "${BUILD_DLCACHEDIR}/${PKG_NAME}" ]\ - && ! rtl_fileop mkdir "${BUILD_DLCACHEDIR}/${PKG_NAME}"; then - return 1; - else - return 0; - fi; -}; - -pkg_fetch_download() { - if [ "${ARG_FETCH_FORCE:-}" != "offline" ]; then - if [ -n "${PKG_URL:-}" ]; then - if ! pkg_fetch_download_dlcache_subdir; then - return 1; - elif ! rtl_fetch_url_wget \ - "${PKG_URL}" "${PKG_SHA256SUM}" "${BUILD_DLCACHEDIR}/${PKG_NAME}"\ - "${PKG_FNAME}" "${PKG_NAME}" "${PKG_MIRRORS:-}"; then - return 1; - fi; - fi; - if [ -n "${PKG_URLS_GIT:-}" ]; then - if ! pkg_fetch_download_dlcache_subdir; then - return 1; - elif ! rtl_fetch_urls_git \ - "${BUILD_DLCACHEDIR}/${PKG_NAME}" "${DEFAULT_GIT_ARGS}" "${PKG_BASE_DIR}"\ - "${PKG_NAME}" "${PKG_MIRRORS_GIT:-}" ${PKG_URLS_GIT}; then - return 1; - fi; - fi; - pkg_fetch_download_clean_dlcache "${BUILD_DLCACHEDIR}" "${PKG_NAME}" "${PKG_FNAME:-}" "${PKG_URLS_GIT:-}"; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_fetch_extract.subr b/subr/pkg_fetch_extract.subr deleted file mode 100644 index b86c490a..00000000 --- a/subr/pkg_fetch_extract.subr +++ /dev/null @@ -1,37 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkgp_fetch_extract_type() { - local _fname="${1}"; - if [ "${1##*.tar.}" != "${1}" ]; then - printf "%s" "${1##*.tar.}"; - elif [ "${1##*.t}" != "${1}" ]; then - printf "%s" "${1##*.t}"; - fi; -}; - -pkg_fetch_extract() { - if [ -n "${PKG_URL:-}" ]; then - _oldpwd="${PWD}"; - if ! rtl_fileop cd "${PKG_BASE_DIR}"\ - || ! rtl_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}"; then - rtl_fileop cd "${_oldpwd}"; return 1; - else - case "$(pkgp_fetch_extract_type "${PKG_NAME}")" in - bz2) bunzip2 -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;; - gz) gunzip -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;; - lz) lzip -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;; - xz) xz -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;; - *) tar -C "${PKG_BASE_DIR}" -xf "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}"; ;; - esac; - if [ "${?}" -ne 0 ]; then - rtl_fileop cd "${_oldpwd}"; return 1; - else - rtl_fileop cd "${_oldpwd}"; - fi; - fi; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_install.subr b/subr/pkg_install.subr deleted file mode 100644 index e6e2497e..00000000 --- a/subr/pkg_install.subr +++ /dev/null @@ -1,35 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_install() { - local _destdir="" _destdir_prefix="" _pkglist_name=""; - if ! rtl_fileop mkdir "${PKG_PREFIX}"; then - return 1; - else for _destdir in "${PKG_DESTDIR}:${PKG_PREFIX}" "${PKG_DESTDIR_HOST}:${PREFIX}"; do - rtl_lassign "_destdir _destdir_prefix" ":" "${_destdir}"; - if [ -e "${_destdir}" ]; then - (set +o errexit -o noglob; rtl_flock_acquire 4 || exit "${?}"; - trap "rm -f \"${BUILD_WORKDIR}/install.lock\"" EXIT; - if ! tar -C "${_destdir}" -cpf - . | tar -C "${_destdir_prefix}" --overwrite -xpf -; then - exit 1; - fi) 4<>"${BUILD_WORKDIR}/install.lock"; - fi; - done; - if [ "${?}" -ne 0 ]; then - return 1; - elif [ "${PKG_PKGLIST_DISABLE:-0}" -eq 0 ]; then - if [ ! -e "${PREFIX}/pkglist.${PKG_BUILD_TYPE}" ]\ - && ! touch "${PREFIX}/pkglist.${PKG_BUILD_TYPE}"; then - return 1; - else - _pkglist_name="${PKG_BASE_DIR##*/}"; _pkglist_name="${_pkglist_name%%-*}"; - if ! printf "%s\n" "${_pkglist_name}" >> "${PREFIX}/pkglist.${PKG_BUILD_TYPE}"; then - return 1; - fi; - fi; - fi; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_install_clean.subr b/subr/pkg_install_clean.subr deleted file mode 100644 index 3d99f321..00000000 --- a/subr/pkg_install_clean.subr +++ /dev/null @@ -1,12 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_install_clean() { - if [ -n "${PKG_DESTDIR:-}" ]; then - rtl_fileop rm "${PKG_DESTDIR}" || return 1; - rtl_fileop mkdir "${PKG_DESTDIR}" || return 1; - fi; return 0; -}; - -# vim:filetype=sh diff --git a/subr/pkg_install_files.subr b/subr/pkg_install_files.subr deleted file mode 100644 index 0cd03e43..00000000 --- a/subr/pkg_install_files.subr +++ /dev/null @@ -1,115 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkgp_install_files() { - if [ -n "${PKG_INSTALL_FILES:-}" ]; then - if ! rtl_install -v "${PKG_DESTDIR}" ${PKG_INSTALL_FILES}; then - return 1; - fi; - fi; -}; - -pkgp_install_files_v2() { - local _vflag=""; _status=""; - - if [ -n "${PKG_INSTALL_FILES_V2:-}" ]; then - if rtl_lmatch "${ARG_VERBOSE_TAGS}" "install" ","; then - _vflag="-v"; - fi; - if ! rtl_install_v2 \ - -p "_builddir=${PKG_BUILD_DIR}" \ - -p "_destdir=${PKG_BASE_DIR}/${PKG_DESTDIR}" \ - -p "_destdir_host=${PKG_BASE_DIR}/${PKG_DESTDIR_HOST}" \ - -p "_files=${MIDIPIX_BUILD_PWD}/files/${PKG_NAME}" \ - -p "_name=${PKG_NAME}" \ - -p "_prefix=${PKG_PREFIX}" \ - -p "_prefix_host=${PREFIX}" \ - -p "_prefix_native=${PREFIX_NATIVE}" \ - -p "_subdir=${PKG_BASE_DIR}/${PKG_SUBDIR}" \ - -p "_target=${PKG_TARGET}" \ - -p "_version=${PKG_VERSION:-}" \ - -p "_workdir=${BUILD_WORKDIR}" \ - ${_vflag} -- "${PKG_DESTDIR}" \ - "${PKG_INSTALL_FILES_V2}"; then - return 1; - fi; - fi; -}; - -pkgp_install_files_perms() { - local _destdir="" _fname="" IFS; - for _destdir in "${PKG_DESTDIR}" "${PKG_DESTDIR_HOST}"; do - if [ -e "${_destdir}" ]; then - rtl_set_IFS_nl; - for _fname in $(find "${_destdir}" -type d); do - if ! rtl_fileop chmod 0755 "${_fname}"; then - return 1; - fi; - done; - for _fname in $(find "${_destdir}" \( -not -perm /0111 \) -type f); do - if ! rtl_fileop chmod 0644 "${_fname}"; then - return 1; - fi; - done; - for _fname in $(find "${_destdir}" -perm /0111 -type f); do - if ! rtl_fileop chmod 0755 "${_fname}"; then - return 1; - fi; - done; - fi; - done; -}; - -pkgp_install_files_pkgconfig() { - local _pc_path=""; - for _pc_path in $(find "${PKG_DESTDIR}" -name \*.pc); do - if [ -n "$(sed -ne '/^libdir=[^$]*$/p' "${_pc_path}")" ] \ - && ! sed -i"" -e '/^libdir=[^$]*$/s/^libdir=\(.*\)$/libdir=${exec_prefix}\1/' \ - -e '/^exec_prefix=$/s/^.*$/exec_prefix=${prefix}/' \ - "${_pc_path}"; then - return 1; - fi; - if [ -n "$(sed -ne '/^includedir=[^$]*$/p' "${_pc_path}")" ] \ - && ! sed -i"" -e '/^includedir=[^$]*$/s/^includedir=\(.*\)$/includedir=${prefix}\1/' \ - "${_pc_path}"; then - return 1; - fi; - done; -}; - -pkgp_install_files_strip() { - local _bin_path="" _stripfl=0 _tree_root="${PKG_DESTDIR}"; - if [ -e "${_tree_root}" ]; then - if rtl_match "${PKG_NAME}" "*_minipix"; then - : $((_stripfl=(${ARG_DEBUG_MINIPIX:-0} ? 0 : 1))); - elif [ "${BUILD_KIND}" = release ]\ - && [ "${PKG_BUILD_TYPE}" = native ]; then - _stripfl=1; - else - _stripfl=0; - fi; - if [ "${_stripfl:-0}" -eq 1 ]; then - for _bin_path in $(find "${_tree_root}" -perm /a=x -type f); do - if objdump -sj .debug_frame -j .debug_info "${_bin_path}" >/dev/null 2>&1; then - rtl_log_msg "pkg_strip" "${MSG_pkg_strip}" "${_bin_path}"; - if ! "${PKG_TARGET}-strip" "${_bin_path}"; then - return 1; - fi; - fi; - done; - fi; - fi; -}; - -pkg_install_files() { - if ! pkgp_install_files\ - || ! pkgp_install_files_v2\ - || ! pkgp_install_files_perms\ - || ! pkgp_install_files_pkgconfig\ - || ! pkgp_install_files_strip; then - return 1; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_install_libs.subr b/subr/pkg_install_libs.subr deleted file mode 100644 index 3dcc0ac2..00000000 --- a/subr/pkg_install_libs.subr +++ /dev/null @@ -1,66 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkgp_install_libs_purge_la() { - local _la_path=""; - for _la_path in $(find "${PKG_DESTDIR}" -type f -name \*.la); do - if ! rtl_fileop rm "${_la_path}"; then - return 1; - fi; - done; -}; - -pkgp_install_libs_shared_link() { - local _lib_name="${1}" _so_dir="${2}" _so_path="${3}" _lib_link_path="${3%.so*}.lib.a" _lib_link_tgt=""; - if _lib_link_tgt="$(find "${_so_dir}" -name "${_lib_name%%.*}.*.lib.a" | sort | tail -1)"\ - && [ -n "${_lib_link_tgt}" ]\ - && [ "${_lib_link_tgt}" != "${_lib_link_path}" ]; then - if ! rtl_fileop rm "${_lib_link_path}"\ - || ! rtl_fileop ln_symbolic "$(rtl_basename "${_lib_link_tgt}")" "${_lib_link_path}"; then - return 1; - fi; - fi; -}; - -pkgp_install_libs_shared() { - local _lib_dst_path="" _lib_name="" _lib_src_path="" _so_dst_dir="" _so_src_path=""; - if [ "${PKG_BUILD_TYPE}" != "host" ]; then - for _so_src_path in \ - $(find "${PKG_DESTDIR}" \ - \( -name "*.so" -or -name "*.so.*" \) -print); - do if [ "$(readlink -f "${_so_src_path}")" != "/dev/null" ]\ - && [ -z "$(rtl_head "[0-9.]" "${_so_src_path##*.so}")" ]; then - case "${_so_src_path}" in - *.so) _lib_src_path="${_so_src_path%%.so}.lib.a"; ;; - *.so.*) _lib_src_path="${_so_src_path%%.so.*}.${_so_src_path##*.so.}.lib.a"; ;; - esac; - _so_dst_dir="${_so_src_path%/*}"; - _lib_name="$(rtl_basename "${_lib_src_path}")"; - _lib_dst_path="${_so_dst_dir}/${_lib_name}"; - if [ ! -L "${_lib_src_path}" ]\ - && [ ! -e "${_lib_dst_path}" ]; then - if ! (rtl_fileop cd "$(rtl_dirname "${_so_src_path}")" && \ - perk -e "$(rtl_basename "${_so_src_path}")" |\ - "${PKG_TARGET}-mdso" \ - -i "$(rtl_basename "${_lib_dst_path}")" \ - -n "$(rtl_basename "${_so_src_path}")" -); then - return 1; - fi; - fi; - if ! pkgp_install_libs_shared_link "${_lib_name}" "${_so_dst_dir}" "${_so_src_path}"; then - return 1; - fi; - fi; - done; - fi; -}; - -pkg_install_libs() { - if ! pkgp_install_libs_purge_la\ - || ! pkgp_install_libs_shared; then - return 1; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_install_make.subr b/subr/pkg_install_make.subr deleted file mode 100644 index f7ac4640..00000000 --- a/subr/pkg_install_make.subr +++ /dev/null @@ -1,37 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_install_make() { - local _libtool="" _rc=0 _subdir=""; - case "${PKG_LIBTOOL:-}" in - "") _libtool=""; ;; - none) _libtool=""; ;; - *) _libtool="${PKG_LIBTOOL}"; ;; - esac; - for _subdir in ${PKG_MAKE_SUBDIRS:-:}; do - if [ "${_subdir}" = ":" ]; then - _subdir=""; - fi; - if [ "${#_libtool}" -gt 0 ]; then - export MAKE="make LIBTOOL=${_libtool}"; - fi; - rtl_run_cmd_unsplit "${PKG_MAKE}" \ - ${PKG_MAKEFLAGS_INSTALL:-} \ - ${PKG_MAKEFLAGS_INSTALL_EXTRA:-} \ - AR="${PKG_AR}" CC="${PKG_CC}" RANLIB="${PKG_RANLIB}" \ - "${PKG_RANLIB_INSTALL:+RANLIB=${PKG_RANLIB_INSTALL}}" \ - ${_libtool:+"LIBTOOL=${_libtool}"} \ - "${PKG_MAKE_INSTALL_VNAME:-DESTDIR}=${PKG_DESTDIR}/" \ - ${PKG_INSTALL_TARGET:-install} \ - ${_subdir:+-C "${_subdir}"}; _rc="${?}"; - if [ "${#_libtool}" -gt 0 ]; then - unset MAKE; - fi; - if [ "${_rc}" -ne 0 ]; then - return 1; - fi; - done; -}; - -# vim:filetype=sh diff --git a/subr/pkg_install_rpm.subr b/subr/pkg_install_rpm.subr deleted file mode 100644 index 776034b2..00000000 --- a/subr/pkg_install_rpm.subr +++ /dev/null @@ -1,52 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_install_rpm() { - local _pkg_url="" _pkg_version_full="" _pkg_version_rpm="" _rc=0; - if rtl_lmatch "${ARG_DIST}" "rpm" ","\ - && [ "${PKG_RPM_DISABLE:-0}" -eq 0 ]\ - && [ -x "$(which rpmbuild 2>/dev/null)" ]; then - if [ -n "${PKG_URL:-}" ]; then - _pkg_url="${PKG_URL%% *}"; _pkg_version_full="${PKG_VERSION}"; _pkg_version_rpm="${PKG_VERSION%%-*}"; - elif [ -n "${PKG_URLS_GIT:-}" ]; then - _pkg_version_rpm="$(cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && git rev-parse HEAD)"; - _pkg_version_full="${_pkg_version_rpm} ($(cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && git rev-parse --abbrev-ref HEAD))"; - _pkg_url="${PKG_URLS_GIT%% *}"; _pkg_url="${_pkg_url##*=}"; _pkg_url="${_pkg_url%%@*}"; - if [ "${_pkg_url#${DEFAULT_GITROOT_HEAD}}" != "${_pkg_url}" ]; then - _pkg_url="Unknown"; - fi; - fi; - if ! rtl_fileop cp "${MIDIPIX_BUILD_PWD}/etc/package.spec" \ - "${PKG_BASE_DIR}/${PKG_NAME}-${_pkg_version_rpm}.spec"; then - return 1; - else while true; do - rpmbuild \ - -bb \ - --define="_tmppath ${BUILD_WORKDIR}" \ - --define="_topdir ${PREFIX_RPM}/${PKG_NAME}-${_pkg_version_rpm}" \ - --define="pkg_destdir ${PKG_DESTDIR}" \ - --define="pkg_name ${PKG_NAME}" \ - --define="pkg_url ${_pkg_url}" \ - --define="pkg_version_full ${_pkg_version_full}" \ - --define="pkg_version_rpm ${_pkg_version_rpm}" \ - --nodeps "${PKG_BASE_DIR}/${PKG_NAME}-${_pkg_version_rpm}.spec"; _rc="${?}"; - if [ "${_rc}" -eq 0 ]; then - break; - elif [ "${_rc}" -eq 141 ]; then - continue; - else - return "${_rc}"; - fi; - done; - if ! find "${PREFIX_RPM}/${PKG_NAME}-${_pkg_version_rpm}/RPMS" \ - -iname \*.rpm -exec cp -pP {} "${PREFIX_RPM}/" \; \ - || ! rtl_fileop rm "${PREFIX_RPM}/${PKG_NAME}-${_pkg_version_rpm}" \ - || ! rtl_fileop cp "${PKG_BASE_DIR}/${PKG_NAME}-${_pkg_version_rpm}.spec" "${PREFIX_RPM}/"; then - return 1; - fi; - fi; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_install_subdirs.subr b/subr/pkg_install_subdirs.subr deleted file mode 100644 index c9e4cd39..00000000 --- a/subr/pkg_install_subdirs.subr +++ /dev/null @@ -1,21 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkg_install_subdirs() { - local _spec=""; - for _spec in \ - "${PKG_INSTALL_FILES_DESTDIR:-}" \ - "${PKG_INSTALL_FILES_DESTDIR_EXTRA:-}"; do - if ! rtl_install "${PKG_DESTDIR}" ${_spec}; then - return 1; - fi; - done; - if [ "${PKG_PREFIX%/}" = "${PREFIX_NATIVE%/}" ]; then - if ! rtl_install "${PKG_DESTDIR}/${DEFAULT_TARGET}" ${PKG_INSTALL_FILES_DESTDIR}; then - return 1; - fi; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkgtool_init.subr b/subr/pkgtool_init.subr deleted file mode 100644 index 9d77d8d9..00000000 --- a/subr/pkgtool_init.subr +++ /dev/null @@ -1,153 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -pkgtoolp_init_args() { - local _rc=0; _status=""; - if [ "$((${ARG_INFO:-0} + ${ARG_MIRROR:-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, -m and/or -M, -r, -s, or -t must be specified."; - elif [ "$((${ARG_INFO:-0} + ${ARG_MIRROR:-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, -m and/or -M, -r, -s, or -t must be specified."; - elif [ "${BUILD_HNAME:+1}" != 1 ]\ - && ! BUILD_HNAME="$(hostname)"; then - _rc=1; _status="failed to obtain hostname."; - else _rc=0; export TMP="${BUILD_WORKDIR}" TMPDIR="${BUILD_WORKDIR}"; - fi; return "${_rc}"; -}; - -pkgtoolp_init_env() { - local _fname="" _lang="${LANG:-C}" _name="" _rc=0; _status=""; _lang="${_lang%%_*}"; - - 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.rtl -name *.subr) \ - $(find subr -name *.subr) \ - etc/pkgtool.theme \ - ; - do - if ! . "${_fname}"; then - printf "Error: failed to source \`%s'.\n" "${_fname}" >&2; exit 1; - fi; - done; - if [ -e "etc/pkgtool.theme.local" ]; then - if ! . "etc/pkgtool.theme.local"; then - printf "Error: failed to source \`%s'.\n" "etc/pkgtool.theme.local" >&2; exit 1; - fi; - fi; - for _name in pkgtool rtl; do - for _lang_ in ${_lang} C; do - _fname="etc/${_name}.msgs.${_lang_}"; - if [ -e "${_fname}" ]; then - if ! . "${_fname}"; then - printf "Error: failed to source \`%s'.\n" "${_fname}" >&2; exit 1; - fi; - if [ -e "${_fname}.local" ]; then - if ! . "${_fname}.local"; then - printf "Error: failed to source \`%s'.\n" "${_fname}.local" >&2; exit 1; - fi; - fi; break; - fi; - done; - done; - - fi; export LANG=C LC_ALL=C; return "${_rc}"; -}; - -pkgtoolp_init_getopts() { - local _opt="" _shiftfl=0 _rc=0 OPTIND=0; _status=""; : ${ARCH:="nt64"}; : ${BUILD_KIND:="debug"}; - ARG_INFO=0; ARG_MIRROR=0; ARG_MIRROR_DNAME=""; ARG_MIRROR_DNAME_GIT=""; ARG_RESTART_AT=""; - ARG_RDEPENDS=0; ARG_UPDATE_DIFF=0; ARG_SHELL=0; ARG_TARBALL=0; ARG_VERBOSE=0; - while [ "${#}" -gt 0 ]; do - case "${1}" in - --update-diff) - ARG_UPDATE_DIFF=1; _shiftfl=1; ;; - --restart-at) - if [ "${#}" -lt 2 ]\ - || [ -z "${2}" ]; then - _rc=1; _status="Error: missing argument for option --restart-at."; - else - ARG_RESTART_AT="${2}"; _shiftfl=2; - fi; ;; - *) _shiftfl=0; ;; - esac; - if [ "${_rc:-0}" -ne 0 ]; then - break; - elif [ "${_shiftfl:-0}" -gt 0 ]; then - shift "${_shiftfl}"; continue; - elif getopts a:b:him:M:rstv _opt; then - case "${_opt}" in - a) ARCH="${OPTARG}"; ;; - b) BUILD_KIND="${OPTARG}"; ;; - h) cat etc/pkgtool.usage; exit 0; ;; - i) ARG_INFO=1; ;; - m) ARG_MIRROR=1; ARG_MIRROR_DNAME="${OPTARG}"; ;; - M) ARG_MIRROR=1; ARG_MIRROR_DNAME_GIT="${OPTARG}"; ;; - r) ARG_RDEPENDS=1; ;; - s) ARG_SHELL=1; ;; - t) ARG_TARBALL=1; ;; - v) ARG_VERBOSE=1; ;; - *) cat etc/pkgtool.usage; exit 1; ;; - esac; shift $((${OPTIND}-1)); OPTIND=1; - else case "${1}" in - *=*) rtl_set_var_unsafe "${1%%=*}" "${1#*=}"; ;; - *) PKGTOOL_PKG_NAME="${1}"; ;; - esac; shift; - fi; - done; - if [ "${_rc}" -eq 0 ]; then - if [ -z "${PKGTOOL_PKG_NAME:-}" ]\ - && [ "${ARG_MIRROR:-0}" -eq 0 ]; then - _rc=1; _status="Error: missing package name."; - else export PKGTOOL_PKG_NAME; - case "${ARG_VERBOSE:-0}" in - 0) rtl_log_enable_tags "${LOG_TAGS_normal}"; ;; - 1) rtl_log_enable_tags "${LOG_TAGS_verbose}"; ;; - *) _rc=1; _status="Error: invalid verbosity level (max. -v)"; ;; - esac; - fi; - fi; return "${_rc}"; -}; - -pkgtoolp_init_getopts_help() { - local _opt=""; - while getopts a:b:hirst _opt 2>/dev/null; do - case "${_opt}" in - h) - if [ -t 1 ]; then - cat etc/pkgtool.usage; - else - sed 's/\[[0-9]\+m//g' etc/pkgtool.usage; - fi; exit 0; ;; - esac; done; shift $((${OPTIND}-1)); -}; - -pkgtoolp_init_prereqs() { - if ! rtl_check_prereqs \ - awk bzip2 cat chmod cp date find grep hostname mkdir \ - mktemp mv paste printf readlink rm sed sort tar test \ - touch tr uniq; then - printf "%s\n" "${_status}" >&2; exit 1; - elif ! (FNAME="$(mktemp)" && { trap "rm -f \"\${FNAME}\"" EXIT; \ - sed -i'' -e '' "${FNAME}" >/dev/null 2>&1; }); then - printf "Error: sed(1) in \${PATH} does not support the \`-i' option.\n" >&2; exit 1; - fi; -}; - -pkgtool_init() { - local _fname="" _rc=0; _status=""; - if ! pkgtoolp_init_env \ - || ! pkgtoolp_init_getopts_help "${@}" \ - || ! pkgtoolp_init_prereqs \ - || ! pkgtoolp_init_getopts "${@}" \ - || ! ex_pkg_load_vars \ - || ! pkgtoolp_init_args; then - _rc=1; _status="${_status}"; - fi; return "${_rc}"; -}; - -# vim:filetype=sh -- cgit v1.2.3