2011-11-01 15:33:08 +01:00
|
|
|
# Avoid any encoding problems
|
|
|
|
export LANG=C
|
|
|
|
|
|
|
|
# check if messages are to be printed using color
|
|
|
|
unset ALL_OFF BOLD BLUE GREEN RED YELLOW
|
|
|
|
if [[ -t 2 ]]; then
|
|
|
|
# prefer terminal safe colored and bold text when tput is supported
|
|
|
|
if tput setaf 0 &>/dev/null; then
|
|
|
|
ALL_OFF="$(tput sgr0)"
|
|
|
|
BOLD="$(tput bold)"
|
|
|
|
BLUE="${BOLD}$(tput setaf 4)"
|
|
|
|
GREEN="${BOLD}$(tput setaf 2)"
|
|
|
|
RED="${BOLD}$(tput setaf 1)"
|
|
|
|
YELLOW="${BOLD}$(tput setaf 3)"
|
|
|
|
else
|
|
|
|
ALL_OFF="\e[1;0m"
|
|
|
|
BOLD="\e[1;1m"
|
|
|
|
BLUE="${BOLD}\e[1;34m"
|
|
|
|
GREEN="${BOLD}\e[1;32m"
|
|
|
|
RED="${BOLD}\e[1;31m"
|
|
|
|
YELLOW="${BOLD}\e[1;33m"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
readonly ALL_OFF BOLD BLUE GREEN RED YELLOW
|
|
|
|
|
|
|
|
plain() {
|
|
|
|
local mesg=$1; shift
|
|
|
|
printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
|
|
|
|
}
|
|
|
|
|
|
|
|
msg() {
|
|
|
|
local mesg=$1; shift
|
|
|
|
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
|
|
|
|
}
|
|
|
|
|
|
|
|
msg2() {
|
|
|
|
local mesg=$1; shift
|
|
|
|
printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
|
|
|
|
}
|
|
|
|
|
|
|
|
warning() {
|
|
|
|
local mesg=$1; shift
|
|
|
|
printf "${YELLOW}==> WARNING:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
|
|
|
|
}
|
|
|
|
|
|
|
|
error() {
|
|
|
|
local mesg=$1; shift
|
|
|
|
printf "${RED}==> ERROR:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
|
|
|
|
}
|
|
|
|
|
|
|
|
stat_busy() {
|
|
|
|
local mesg=$1; shift
|
|
|
|
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}...${ALL_OFF}" >&2
|
|
|
|
}
|
|
|
|
|
|
|
|
stat_done() {
|
|
|
|
printf "${BOLD}done${ALL_OFF}\n" >&2
|
|
|
|
}
|
|
|
|
|
|
|
|
setup_workdir() {
|
2011-11-02 21:51:09 +01:00
|
|
|
[[ -z $WORKDIR ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX")
|
2011-11-01 15:33:08 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
cleanup() {
|
2011-11-02 21:51:08 +01:00
|
|
|
[[ -n $WORKDIR ]] && rm -rf "$WORKDIR"
|
|
|
|
[[ $1 ]] && exit $1
|
2011-11-01 15:33:08 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
abort() {
|
|
|
|
msg 'Aborting...'
|
|
|
|
cleanup 0
|
|
|
|
}
|
|
|
|
|
2012-10-03 12:35:40 +02:00
|
|
|
trap_abort() {
|
|
|
|
trap - EXIT INT QUIT TERM HUP
|
|
|
|
abort
|
|
|
|
}
|
|
|
|
|
|
|
|
trap_exit() {
|
|
|
|
trap - EXIT INT QUIT TERM HUP
|
|
|
|
cleanup 0
|
|
|
|
}
|
|
|
|
|
2011-11-01 15:33:08 +01:00
|
|
|
die() {
|
|
|
|
error "$*"
|
|
|
|
cleanup 1
|
|
|
|
}
|
|
|
|
|
2012-10-03 12:35:40 +02:00
|
|
|
trap 'trap_abort' INT QUIT TERM HUP
|
|
|
|
trap 'trap_exit' EXIT
|
2011-11-01 15:33:08 +01:00
|
|
|
|
|
|
|
##
|
|
|
|
# usage : in_array( $needle, $haystack )
|
|
|
|
# return : 0 - found
|
|
|
|
# 1 - not found
|
|
|
|
##
|
|
|
|
in_array() {
|
|
|
|
local needle=$1; shift
|
|
|
|
local item
|
|
|
|
for item in "$@"; do
|
|
|
|
[[ $item = $needle ]] && return 0 # Found
|
|
|
|
done
|
|
|
|
return 1 # Not Found
|
|
|
|
}
|
|
|
|
|
|
|
|
##
|
|
|
|
# usage : get_full_version( [$pkgname] )
|
|
|
|
# return : full version spec, including epoch (if necessary), pkgver, pkgrel
|
|
|
|
##
|
|
|
|
get_full_version() {
|
|
|
|
# set defaults if they weren't specified in buildfile
|
|
|
|
pkgbase=${pkgbase:-${pkgname[0]}}
|
|
|
|
epoch=${epoch:-0}
|
|
|
|
if [[ -z $1 ]]; then
|
|
|
|
if [[ $epoch ]] && (( ! $epoch )); then
|
|
|
|
echo $pkgver-$pkgrel
|
|
|
|
else
|
|
|
|
echo $epoch:$pkgver-$pkgrel
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
for i in pkgver pkgrel epoch; do
|
|
|
|
local indirect="${i}_override"
|
|
|
|
eval $(declare -f package_$1 | sed -n "s/\(^[[:space:]]*$i=\)/${i}_override=/p")
|
|
|
|
[[ -z ${!indirect} ]] && eval ${indirect}=\"${!i}\"
|
|
|
|
done
|
|
|
|
if (( ! $epoch_override )); then
|
|
|
|
echo $pkgver_override-$pkgrel_override
|
|
|
|
else
|
|
|
|
echo $epoch_override:$pkgver_override-$pkgrel_override
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|