diff options
Diffstat (limited to 'build.subr')
-rw-r--r-- | build.subr | 69 |
1 files changed, 39 insertions, 30 deletions
@@ -1,8 +1,12 @@ +# +# set -o errexit is assumed. +# + TIMESTAMP_FMT="${TIMESTAMP_FMT:-"%Y/%m/%d %H:%M:%S"}"; check_prereqs() { for _cmd in "$@"; do - if ! command -v "${_cmd}" >/dev/null; then + if ! command -v ${_cmd} >/dev/null; then log_msg fail "Error: missing prerequisite command \`${_cmd}"; exit 1; fi; @@ -14,25 +18,30 @@ date() { }; fetch() { - wget --no-check-certificate -N "${1}"; - if [ $# -eq 2 ]\ - && ! printf "${2} ${1##*/}\n" | sha256sum -c --status; then - log_msg fail "Error: sha256sum mismatch for URL \`${1##*/}'."; + wget --no-check-certificate -N ${1}; + if [ $# -eq 2 ] && ! compare_hash ${1##*/} ${2}; then + log_msg fail "Error: hash mismatch for URL \`${1##*/}'."; exit 1; fi; }; fetch_git() { - if [ -d "${1}" ]; then - (cd "${1}" && git pull origin main); + if [ -d ${1} ]; then + (cd ${1} && git pull origin main); else - git clone "${2}" "${1}"; + git clone ${2} ${1}; fi; }; +compare_hash() { + _hash_cmp=${2}; set -- $(openssl dgst -sha256 ${1}); + shift $((${#}-1)); set -- ${1} ${_hash_cmp}; unset _hash_cmp; + [ "x${1}" = "x${2}" ]; +}; + is_build_script_done() { - _script_fname="${SCRIPT_FNAME##*/}"; - if [ -f "${WORKDIR}/.${_script_fname%.build}.${1}" ]; then + _script_fname=${SCRIPT_FNAME##*/}; + if [ -f ${WORKDIR}/.${_script_fname%.build}.${1} ]; then unset script_fname; return 0; else @@ -41,13 +50,13 @@ is_build_script_done() { fi; }; set_build_script_done() { - _script_fname="${SCRIPT_FNAME##*/}"; - _done_fname="${WORKDIR}/.${_script_fname%.build}"; + _script_fname=${SCRIPT_FNAME##*/}; + _done_fname=${WORKDIR}/.${_script_fname%.build}; while [ $# -ge 1 ]; do if [ "x${1#-}" != "x${1}" ]; then - rm -f "${_done_fname}.${1#-}"; + rm -f ${_done_fname}.${1#-}; else - touch "${_done_fname}.${1}"; + touch ${_done_fname}.${1}; log_msg info "Finished build step ${1} of build script \`${_script_fname}'."; fi; shift; done; @@ -55,8 +64,8 @@ set_build_script_done() { }; log_msg() { - _lvl="${1}"; shift; - case "${_lvl}" in + _lvl=${1}; shift; + case ${_lvl} in fail) printf "\033[91m"; ;; info) printf "\033[97m"; ;; succ) printf "\033[92m"; ;; @@ -70,17 +79,17 @@ log_msg() { }; parse_with_pkg_name() { - _pkg_name="${1}"; shift; + _pkg_name=${1}; shift; while [ $# -ge 0 ]; do - _pkg_url="${1}"; _envvs="${2}"; _pkg_fname="${_pkg_url##*/}"; + _pkg_url=${1}; _envvs="${2}"; _pkg_fname=${_pkg_url##*/}; if [ "x${_pkg_fname%%-*}" = "x${_pkg_name}" ]; then _IFS="${IFS}"; IFS=:; for _envv in ${_envvs}; do export ${_envv}; done; IFS="${_IFS}"; unset _envvs _envv; - _pkg_subdir="${_pkg_fname%%.tar*}"; - eval _pkg_sha256sum=\""\${PKG_$(echo "${_pkg_name}" |\ - tr a-z A-Z)_SHA256SUM}"\"; + _pkg_subdir=${_pkg_fname%%.tar*}; + eval _pkg_sha256sum=\${PKG_$(echo "${_pkg_name}" |\ + tr a-z A-Z)_SHA256SUM}; return; fi; shift 2; done; @@ -90,30 +99,30 @@ parse_with_pkg_name() { rm_if_exists() { while [ $# -gt 1 ]; do [ "x${1%[a-z]}" = "x-" ] &&\ eval _${1#-}flag=1; shift; done; - _dir="${1}"; - if [ -d "${1}" ]; then - rm -rf "${1}" || return 1; + _dir=${1}; + if [ -d ${1} ]; then + rm -rf ${1} || return 1; fi; if [ ${_mflag:-0} -eq 1 ]; then - unset _mflag; mkdir "${1}" || return 2; + unset _mflag; mkdir ${1} || return 2; fi; if [ ${_cflag:-0} -eq 1 ]; then - unset _cflag; cd "${1}" || return 3; + unset _cflag; cd ${1} || return 3; fi; }; run_configure_with_extra_args() { - _IFS="${IFS}"; IFS=","; _script="${1}"; _extra_args="${2}"; - shift 2; "${_script}" "${@}" ${_extra_args}; IFS="${_IFS}"; + _IFS="${IFS}"; IFS=","; _script=${1}; _extra_args="${2}"; + shift 2; ${_script} "${@}" ${_extra_args}; IFS="${_IFS}"; unset _script _extra_args; }; set_build_dir() { - export _build_dir="${1}-build-${2}"; + export _build_dir=${1}-build-${2}; }; set_env_vars() { - _val="${1}"; shift; + _val=${1}; shift; while [ $# -ge 1 ]; do export "${1}=${_val}"; shift; done; unset _val; |