[[ -n "$LIBMAKEPKG_EXECUTABLE_VCS_SH" ]] && return
LIBMAKEPKG_EXECUTABLE_VCS_SH=1
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
source "$MAKEPKG_LIBRARY/util/error.sh"
source "$MAKEPKG_LIBRARY/util/message.sh"
executable_functions+=('executable_vcs')
get_vcsclient() {
local proto=${1%%+*}
local i
for i in "${VCSCLIENTS[@]}"; do
local handler="${i%%::*}"
if [[ $proto = "$handler" ]]; then
local client="${i##*::}"
break
fi
done
if [[ -z $client ]]; then
error "$(gettext "Unknown download protocol: %s")" "$proto"
plainerr "$(gettext "Aborting...")"
exit $E_CONFIG_ERROR
fi
printf "%s\n" "$client"
}
executable_vcs() {
local netfile all_sources all_deps deps ret=0
if (( SOURCEONLY == 1 )); then
return $ret
fi
if [[ -z $PACMAN_PATH ]]; then
warning "$(gettext "Cannot find the %s binary needed to check VCS source requirements.")" "$PACMAN"
return $ret
fi
for attr in depends makedepends; do
get_pkgbuild_attribute "$pkg" "$attr" 1 'deps'
all_deps+=("${deps[@]}")
get_pkgbuild_attribute "$pkg" "${attr}_$CARCH" 1 'deps'
all_deps+=("${deps[@]}")
done
get_all_sources_for_arch 'all_sources'
for netfile in ${all_sources[@]}; do
local proto=$(get_protocol "$netfile")
case $proto in
bzr*|fossil*|git*|hg*|svn*)
if ! type -p ${proto%%+*} > /dev/null; then
local client
client=$(get_vcsclient "$proto") || exit $?
local uninstalled
uninstalled=$(check_deps "$client") || exit $E_INSTALL_DEPS_FAILED
if [[ -n "$uninstalled" ]] && (( ! NODEPS || ( VERIFYSOURCE && !DEP_BIN ) )); then
if ! in_array "$client" ${all_deps[@]}; then
error "$(gettext "Cannot find the %s package needed to handle %s sources.")" \
"$client" "${proto%%+*}"
ret=1
fi
fi
fi
;;
*)
;;
esac
done
return $ret
}